# Created: 20000707 (from UserExtra.pl)
#
-if (&IsParam("useStrict")) { use strict; }
+use strict;
+
+use vars qw(%users %ignore %sched %bans %mask %cache %channels %param
+ %chanconf %dcc);
+use vars qw($who $chan $message $msgType $user $chnick $conn $ident
+ $verifyUser $ucount_userfile $utime_userfile $lobotomized
+ $utime_chanfile $ucount_chanfile);
+use vars qw(@backlog);
sub userDCC {
# hrm...
return;
}
+ # dump variables ][.
+ if ($message =~ /^symdump$/i) {
+ return unless (&hasFlag("o"));
+ return unless (&IsParam("symdump"));
+
+ &status("Dumping all variables...");
+ &symdumpAllFile();
+
+ return;
+ }
+
# kick.
if ($message =~ /^kick(\s+(\S+)(\s+(\S+))?)?/) {
return unless (&hasFlag("o"));
return;
}
- ### TODO: fix up $op to support mysql/pgsql/dbm(perl)
+ ### TODO: fix up $op to support mysql/sqlite/pgsql/dbm(perl)
### TODO: => add db/sql specific function to fix this.
my @list = &searchTable("factoids", "factoid_key",
"factoid_value", $op);
}
&status("jumping servers... $server...");
- &rawout("QUIT :jumping to $server");
+ $conn->quit("jumping to $server");
if (&irc($server,$port) == 0) {
&ircloop();
&msg($who,"resetting...");
my @done;
foreach ( keys %channels, keys %chanconf ) {
- next if (grep /^\Q$_\E$/i, @done);
+ my $c = $_;
+ next if (grep /^\Q$c\E$/i, @done);
&part($_);
push(@done, $_);
sleep 1;
}
+ &DEBUG("before clearircvars");
&clearIRCVars();
+ &DEBUG("before joinnextchan");
&joinNextChan();
+ &DEBUG("after joinnextchan");
&status("USER reset $who");
&msg($who,"resetted");
return;
}
+ $cache{confvars}{$what} = $val;
+ &rehashConfVars();
+
foreach (@chans) {
&chanSet($cmd, $_, $what, $val);
}
$chanconf{$_}{$args} = $val;
}
delete $chanconf{_default}{$args};
+ $cache{confvars}{$args} = 0;
+ &rehashConfVars();
return;
}
&DEBUG("delete chanconf{$_}{$args};");
delete $chanconf{$_}{$args};
}
+ $cache{confvars}{$args} = 0;
+ &rehashConfVars();
return;
}
return;
}
+ my $chflag;
my $user;
if ($args[0] =~ /^$mask{nick}$/i) { # <nick>
$user = &getUser($args[0]);
$user = &getUser($args[0]);
$mask = $args[1];
} else { # <mask>
- # who or verifyUser. FIXME!!!
+ # who or verifyUser. FIXME (don't remember why)
$user = &getUser($who);
$mask = $args[0];
}
&unban($mask, $_);
}
- if ($c) {
+ if (@c) {
&pSReply("Removed $mask from chans: @c");
} else {
&pSReply("$mask was not found in ban list.");
if ($message =~ /^banlist(\s+(.*))?$/) {
my $arg = $2;
- if (defined $arg and $arg !~ /^$mask_chan$/) {
+ if (defined $arg and $arg !~ /^$mask{chan}$/) {
&pSReply("error: chan $chan is invalid.");
return;
}
if ($state) { # adduser.
if (scalar @args == 1) {
$args[1] = &getHostMask($args[0]);
- if (!defined $args[1]) {
- &ERROR("could not get hostmask?");
- return;
- }
+ &pSReply("Attemping to guess $args[0]'s hostmask...");
+
+ # crude hack... crappy Net::IRC
+ $conn->schedule(5, sub {
+ # hopefully this is right.
+ my $nick = (keys %{ $cache{nuhInfo} })[0];
+ if (!defined $nick) {
+ &pSReply("couldn't get nuhinfo... adding user without a hostmask.");
+ &userAdd($nick);
+ return;
+ }
+
+ my $mask = &makeHostMask( $cache{nuhInfo}{$nick}{NUH} );
+
+ if ( &userAdd($nick, $mask) ) { # success.
+ &pSReply("Added $nick with flags $users{$nick}{FLAGS}");
+ my @hosts = keys %{ $users{$nick}{HOSTS} };
+ &pSReply("hosts: @hosts");
+ }
+});
+ return;
}
+ &DEBUG("args => @args");
if ( &userAdd(@args) ) { # success.
- &pSReply("Added $args[0]...");
+ &pSReply("Added $args[0] with flags $users{$args[0]}{FLAGS}");
+ my @hosts = keys %{ $users{$args[0]}{HOSTS} };
+ &pSReply("hosts: @hosts");
} else { # failure.
&pSReply("User $args[0] already exists");
return;
}
+ # quite a cool hack: reply in DCC CHAT.
+ $msgType = "chat";
+
+ my $done = 0;
+ $done++ if &parseCmdHook("main", $message);
+ $done++ if &parseCmdHook("extra", $message);
+ $done++ unless (&Modules());
+
+ if ($done) {
+ &DEBUG("running non DCC CHAT command inside DCC CHAT!");
+ return;
+ }
+
return "REPLY";
}