]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Process.pl
now use pass auth for 'identify'.
[infobot.git] / src / Process.pl
index 3fd7aa9c34791278efe511da3f1f479860ebd06f..d699c234d06e387062a110a508ae09f226d024e4 100644 (file)
@@ -107,6 +107,48 @@ sub process {
        return if ($retval eq $noreply);
     }
 
+    # 'identify'
+    if ($msgType =~ /private/ and $message =~ s/^identify//) {
+       $message =~ s/^\s+|\s+$//g;
+       my @array = split / /, $message;
+
+       if ($who =~ /^_default$/i) {
+           &pSReply("you are too eleet.");
+           return;
+       }
+
+       if (!scalar @array or scalar @array > 2) {
+           &help("identify");
+           return;
+       }
+
+       my $do_nick = $array[1] || $who;
+
+       if (!exists $users{$do_nick}) {
+           &pSReply("nick $do_nick is not in user list.");
+           return;
+       }
+
+       my $crypt = $users{$do_nick}{PASS};
+       if (!defined $crypt) {
+           &pSReply("user $do_nick has no passwd set.");
+           return;
+       }
+
+       if (!&ckpass($array[0], $crypt)) {
+           &pSReply("invalid passwd for $do_nick.");
+           return;
+       }
+
+       my $mask = "*!$user@".&makeHostMask($host);
+       ### TODO: prevent adding multiple dupe masks?
+       ### TODO: make &addHostMask() CMD?
+       &pSReply("Added $mask for $do_nick...");
+       $users{$do_nick}{HOSTS}{$mask} = 1;
+
+       return;
+    }
+
     ###
     # once useless messages have been parsed out, we match them.
     ###
@@ -219,8 +261,7 @@ sub process {
        }
 
        my $er = &Modules();
-       if (!defined $er or $er ne $noreply) {
-           &performStrictReply($er);
+       if (!defined $er) {
            return 'SOMETHING 1';
        }