From fdb1d6257cb9871c687e13b1ac1ec038ed2529e4 Mon Sep 17 00:00:00 2001 From: William Heimbigner Date: Thu, 7 Mar 2013 10:35:43 +0000 Subject: Added logging of kicks/bans/quiets/removes/klines/kills to a special SQL table and corresponding text files Enabled SQL debugging Bugfix: Only attempt to determine a host's IP if it doesn't contain a '/' Updates to channels.xml and users.xml Adjusted ;userx add and ;userx flags such that A cannot give B a flag that A doesn't already have Tweaked the ;help command Fixed ;mship such that it will respond even if it can't see the nick provided. Tweaked ;status to give output in format like 7d22h18m3s instead of 9814798712 seconds Added a ;teredo helper command to give info on IPv6 teredo-tunneled connections Added a nick blacklist file (to counter bot nicklists). Added a english wordlist file, for "garbage" detection. Added ;investigate and ;investigate2 commands Added a way to not throttle info-risk threats Added special detection for a cycling botnet Added special detection for bots that join, say something, and immediately quit Added detection for ascii art Added detection for "garbage" text Added fuzzy-matching against a set of nicks Added "real IP" to state tracking and logging, which "decrypts" gateway/web and teredo IPs Moved sigalarm code into meta.pl Improved statsp tracking, and logs it to a file Ping-pong every 30 seconds, auto-reconnect on persistent lag. Ensure inspector routine is always called AFTER log-handling routines Fixed a state-tracking bug in topic change handling Fixed a state-tracking bug with nick changes Fixed some state-tracking bugs with mode changes Determine who is impacted when a quiet/ban mask is placed Fixed handling of CTCP SOURCE requests Added feature where it keeps a 30 line "backlog" of each channel in memory. Added the reason for parts and quits to text logging --- meta.pl | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'meta.pl') diff --git a/meta.pl b/meta.pl index 47c9d9b..7586b23 100755 --- a/meta.pl +++ b/meta.pl @@ -18,10 +18,13 @@ $Data::Dumper::Useqq=1; %::eline=(); $::pass = ''; +@::nick_blacklist=(); @::string_blacklist=(); $::netsplit = 0; $::debug = 0; $::cset = ''; +$::pacealerts = 1; +%::wordlist = (); ## debug variables. 0 to turn off debugging, else set it to a Term::ANSIColor constant. %::debugx = ( @@ -32,14 +35,16 @@ $::cset = ''; "chanstate" => MAGENTA, "restrictions" => BLUE, "startup" => YELLOW, - "mysql" => 0, + "mysql" => CYAN, "inspector" => 0, "commander" => GREEN, "msg" => GREEN, "dcc" => RED, - "misc" => 0, #RED + "misc" => 0, #RED, "latency" => RED, - "statsp" => 0 #MAGENTA + "statsp" => MAGENTA, + "ctcp" => 0, #RED, + "logger" => 0 ); %::dsock = (); %::spy = (); @@ -54,6 +59,13 @@ $SIG{__WARN__} = sub { print STDERR strftime("%F %T", gmtime), RED, ' WARNING: ', RESET, $_[0]; }; +sub alarmdeath +{ + die "SIG ALARM!!!\n"; +} +$SIG{ALRM} = \&alarmdeath; +alarm 300; + BEGIN { my @modules = qw/Util Xml Inspect Event Services Log Command Classes Mysql/; require 'modules/' . lc $_ . '.pl' foreach @modules; @@ -75,9 +87,12 @@ sub init { $host = ${$::settings->{server}}[rand @{$::settings->{server}}]; ASM::Util->dprint( "Connecting to $host", "startup"); $irc->debug($::debug); - $::db = ASM::DB->new($::mysql->{db}, $::mysql->{host}, $::mysql->{port}, $::mysql->{user}, $::mysql->{pass}, $::mysql->{table}, $::mysql->{dblog}); + $::db = ASM::DB->new($::mysql->{db}, $::mysql->{host}, $::mysql->{port}, + $::mysql->{user}, $::mysql->{pass}, $::mysql->{table}, + $::mysql->{actiontable}, $::mysql->{dblog}); $conn = $irc->newconn( Server => $host, Port => $::settings->{port} || '6667', + SSL => defined($::settings->{ssl}), Nick => $::settings->{nick}, Ircname => $::settings->{realname}, Username => $::settings->{username}, @@ -97,6 +112,9 @@ sub init { my @strbl = io('string_blacklist.txt')->getlines; chomp @strbl; @::string_blacklist = @strbl; + my @nickbl = io('nick_blacklist.txt')->getlines; + chomp @nickbl; + @::nick_blacklist = @nickbl; %::proxies = (); my @proxy = io('proxy.txt')->getlines; chomp @proxy; @@ -105,6 +123,11 @@ sub init { $::proxies{$1} = 1; } } + my @wl=io('wordlist.txt')->getlines; + chomp @wl; + foreach my $item (@wl) { + $::wordlist{lc $item} = 1; + } $irc->start(); } -- cgit v1.2.3