From: Andreas Scherbaum Date: Thu, 16 Aug 2012 14:06:51 +0000 (+0200) Subject: - remove some FIXME X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=59ba7a35f0eedf1b676bd2579c718af2e9de5903;p=docbot.git - remove some FIXME - verify channel configuration --- diff --git a/docbot.pl b/docbot.pl index 64d1c01..5329e61 100755 --- 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); }