]> git.donarmstrong.com Git - infobot.git/commitdiff
hookMode: change chan to nick. if deopped by chanserv, check it
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sat, 28 Apr 2001 14:04:44 +0000 (14:04 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sat, 28 Apr 2001 14:04:44 +0000 (14:04 +0000)
dont change channel limits during netsplit.

git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@466 c11ca15a-4712-0410-83d8-924469b57eb5

src/IRC/IrcHelpers.pl
src/IRC/IrcHooks.pl
src/IRC/Schedulers.pl

index 9d654f90e9c63d36274f186e0436354fe06451c8..9e4c1cd37a28def394baa4611401be6c9a3580e9 100644 (file)
@@ -13,12 +13,14 @@ if (&IsParam("useStrict")) { use strict; }
 #######################################################################
 
 #####
-# Usage: &hookMode($chan, $modes, @targets);
+# Usage: &hookMode($nick, $modes, @targets);
 sub hookMode {
-    my ($chan, $modes, @targets) = @_;
+    my ($nick, $modes, @targets) = @_;
     my $parity = 0;
 
-    $chan = lc $chan;          # !!!.
+    if ($chan =~ tr/A-Z/a-z/) {
+       &VERB("hookMode: cased $chan.",2);
+    }
 
     my $mode;
     foreach $mode (split(//, $modes)) {
@@ -43,6 +45,11 @@ sub hookMode {
 
            # modes w/ target affecting nick => cache it.
            if ($mode =~ /[bov]/) {
+               if ($mode eq "o" and $nick eq "ChanServ" and $target =~ /^\Q$ident$\E/i) {
+                   &DEBUG("hookmode: chanserv deopped us! asking");
+                   &chanServCheck($chan);
+               }
+
                $channels{$chan}{$mode}{$target}++      if  $parity;
                delete $channels{$chan}{$mode}{$target} if !$parity;
            }
@@ -254,6 +261,11 @@ sub chanLimitVerify {
     my($chan)  = @_;
     my $l      = $channels{$chan}{'l'};
 
+    if (scalar keys %netsplitservers) {
+       &WARN("clV: netsplit active (1); skipping. (netsplit => $netsplit)");
+       return;
+    }
+
     # only change it if it's not set.
     if (defined $l and &IsChanConf("chanlimitcheck")) {
        my $plus  = &getChanConfDefault("chanlimitcheckPlus", 5, $chan);
index feac0db1e1c6479e4c20a0a7b59a75a43b59985b..facce2956494632472da5795192316ac62195f14 100644 (file)
@@ -548,9 +548,9 @@ sub on_kick {
 sub on_mode {
     my ($self, $event) = @_;
     my ($user, $host)  = split(/\@/, $event->userhost);
-    my @args = $event->args();
-    my $nick = $event->nick();
-    my $chan = ($event->to)[0];
+    my @args   = $event->args();
+    my $nick   = $event->nick();
+    $chan      = ($event->to)[0];
 
     $args[0] =~ s/\s$//;
 
@@ -558,16 +558,17 @@ sub on_mode {
        &status(">>> mode $b_yellow\[$ob$b@args$b_yellow\]$ob by $b_cyan$nick$ob");
     } else {                   # MODE
        &status(">>> mode/$b_blue$chan$ob $b_yellow\[$ob$b@args$b_yellow\]$ob by $b_cyan$nick$ob");
-       &hookMode($chan, @args);
+       &hookMode($nick, @args);
     }
 }
 
 sub on_modeis {
     my ($self, $event) = @_;
     my $nick = $event->nick();
-    my ($myself,$chan,@args) = $event->args();
+    my ($myself, undef,@args) = $event->args();
+    $chan      = ($event->args())[1];
 
-    &hookMode(lc $chan, @args);                # CASING.
+    &hookMode($nick, @args);
 }
 
 sub on_msg {
@@ -959,6 +960,7 @@ sub on_crversion {
     } elsif ($ver =~ /epic/i) {
        $ver{epic}{$nick}       = $ver;
     } elsif ($ver =~ /mirc/i) {
+       &DEBUG("verstats: mirc: $nick => '$ver'.");
        $ver{mirc}{$nick}       = $ver;
     } elsif ($ver =~ /ircle/i) {
        $ver{ircle}{$nick}      = $ver;
@@ -973,6 +975,7 @@ sub on_crversion {
     } elsif ($ver =~ /xircon/i) {
        $ver{xircon}{$nick}     = $ver;
     } else {
+       &DEBUG("verstats: other: $nick => '$ver'.");
        $ver{other}{$nick}      = $ver;
     }
 }
index 0412f853799c5dd222dcdbca8076ea6488c270d2..d82c9eb63efdca5bbc7d3c6eae4235f1a4d8e9a7 100644 (file)
@@ -352,6 +352,11 @@ sub chanlimitCheck {
        delete $sched{"chanlimitCheck"}{RUNNING};
     }
 
+    if (scalar keys %netsplitservers) {
+       &WARN("clC: netsplit active (2); skipping. (netsplit => $netsplit)");
+       return;
+    }
+
     foreach $chan ( &ChanConfList("chanlimitcheck") ) {
        next unless (&validChan($chan));