summaryrefslogtreecommitdiffstats
path: root/meta.pl
diff options
context:
space:
mode:
authorLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-06 21:30:25 +0000
committerLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-06 21:30:25 +0000
commit04c4d4ae0d6fdfe9e59a50e79b40047a08feefb7 (patch)
tree3db7aa17c73151e038f08e3cd0c1b2faffc0c482 /meta.pl
parent110cb874fc58ae4a214889bb8d6545201a57dd2f (diff)
Added files
Diffstat (limited to 'meta.pl')
-rwxr-xr-xmeta.pl96
1 files changed, 96 insertions, 0 deletions
diff --git a/meta.pl b/meta.pl
new file mode 100755
index 0000000..42b30ab
--- /dev/null
+++ b/meta.pl
@@ -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();