### TODO: prevent users without CRYPT chatting.
if (!defined $crypto) {
- &DEBUG("chat: no pass required.");
-### $success++;
+ &DEBUG("todo: dcc close chat");
+ &msg($who, "nope, no guest logins allowed...");
+ return;
+ }
- } elsif (&ckpasswd($msg, $crypto)) {
+ if (&ckpasswd($msg, $crypto)) {
# stolen from eggdrop.
$self->privmsg($sock, "Connected to $ident");
$self->privmsg($sock, "Commands start with '.' (like '.quit' or '.help')");
# update IRCStats.
$ircstats{'ConnectTime'} = time();
$ircstats{'ConnectCount'}++;
+ $ircstats{'OffTime'} += time() - $ircstats{'DisconnectTime'}
+ if (defined $ircstats{'DisconnectTime'});
+
+ # first time run.
+ if (!exists $users{_default}) {
+ &status("First time run... adding _default user.");
+ $users{_default}{FLAGS} = "mrt";
+ $users{_default}{HOSTS} = "*!*@*";
+ }
+
+ if (scalar keys %users < 2) {
+ &status("Ok... now /msg $ident PASS <pass> to get master access through DCC CHAT.");
+ }
+ # end of first time run.
if (&IsChanConf("wingate")) {
my $file = "$bot_base_dir/$param{'ircUser'}.wingate";
$ircstats{'DisconnectTime'} = time();
$ircstats{'DisconnectReason'} = $what;
$ircstats{'DisconnectCount'}++;
+ $ircstats{'TotalTime'} += time() - $ircstats{'ConnectTime'};
# clear any variables on reconnection.
$nickserv = 0;
if (scalar @joinchan) { # remaining channels to join.
&joinNextChan();
+ } else {
+ &DEBUG("running ircCheck to get chanserv ops.");
+ &ircCheck();
}
return unless (&IsChanConf("chanServ_ops") > 0);
my $reason = "no reason";
foreach ($chan, "*") {
next unless (exists $bans{$_});
- next unless (exists $bans{$_}{$mask});
+ next unless (exists $bans{$_}{$ban});
- my @array = @{ $bans{$_}{$mask} };
- foreach (@array) {
- &DEBUG("on_join: ban: array => '$_'");
- }
- $reason ||= $array[4];
+ my @array = @{ $bans{$_}{$ban} };
+
+ $reason = $array[4] if ($array[4]);
last;
}
- &DEBUG("on_join: ban: reason => '$reason'.");
&ban($ban, $chan);
&kick($who, $chan, $reason);
$user =~ /^r(oo|ew|00)t$/i &&
$channels{$chan}{'o'}{$ident});
+ ### NEWS:
+ if (&IsChanConf("news") && &IsChanConf("newsKeepRead")) {
+ # todo: what if it hasn't been loaded?
+ &News::latest($chan);
+ }
+
### chanlimit check.
&chanLimitVerify($chan);
($user,$host) = split(/\@/, $event->userhost);
$uh = $event->userhost();
$nuh = $nick."!".$uh;
+ $msgtime = time();
+
+ if ($nick eq $ident) { # hopefully ourselves.
+ if ($msg eq "TEST") {
+ &status("IRCTEST: Yes, we're alive.");
+ delete $cache{connect};
+ return;
+ }
+ }
&hookMsg('private', undef, $nick, $msg);
}
if ($nick =~ /^NickServ$/i) { # nickserv.
&status("NickServ: <== '$args'");
- if ($args =~ /^This nickname is registered/i) {
+ my $check = 0;
+ $check++ if ($args =~ /^This nickname is registered/i);
+ $check++ if ($args =~ /nickname.*owned/i);
+
+ if ($check) {
&status("nickserv told us to register; doing it.");
if (&IsParam("nickServ_pass")) {
&status("NickServ: ==> Identifying.");
}
}
-
$msgtime = time();
$lastWho{$chan} = $nick;
### TODO: use $nick or lc $nick?
push(@who, grep /^\Q$message\E$/i, keys %{ $flood{$_} });
}
+ return if ($lobotomized);
+
if (scalar @who) {
&msg($who, "you already said what ".
join(' ', @who)." have said.");
### todo: check if we have ops.
### todo: if not, check if nickserv/chanserv is avail.
### todo: unify code with chanlimitcheck()
- if ($delta > 3) {
- &WARN("clc: nowl($nowl) > l($l) - 3");
+ if ($delta > 5) {
+ &status("clc: big change in limit; changing.");
&rawout("MODE $chan +l ".($nowl+$plus) );
}
}