diff options
| author | 2007-06-06 21:30:25 +0000 | |
|---|---|---|
| committer | 2007-06-06 21:30:25 +0000 | |
| commit | 04c4d4ae0d6fdfe9e59a50e79b40047a08feefb7 (patch) | |
| tree | 3db7aa17c73151e038f08e3cd0c1b2faffc0c482 /meta.pl | |
| parent | 110cb874fc58ae4a214889bb8d6545201a57dd2f (diff) | |
Added files
Diffstat (limited to 'meta.pl')
| -rwxr-xr-x | meta.pl | 96 |
1 files changed, 96 insertions, 0 deletions
@@ -0,0 +1,96 @@ +#!/usr/bin/perl -w + +use lib '/home/icxcnika/AntiSpamMeta'; +#use lib '/home/wheimbigner/perl/lib/perl5/site_perl/5.8.8'; +use warnings; +use strict; +use Net::IRC; +use Data::Dumper; +use IO::All; +use Getopt::Long; +use POSIX qw(strftime); + +@::eline=(); +$::pass = ''; + +my @modules = qw/Xml Util Inspect Services Log Command Event Classes Actions/; + +require 'modules/' . lc $_ . '.pl' foreach @modules; + +sub rePlug +{ + my ($conn) = @_; + foreach (@modules) { + eval $_ . '::killsub();'; + warn $@ if $@; + eval 'undef &' . $_ . '::killsub;'; + warn $@ if $@; + delete $INC{'modules/' . lc $_ . '.pl'}; + require 'modules/' . lc $_ . '.pl'; + } + registerHandlers($conn); # this is necessary in case event.pl has changed + # because handlers are registered via pointers +} + +sub init { + my ( $conn, $host ); + my $debug = 0; + my $irc = new Net::IRC; + $::cset = ''; + GetOptions( 'debug|d!' => \$debug, + 'pass|p:s' => \$::pass, + 'config|c:s' => \$::cset + ); + readXML(); + $::pass = $::settings->{pass} if $::pass eq ''; + $host = ${$::settings->{server}}[rand @{$::settings->{server}}]; + print "Connecting to $host\n"; + $irc->debug($debug); + $conn = $irc->newconn( Server => $host, + Port => $::settings->{port} || '6667', + Nick => $::settings->{nick}, + Ircname => $::settings->{realname}, + Username => $::settings->{username}, + Password => $::pass, + Pacing => 1 ); + $conn->debug($debug); + registerHandlers($conn); + @::eline=io('exempt.txt')->getlines; + chomp @::eline; + $irc->start(); +} + +sub registerHandlers { + my ($conn) = @_; + print "Installing handler routines...\n"; + $conn->add_default_handler(\&blah); + $conn->add_handler('bannedfromchan', \&on_bannedfromchan); + $conn->add_handler('mode', \&on_mode); + $conn->add_handler('join', \&on_join); + $conn->add_handler('part', \&on_part); + $conn->add_handler('quit', \&on_quit); + $conn->add_handler('nick', \&on_nick); + $conn->add_handler('notice', \&on_notice); + $conn->add_handler('caction', \&on_public); + $conn->add_handler('msg', \&on_msg); + $conn->add_handler('namreply', \&on_names); + $conn->add_handler('endofnames', \&on_names); + $conn->add_handler('public', \&on_public); + $conn->add_handler('376', \&on_connect); + $conn->add_handler('topic', \&irc_topic); + $conn->add_handler('topicinfo', \&irc_topic); + $conn->add_handler('nicknameinuse', \&on_errnickinuse); + $conn->add_handler('kick', \&on_kick); + $conn->add_handler('cping', \&on_ctcp); + $conn->add_handler('cversion', \&on_ctcp); + $conn->add_handler('csource', \&on_ctcp); + $conn->add_handler('ctime', \&on_ctcp); + $conn->add_handler('cdcc', \&on_ctcp); + $conn->add_handler('cuserinfo', \&on_ctcp); + $conn->add_handler('cclientinfo', \&on_ctcp); + $conn->add_handler('cfinger', \&on_ctcp); + $conn->add_handler('320', \&whois_identified); + $conn->add_handler('318', \&whois_end); +} + +init(); |
