- remove some FIXME
authorAndreas Scherbaum <andreas@scherbaum.biz>
Thu, 16 Aug 2012 14:06:51 +0000 (16:06 +0200)
committerAndreas Scherbaum <andreas@scherbaum.biz>
Thu, 16 Aug 2012 14:06:51 +0000 (16:06 +0200)
- verify channel configuration

docbot.pl

index 64d1c01d464402769f3a44912bc9bbcc6b4e17e2..5329e61d92d9282e5ba6f0d241ee6da09f6359f4 100755 (executable)
--- a/docbot.pl
+++ b/docbot.pl
@@ -669,6 +669,7 @@ sub validate_config {
     my @sessions = config_get_keys1('sessions');
     my %seen_nicknames = ();
     my %seen_sessions = ();
+    my %channels_for_session = ();
     foreach my $session (@sessions) {
         if ($session !~ /^\d+$/) {
             die("Session name ($session) must be numeric!\n");
@@ -677,16 +678,29 @@ sub validate_config {
         if (defined($seen_nicknames{$nickname}) and $seen_nicknames{$nickname} == 1) {
             die("Please use different nicknames for each session!\n");
         }
-        if ($nickname !~ /^[a-zA-Z0-9_\-]+/) {
+        if ($nickname !~ /^[a-zA-Z0-9_\-]+$/) {
             die("Please use a different nickname: $nickname\n");
         }
         $seen_nicknames{$nickname} = 1;
         $seen_sessions{$session} = 1;
+        $channels_for_session{$session} = 0;
     }
 
-# FIXME: check nick for each session
-# FIXME: check if sessions per channel really exist in session definition
-# FIXME: check maximum number of channels
+    my @channels = config_get_keys1('channels');
+    foreach my $channel (@channels) {
+        my $channel_session = config_get_key3('channels', $channel, 'session');
+        # cannot use session_for_channel() here, because sessions are not yet initialized
+        if (!defined($channel_session) or $channel_session !~ /^\d+$/) {
+            die("Session ($channel_session) for channel '$channel' is invalid\n");
+        }
+        if (!defined($seen_sessions{$channel_session}) or $seen_sessions{$channel_session} != 1) {
+            die("Unknown session ($channel_session) for channel '$channel'\n");
+        }
+        $channels_for_session{$channel_session}++;
+        if ($channels_for_session{$channel_session} > 20) {
+            die("More than 20 channels for session '$channel_session' configured, please change\n");
+        }
+    }
 
     print_msg("Configuration validated", DEBUG);
 }