diff options
| author | 2007-06-28 17:54:10 +0000 | |
|---|---|---|
| committer | 2007-06-28 17:54:10 +0000 | |
| commit | d944892a0c4d04c056a8697fc0aee54b5b01ff88 (patch) | |
| tree | 891e9c32f405acf9980616a174fd6e3477a0420b /modules | |
| parent | 0f110271658cc2f9e36e5fa4417b74679e39ce45 (diff) | |
check gecos, record gecos, inspect gecos, and more hilights
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/classes.pl | 18 | ||||
| -rw-r--r-- | modules/event.pl | 29 | ||||
| -rw-r--r-- | modules/inspect.pl | 4 | ||||
| -rw-r--r-- | modules/mysql.pl | 7 |
4 files changed, 46 insertions, 12 deletions
diff --git a/modules/classes.pl b/modules/classes.pl index 74b2899..c2a414f 100644 --- a/modules/classes.pl +++ b/modules/classes.pl @@ -97,12 +97,30 @@ sub Classes::host { } } +sub Classes::gecos { + our (%aonx, $id, %dct, $event, $chan); + if ( lc $::sn{lc $event->{nick}}->{gecos} eq lc $aonx{$id}{content} ) { + $dct{$id} = $aonx{$id}; + } +} + +sub Classes::nuhg { + our (%aonx, $id, %dct, $event, $chan); + my $match = $event->{from} . '!' . $::sn{lc $event->{nick}}->{gecos}; + if ( (defined $aonx{$id}{nocase}) && ($aonx{$id}{nocase}) ) { + $dct{$id}=$aonx{$id} if ($match =~ /$aonx{$id}{content}/i); + } else { + $dct{$id}=$aonx{$id} if ($match =~ /$aonx{$id}{content}/); + } +} + sub Classes::killsub { undef &Classes::dnsbl; undef &Classes::floodqueue; undef &Classes::nickspam; undef &Classes::re; } + #$VAR1 = bless( { # 'to' => [ # '##asb-testing' diff --git a/modules/event.pl b/modules/event.pl index 2feb915..dd04512 100644 --- a/modules/event.pl +++ b/modules/event.pl @@ -12,6 +12,8 @@ my @leven = (); sub on_join { my ($conn, $event) = @_; + my %evcopyx = %{$event}; + my $evcopy = \%evcopyx; my $nick = lc $event->{nick}; my $chan = lc $event->{to}->[0]; if ( leq($conn->{_nick}, $nick) ) { @@ -22,7 +24,16 @@ sub on_join { $::sc{$chan}{users}{$nick}{hostmask} = $event->{userhost}; $::sc{$chan}{users}{$nick}{op} = 0; $::sc{$chan}{users}{$nick}{voice} = 0; - inspect( $conn, $event ); + if (defined($::sn{$nick})) { + inspect( $conn, $event ); + } else { + if (defined($::needgeco{$nick})) { + $::needgeco{$nick} = [ @{$::needgeco{$nick}}, $evcopy ]; + } else { + $::needgeco{$nick} = [ $evcopy ]; + $conn->sl("whois $nick"); + } + } logg( $event ); if ( $#leven ne -1 ) { my $ld = ( ( maxlen($nick, $leven[0]) - distance($nick, $leven[0]) ) / maxlen($nick, $leven[0]) ); @@ -162,6 +173,8 @@ sub on_nick { push ( @channels, lc $_ ); } } + $::sn{lc $event->{args}->[0]} = $::sn{lc $event->{nick}}; + delete( $::sn{lc $event->{nick}}); $event->{to} = \@channels; inspect($conn, $event); logg($event) @@ -236,16 +249,18 @@ sub whois_end { sub whois_user { my ($conn, $event2) = @_; - my $lnick = lc $event2->{args}->[1] + my $lnick = lc $event2->{args}->[1]; unless (defined($::sn{$lnick})) { $::sn{$lnick} = {}; } - $::sn{$lnick}{gecos} = $event2->{args}->[5]; - $::sn{$lnick}{user} = $event2->{args}->[2]; - $::sn{$lnick}{host} = $event2->{args}->[3]; + $::sn{$lnick}->{gecos} = $event2->{args}->[5]; + $::sn{$lnick}->{user} = $event2->{args}->[2]; + $::sn{$lnick}->{host} = $event2->{args}->[3]; if (defined( $::needgeco{$lnick} )) { - inspect(shift($::needgeco{$lnick})); - delete $::needgeco{$lnick} if $::needgeco{$lnick} eq (); + foreach my $event (@{$::needgeco{$lnick}}) { + inspect($conn, $event); + } + delete $::needgeco{$lnick}; } } #<<< :kubrick.freenode.net 311 AntiSpamMeta AfterDeath i=icxcnika atheme/troll/about.linux.afterdeath * :[[User:WHeimbigner]] diff --git a/modules/inspect.pl b/modules/inspect.pl index 76b520f..666de29 100644 --- a/modules/inspect.pl +++ b/modules/inspect.pl @@ -10,7 +10,7 @@ sub inspect { our ($conn, $event) = @_; my (%conx, %monx); our (%aonx, %dct, $rev, $chan, $id); - %aonx=(); %dct=(); $rev; $chan=""; $id=""; + %aonx=(); %dct=(); $chan=""; $id=""; my (@dnsbl, @unpakt, @uniq, @cut); my ($match, $txtz, $iaddr); my @override = []; @@ -44,7 +44,7 @@ sub inspect { delete $dct{$_} foreach @override; foreach $chan (@{$event->{to}}) { foreach $id ( keys %dct ) { - sql_record($chan, $event->{nick}, $event->{user}, $event->{host}, $dct{$id}{risk}, $id, $dct{$id}{reason}); + sql_record($chan, $event->{nick}, $event->{user}, $event->{host}, $::sn{lc $event->{nick}}->{gecos}, $dct{$id}{risk}, $id, $dct{$id}{reason}); $txtz = "$dct{$id}{risk} risk threat: ". "Detected $event->{nick} $dct{$id}{reason} in $chan "; $txtz = $txtz . commaAndify(getAlert(lc $chan, $dct{$id}{risk}, 'hilights')) if (getAlert(lc $chan, $dct{$id}{risk}, 'hilights')); diff --git a/modules/mysql.pl b/modules/mysql.pl index 7a5da7c..463dbaf 100644 --- a/modules/mysql.pl +++ b/modules/mysql.pl @@ -6,14 +6,15 @@ sub sql_connect { $::dbh = DBI->connect("DBI:mysql:database=$::mysql->{db};host=$::mysql->{host};port=$::mysql->{port}", $::mysql->{user}, $::mysql->{pass}); + $::dbh->{mysql_auto_reconnect} = 1; } sub sql_record { - my ($channel, $nick, $user, $host, $level, $id, $reason) = @_; - $::dbh->do("INSERT INTO $::mysql->{table} (channel, nick, user, host, level, id, reason) VALUES (" . + my ($channel, $nick, $user, $host, $gecos, $level, $id, $reason) = @_; + $::dbh->do("INSERT INTO $::mysql->{table} (channel, nick, user, host, gecos, level, id, reason) VALUES (" . $::dbh->quote($channel) . ", " . $::dbh->quote($nick) . ", " . $::dbh->quote($user) . - ", " . $::dbh->quote($host) . ", " . $::dbh->quote($level) . ", " . + ", " . $::dbh->quote($host) . ", " . $::dbh->quote($gecos) . ", " . $::dbh->quote($level) . ", " . $::dbh->quote($id) . ", " . $::dbh->quote($reason) . ");"); } |
