]> git.donarmstrong.com Git - infobot.git/commitdiff
- $nuh{} fix up.
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sat, 3 Feb 2001 14:03:28 +0000 (14:03 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Sat, 3 Feb 2001 14:03:28 +0000 (14:03 +0000)
- created on_dcc_open_chat for whois reply to get nuh.
- getRandomInt - allow decimal.

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

src/IRC/Irc.pl
src/IRC/IrcHooks.pl
src/Misc.pl

index a6f49c69893dc24ed0c191cf290ee4d1c4112be2..ff275c792cd326ad84444e8d54daafc8eb5265bd 100644 (file)
@@ -654,9 +654,12 @@ sub closeDCC {
     foreach $type (keys %dcc) {
        next if ($type ne uc($type));
  
-       foreach (keys %{$dcc{$type}}) {
-           &DEBUG("closing DCC $type to $_ (FIXME).");
-           $dcc{$type}{$_}->close();
+       foreach $nick (keys %{$dcc{$type}}) {
+           next unless (defined $nick);
+           &DEBUG("closing DCC $type to $nick (FIXME).");
+           next unless (defined $dcc{$type}{$nick});
+
+           $dcc{$type}{$nick}->close();
        }
     }
 }
index a1b710f2ad9887232caee0c2a85149d36c63f6cc..dd09af7acae4f0a9f9873ab1074b494d581dc8df 100644 (file)
@@ -67,7 +67,7 @@ sub on_chat {
        ### TODO: prevent users without CRYPT chatting.
        if (!defined $crypto) {
            &DEBUG("chat: no pass required.");
-           $success++;
+###        $success++;
 
        } elsif (&ckpasswd($msg, $crypto)) {
            # stolen from eggdrop.
@@ -102,10 +102,6 @@ sub on_chat {
        return;
     }
 
-### REMOVE IF OK.
-#    &DEBUG("IrcHooks.pl: line 104: userHandle => $userHandle");
-#    $userHandle = &verifyUser($who, $nuh);
-
     &status("$b_red=$b_cyan$who$b_red=$ob $message");
 
     if ($message =~ s/^\.//) { # dcc chat commands.
@@ -176,6 +172,7 @@ sub on_dcc {
 
     # pity Net::IRC doesn't store nuh. Here's a hack :)
     $self->whois($nick);
+    $nuh{lc $nick}     = "GETTING-NOW";        # trying.
     $type ||= "???";
 
     if ($type eq 'SEND') {     # GET for us.
@@ -233,49 +230,67 @@ sub on_dcc_open {
     my $type = uc( ($event->args)[0] );
     my $nick = $event->nick();
     my $sock = ($event->to)[0];
-    $msgType = 'chat';
 
+    $msgType = 'chat';
     $type ||= "???";
+    ### BUG: who is set to bot's nick?
 
+    # lets do it.
     if ($type eq 'SEND') {
-
        &status("${b_green}DCC lGET$ob established with $b_cyan$nick$ob");
 
     } elsif ($type eq 'CHAT') {
-
-       &status("${b_green}DCC CHAT$ob established with $b_cyan$nick$ob $b_yellow($ob$nuh{$nick}$b_yellow)$ob");
-
-       &verifyUser($nick, $nuh{lc $nick});
-
-       if (!exists $users{$userHandle}{HOSTS}) {
-           &pSReply("you have no hosts defined in my user file; rejecting.");
-           ### TODO: $sock->close();
-           return;
-       }
-
-       my $crypto      = $users{$userHandle}{PASS};
-       $dcc{'CHAT'}{$nick} = $sock;
-       foreach (keys %{ $users{$userHandle} }) {
-           &VERB("   $_ => $users{$userHandle}{$_}",2);
-       }
-
-       if (defined $crypto) {
-###        &dccsay($nick,"Enter your password, $userHandle.");
-           &dccsay($nick,"Enter your password.");
+       # very cheap hack.
+       ### TODO: run ScheduleThis inside on_dcc_open_chat recursively
+       ###     1,3,5,10 seconds then fail.
+       if ($nuh{$nick} eq "GETTING-NOW") {
+           &ScheduleThis(3/60, "on_dcc_open_chat", $nick, $sock);
        } else {
-           &dccsay($nick,"Welcome to blootbot DCC CHAT interface, $userHandle.");
+           on_dcc_open_chat(undef, $nick, $sock);
        }
 
     } elsif ($type eq 'SEND') {
-
        &DEBUG("Starting DCC receive.");
        foreach ($event->args) {
            &DEBUG("  => '$_'.");
        }
 
     } else {
-
        &WARN("${b_green}DCC $type$ob (3)");
+
+    }
+}
+
+# really custom sub to get NUH since Net::IRC doesn't appear to support
+# it.
+sub on_dcc_open_chat {
+    my(undef, $nick,$sock) = @_;
+
+    if ($nuh{$nick} =~ /^(\S+)(\d+)$/) {
+       my $i = $2;
+       $i++;
+       $nuh{$nick} = $1.$i;
+       &DEBUG("getting nuh for $nick failed. FIXME.");
+       return;
+    }
+
+    &status("${b_green}DCC CHAT$ob established with $b_cyan$nick$ob $b_yellow($ob$nuh{$nick}$b_yellow)$ob");
+
+    &verifyUser($nick, $nuh{lc $nick});
+
+    if (!exists $users{$userHandle}{HOSTS}) {
+       &pSReply("you have no hosts defined in my user file; rejecting.");
+       ### TODO: $sock->close();
+       return;
+    }
+
+    my $crypto = $users{$userHandle}{PASS};
+    $dcc{'CHAT'}{$nick} = $sock;
+
+    if (defined $crypto) {
+       &dccsay($nick,"Enter your password.");
+    } else {
+       &dccsay($nick,"Welcome to blootbot DCC CHAT interface, $userHandle.");
     }
 }
 
@@ -863,6 +878,8 @@ sub on_whoisuser {
     my ($self, $event) = @_;
     my @args   = $event->args;
 
+    &DEBUG("on_whoisuser: @args");
+
     $nuh{lc $args[1]} = $args[1]."!".$args[2]."\@".$args[3];
 }
 
index 76dc9b75038fc8e5bf1b4c92357caea6134bcf60..43c3f2ab1e263627e7b262e31eb9ac5dc93b3003 100644 (file)
@@ -358,7 +358,7 @@ sub getRandomInt {
 
     srand();
 
-    if ($str =~ /^(\d+)$/) {
+    if ($str =~ /^(\d+(\.\d+)?)$/) {
        my $i = $1;
        my $fuzzy = int(rand 5);
        if ($i < 10) {