X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fcore.pl;h=ecbcee5f7c9388019e495797b910f66a920bc9fc;hb=1926520ab4d05a779e2b66ef0a4272861186783f;hp=f42fb2be3d91bb3514148b1d77c0090768a679c9;hpb=82dfb173fbd8cb380af630839f04d63389684262;p=infobot.git diff --git a/src/core.pl b/src/core.pl index f42fb2b..ecbcee5 100644 --- a/src/core.pl +++ b/src/core.pl @@ -27,15 +27,15 @@ use vars qw( ); # array. -use vars qw(@joinchan @ircServers @wingateBad @wingateNow @wingateCache +use vars qw(@ircServers @wingateBad @wingateNow @wingateCache ); ### hash. MUST BE REDUCED IN SIZE!!! -# +# use vars qw(%count %netsplit %netsplitservers %flood %dcc %orig %nuh %talkWho %seen %floodwarn %param %dbh %ircPort %topic %moduleAge %last %time %mask %file - %forked %chanconf %channels + %forked %chanconf %channels %cache ); # Signals. @@ -78,11 +78,10 @@ $nottime = 0; $notsize = 0; $notcount = 0; ### +$bot_release = "1.3.3"; if ( -d "CVS" ) { use POSIX qw(strftime); - $bot_release = strftime("cvs (%Y%m%d)", gmtime( (stat("CVS"))[9] ) ); -} else { - $bot_release = "1.0.10 (2001xxxx)"; + $bot_release .= strftime(" cvs (%Y%m%d)", gmtime( (stat("CVS"))[9] ) ); } $bot_version = "blootbot $bot_release -- $^O"; $noreply = "NOREPLY"; @@ -128,10 +127,14 @@ sub doExit { } &writeUserFile(); &writeChanFile(); - &uptimeWriteFile() if (&IsChanConf("uptime")); + &uptimeWriteFile() if (&IsParam('Uptime')); &sqlCloseDB(); &closeSHM($shm); - &dumpallvars() if (&IsParam("dumpvarsAtExit")); + + if (&IsParam("dumpvarsAtExit")) { + &loadMyModule('DumpVars'); + &dumpallvars(); + } &symdumpAll() if (&IsParam("symdumpAtExit")); &closeLog(); &closeSQLDebug() if (&IsParam("SQLDebug")); @@ -194,8 +197,8 @@ sub getChanConfList { foreach (keys %chanconf) { my $chan = $_; -# &DEBUG("chan => $chan"); my @array = grep /^$param$/, keys %{ $chanconf{$chan} }; + #&DEBUG("gCCL param => $param, chan => $chan, keys => " . join(':',keys %{ $chanconf{$chan} }) . " array => " . join(':', @array)) if ($param eq 'whatever'); next unless (scalar @array); @@ -203,7 +206,7 @@ sub getChanConfList { &WARN("multiple items found?"); } - if ($array[0] eq "0") { + if ($chanconf{$chan}{$param} eq "0") { $chan{$chan} = -1; } else { $chan{$chan} = 1; @@ -219,21 +222,23 @@ sub getChanConfList { # Return: 1 for enabled, 0 for passive disable, -1 for active disable. sub IsChanConf { my($param) = shift; - my $debug = 0; # knocked tons of bugs with this! :) + + # knocked tons of bugs with this! :) + my $debug = 0; # 1 if ($param eq "whatever"); if (!defined $param) { &WARN("IsChanConf: param == NULL."); return 0; } - # should we use IsParam() externally where needed or hack it in - # here just in case? fix it later. + # these should get moved to your .chan file instead of the .config + # .config items overide any .chan entries if (&IsParam($param)) { - &DEBUG("ICC: found '$param' option in main config file."); + &WARN("ICC: found '$param' option in main config file."); return 1; } - $chan ||= "_default"; + $chan ||= "_default"; my $old = $chan; if ($chan =~ tr/A-Z/a-z/) { @@ -251,9 +256,11 @@ sub IsChanConf { } ### debug purposes only. -# &DEBUG("param => $param, msgType => $msgType."); -# foreach (keys %chan) { -# &DEBUG(" $_ => $chan{$_}"); +# if ($debug) { +# &DEBUG("param => $param, msgType => $msgType."); +# foreach (keys %chan) { +# &DEBUG(" $_ => $chan{$_}"); +# } # } if ($nomatch) { @@ -264,31 +271,15 @@ sub IsChanConf { } else { &DEBUG("ICC: other: 0 ($param)") if ($debug); } - return $chan{$chan} || $chan{_default} || 0; - } - - if ($msgType eq "public") { + } elsif ($msgType =~ /^(public|private)$/i) { if ($chan{$chan}) { - &DEBUG("ICC: public: $chan{$chan} ($chan/$param)") if ($debug); + &DEBUG("ICC: $msgType: $chan{$chan} ($chan/$param)") if ($debug); } elsif ($chan{_default}) { - &DEBUG("ICC: public: $chan{_default} (_default/$param)") if ($debug); + &DEBUG("ICC: $msgType: $chan{_default} (_default/$param)") if ($debug); } else { - &DEBUG("ICC: public: 0 ($param)") if ($debug); + &DEBUG("ICC: $msgType: 0 ($param)") if ($debug); } - - return $chan{$chan} || $chan{_default} || 0; - } - - if ($msgType eq "private") { - if ($chan{_default}) { - &DEBUG("ICC: private: $chan{_default} (_default/$param)") if ($debug); - } elsif ($chan{$chan}) { - &DEBUG("ICC: private: $chan{$chan} ($chan/$param) (hack)") if ($debug); - } else { - &DEBUG("ICC: private: 0 ($param)") if ($debug); - } - return $chan{$chan} || $chan{_default} || 0; } @@ -309,30 +300,33 @@ sub getChanConf { return 0; } - # this looks evil... + # this looks evil... if (0 and !defined $chan) { &DEBUG("gCC: ok !chan... doing _default instead."); } $c ||= $chan; $c ||= "_default"; - $c = "_default" if ($c eq "*"); # fix! + $c = "_default" if ($c eq "*"); # FIXME my @c = grep /^\Q$c\E$/i, keys %chanconf; if (@c) { if (0 and $c[0] ne $c) { &WARN("c ne chan ($c[0] ne $chan)"); } + if (!defined $chanconf{$c[0]}{$param} and ($c ne '_default')) { + return &getChanConf($param, '_default'); + } + #&DEBUG("gCC: $param,$c \"" . $chanconf{$c[0]}{$param} . '"'); return $chanconf{$c[0]}{$param}; } -# &DEBUG("gCC: returning _default... "); + #&DEBUG("gCC: returning _default... " . $chanconf{"_default"}{$param}); return $chanconf{"_default"}{$param}; } sub getChanConfDefault { my($what, $default, $chan) = @_; - $chan ||= "_default"; if (exists $param{$what}) { @@ -447,12 +441,12 @@ sub setup { &checkTables(); &status("Setup: ". &countKeys("factoids") ." factoids."); - &getChanConfDefault("sendPrivateLimitLines", 3); - &getChanConfDefault("sendPrivateLimitBytes", 1000); - &getChanConfDefault("sendPublicLimitLines", 3); - &getChanConfDefault("sendPublicLimitBytes", 1000); - &getChanConfDefault("sendNoticeLimitLines", 3); - &getChanConfDefault("sendNoticeLimitBytes", 1000); + &getChanConfDefault("sendPrivateLimitLines", 3, $chan); + &getChanConfDefault("sendPrivateLimitBytes", 1000, $chan); + &getChanConfDefault("sendPublicLimitLines", 3, $chan); + &getChanConfDefault("sendPublicLimitBytes", 1000, $chan); + &getChanConfDefault("sendNoticeLimitLines", 3, $chan); + &getChanConfDefault("sendNoticeLimitBytes", 1000, $chan); $param{tempDir} =~ s#\~/#$ENV{HOME}/#; @@ -492,7 +486,7 @@ sub setupConfig { sub startup { if (&IsParam("DEBUG")) { &status("enabling debug diagnostics."); - ### I thought disabling this reduced memory usage by 1000 KiB. + # I thought disabling this reduced memory usage by 1000 KiB. use diagnostics; } @@ -507,7 +501,8 @@ sub shutdown { # reverse order of &setup(). &status("--- shutdown called."); - $ident ||= "blootbot"; # hack. + # hack. + $ident ||= "blootbot"; if (!&isFileUpdated("$bot_state_dir/blootbot.users", $wtime_userfile)) { &writeUserFile() @@ -518,7 +513,8 @@ sub shutdown { } &sqlCloseDB(); - &closeSHM($shm); # aswell. TODO: use this in &doExit? + # aswell. TODO: use this in &doExit? + &closeSHM($shm); &closeLog(); }