summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-28 17:54:10 +0000
committerLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-28 17:54:10 +0000
commitd944892a0c4d04c056a8697fc0aee54b5b01ff88 (patch)
tree891e9c32f405acf9980616a174fd6e3477a0420b /modules
parent0f110271658cc2f9e36e5fa4417b74679e39ce45 (diff)
check gecos, record gecos, inspect gecos, and more hilights
Diffstat (limited to 'modules')
-rw-r--r--modules/classes.pl18
-rw-r--r--modules/event.pl29
-rw-r--r--modules/inspect.pl4
-rw-r--r--modules/mysql.pl7
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) . ");");
}