summaryrefslogtreecommitdiffstats
path: root/modules/event.pl
diff options
context:
space:
mode:
authorLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2013-03-07 14:18:25 +0000
committerLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2013-03-07 14:18:25 +0000
commit4c8e9e917cde4e1455da331847defa5274d99753 (patch)
tree97d62ca10a89b0b09b826e5fae55ad685982ac80 /modules/event.pl
parentfdb1d6257cb9871c687e13b1ac1ec038ed2529e4 (diff)
Added tracking of the realIP in quiets/bans, added a floodqueue that checks the realIP against the realIP quiet list, did some improvement of IP conversion code
Diffstat (limited to 'modules/event.pl')
-rw-r--r--modules/event.pl32
1 files changed, 30 insertions, 2 deletions
diff --git a/modules/event.pl b/modules/event.pl
index bd76fb1..b74c4d0 100644
--- a/modules/event.pl
+++ b/modules/event.pl
@@ -596,9 +596,19 @@ sub on_mode
$::log->sqlIncident( $chan, $idx ) if $idx;
}
}
+ if ($ex[1] =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ $::sc{$chan}{ipbans}{$ip} = { bannedBy => $event->{from}, bannedOn => time } if defined($ip);
+ }
+ }
+ }
+ elsif ( $ex[0] eq '-b' ) {
+ delete $::sc{$chan}{bans}{$ex[1]};
+ if ($ex[1] =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ delete $::sc{$chan}{ipbans}{$ip} if defined($ip);
}
}
- elsif ( $ex[0] eq '-b' ) { delete $::sc{$chan}{bans}{$ex[1]}; }
elsif ( $ex[0] eq '+q' ) {
$::sc{$chan}{quiets}{$ex[1]} = { bannedBy => $event->{from}, bannedOn => time };
@@ -610,9 +620,19 @@ sub on_mode
$::log->sqlIncident( $chan, $idx ) if $idx;
}
}
+ if ($ex[1] =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ $::sc{$chan}{ipquiets}{$ip} = { bannedBy => $event->{from}, bannedOn => time } if defined($ip);
+ }
+ }
+ }
+ elsif ( $ex[0] eq '-q' ) {
+ delete $::sc{$chan}{quiets}{$ex[1]};
+ if ($ex[1] =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ delete $::sc{$chan}{ipquiets}{$ip} if defined($ip);
}
}
- elsif ( $ex[0] eq '-q' ) { delete $::sc{$chan}{quiets}{$ex[1]}; }
else {
my ($what, $mode) = split (//, $ex[0]);
@@ -652,6 +672,10 @@ sub on_banlist
my ($conn, $event) = @_;
my ($me, $chan, $ban, $banner, $bantime) = @{$event->{args}};
$::sc{lc $chan}{bans}{$ban} = { bannedBy => $banner, bannedOn => $bantime };
+ if ($ban =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ $::sc{lc $chan}{ipbans}{$ip} = { bannedBy => $banner, bannedOn => $bantime } if defined($ip);
+ }
}
sub on_quietlist
@@ -659,6 +683,10 @@ sub on_quietlist
my ($conn, $event) = @_;
my ($me, $chan, $mode, $ban, $banner, $bantime) = @{$event->{args}};
$::sc{lc $chan}{quiets}{$ban} = { bannedBy => $banner, bannedOn => $bantime };
+ if ($ban =~ /^\*\!\*\@(.*)$/) {
+ my $ip = ASM::Util->getHostIP($1);
+ $::sc{lc $chan}{ipquiets}{$ip} = { bannedBy => $banner, bannedOn => $bantime } if defined($ip);
+ }
}
sub on_channelurlis