# do ircII clients support remote close? if so, cool!
&status("userDCC: quit called. FIXME");
&dcc_close($who);
- &status("hrmm....");
+ &status("userDCC: after dcc_close!");
return;
}
# kick.
if ($message =~ /^mode(\s+(.*))?$/) {
- return unless (&hasFlag("m"));
+ return unless (&hasFlag("n"));
my ($chan,$mode) = split /\s+/,$2,2;
if ($chan eq "") {
# unlobotomy.
if ($message =~ /^(unlobotomy|benoisy)$/i) {
return unless (&hasFlag("o"));
+
if ($lobotomized) {
&performReply("i have been unlobotomized, woohoo");
$lobotomized = 0;
+ delete $cache{lobotomy};
+# undef $cache{lobotomy}; # ??
} else {
&performReply("i'm not lobotomized");
}
+
return;
}
next unless (&IsNickInChan($opee,$_));
$found++;
if ($channels{$_}{'o'}{$opee}) {
- &status("op: $opee already has ops on $_");
+ &pSReply("op: $opee already has ops on $_");
next;
}
$op++;
- &status("opping $opee on $_ at ${who}'s request");
&pSReply("opping $opee on $_");
&op($_, $opee);
}
if ($found != $op) {
- &status("op: opped on all possible channels.");
+ &pSReply("op: opped on all possible channels.");
} else {
- &DEBUG("found => '$found'.");
- &DEBUG("op => '$op'.");
+ &DEBUG("op: found => '$found'.");
+ &DEBUG("op: op => '$op'.");
}
return;
my($what,$val) = split /[\s\t]+/, $args, 2;
### TODO: "cannot set values without +m".
- return unless (&hasFlag("m"));
+ return unless (&hasFlag("n"));
# READ ONLY.
if (defined $what and $what !~ /^[-+]/ and !defined $val and $no_chan) {
return;
}
+ ### TODO: move to UserDCC again.
+ if ($cmd eq "chanset" and !defined $what) {
+ &DEBUG("showing channel conf.");
+
+ foreach $chan ($chan, "_default") {
+ &pSReply("chan: $chan");
+ ### TODO: merge 2 or 3 per line.
+ my @items;
+ my $str = "";
+ foreach (sort keys %{ $chanconf{$chan} }) {
+ my $newstr = join(', ', @items);
+ if (length $newstr > 60) {
+ &pSReply(" $str");
+ @items = ();
+ }
+ $str = $newstr;
+ push(@items, "$_ => $chanconf{$chan}{$_}");
+ }
+ &pSReply(" $str") if (@items);
+ }
+ return;
+ }
+
foreach (@chans) {
&chanSet($cmd, $_, $what, $val);
}
}
if ($message =~ /^(chanunset|\-chan)(\s+(.*))?$/) {
- return unless (&hasFlag("m"));
+ return unless (&hasFlag("n"));
my $args = $3;
my $no_chan = 0;
return;
}
+ if ($message =~ /^newpass(\s+(.*))?$/) {
+ my(@args) = split /[\s\t]+/, $2 || '';
+
+ if (scalar @args != 1) {
+ &help("newpass");
+ return;
+ }
+
+ my $u = &getUser($who);
+ my $crypt = &mkcrypt($args[0]);
+
+ &pSReply("Set your passwd to '$crypt'");
+ $users{$u}{PASS} = $crypt;
+
+ $utime_userfile = time();
+ $ucount_userfile++;
+
+ return;
+ }
if ($message =~ /^chpass(\s+(.*))?$/) {
my(@args) = split /[\s\t]+/, $2 || '';
return;
}
- my $u = &getUser($who);
+ my $u = &getUser($args[0]);
+ if (!defined $u) {
+ &pSReply("Internal error, u = NULL.");
+ return;
+ }
if (scalar @args == 1) { # del pass.
- if (!&IsFlag("m") and $who !~ /^\Q$verifyUser\E$/i) {
+ if (!&IsFlag("n") and $who !~ /^\Q$verifyUser\E$/i) {
&pSReply("cannto remove passwd of others.");
return;
}
return;
}
- my $salt = join '',('.','/',0..9,'A'..'Z','a'..'z')[rand 64, rand 64];
- my $crypt = crypt($args[1], $salt);
+ my $crypt = &mkcrypt($args[1]);
&pSReply("Set $u's passwd to '$crypt'");
$users{$u}{PASS} = $crypt;
}
if (!defined $user) {
- &pSReply("user $user does not exist.");
+ &pSReply("user does not exist.");
return;
}
&DEBUG("who => $who");
&DEBUG("verifyUser => $verifyUser");
- if (!&IsFlag("m") and $who !~ /^\Q$verifyUser\E$/i) {
+ if (!&IsFlag("n") and $who !~ /^\Q$verifyUser\E$/i) {
&pSReply("cannto change attributes of others.");
return "REPLY";
}
return;
}
- if (!&IsFlag("m") and $who !~ /^\Q$verifyUser\E$/i) {
+ if (!&IsFlag("n") and $who !~ /^\Q$verifyUser\E$/i) {
&pSReply("cannto change nick of others.");
return "REPLY" if ($who eq "_default");
return;
my ($user,$mask);
if ($args[0] =~ /^$mask{nick}$/i) { # <nick>
- return unless (&hasFlag("m"));
+ return unless (&hasFlag("n"));
$user = &getUser($args[0]);
$mask = $args[1];
} else { # <mask>
return;
}
- if (!&IsFlag("m") and $who !~ /^\Q$verifyUser\E$/i) {
+ if (!&IsFlag("n") and $who !~ /^\Q$verifyUser\E$/i) {
&pSReply("cannto change masks of others.");
return;
}
}
if ($state == 0) { # delete.
- my $c = join(' ', &banDel($mask) );
+ my @c = &banDel($mask);
+
+ foreach (@c) {
+ &unban($mask, $_);
+ }
if ($c) {
- &pSReply("Removed $mask from chans: $c");
+ &pSReply("Removed $mask from chans: @c");
} else {
&pSReply("$mask was not found in ban list.");
}
$reason = $1;
}
- if (!&IsFlag("m") and $who !~ /^\Q$verifyUser\E$/i) {
+ if (!&IsFlag("n") and $who !~ /^\Q$verifyUser\E$/i) {
&pSReply("cannto change masks of others.");
return;
}
&writeUserFile();
&writeChanFile();
+ &News::writeNews() if (&ChanConfList("news"));
return;
}
my @time;
foreach (sort { $a <=> $b } keys %time) {
my $str = join(", ", sort keys %{ $time{$_} });
+ &DEBUG("time => $_, str => $str");
push(@time, "$str (".&Time2String($_).")");
}
- &pSReply( &formListReply(0, "Schedulers: ", sort @time ) );
+ &pSReply( &formListReply(0, "Schedulers: ", @time ) );
&pSReply( &formListReply(0, "Scheds to run: ", sort @list ) );
&pSReply( &formListReply(0, "Scheds running(should not happen?) ", sort @run ) );