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.
###
}
my $er = &Modules();
- if (!defined $er or $er ne $noreply) {
- &performStrictReply($er);
+ if (!defined $er) {
return 'SOMETHING 1';
}