#!/usr/bin/perl # Carlos Francisco Ferry, a.k.a zOrK - carlos@gnu.cl # Crawli BOT - released under the GPL. require 'lib/Net-IRC-0.75/IRC.pm'; use strict; use Switch; use warnings; use Cwd; my $cwd = getcwd; my $fileconf = $cwd . "/crawli.conf"; my $botnick; my $username; my $server; my $port; my $ircname; my $allow_cuptime; my $cversionmsg; sub check_conf { if (!defined($cversionmsg) ) { die "$fileconf is not configured correctly. " }; if (!defined($port)) { $port = "6667"; print "port isn't defined, setting it to $port\n"; } if (!defined($username)) { $username = $ENV{'USER'}; print "username isn't defined, setting it to $username\n"; } if (!defined($botnick)) { $botnick = $ENV{'USER'}; print "botnick isn't defined, setting it to $botnick\n"; } if (!defined($ircname)) { $ircname = `uname -a`; print "ircname isn't defined, setting it to $ircname\n"; } if (!defined($server)) { $server = "mqnet.irc.cl"; print "server isn't defined, setting it to $server\n"; } } sub load_conf { my $var_conf; my $var_data; my $mode; open (FILE, $fileconf) or die "Dying, Can't open $fileconf : $!"; my @data=; close (FILE); print "Reading conf..\n"; foreach my $conf_line (@data) { next if $conf_line =~ /^\#/; next if $conf_line !~ /^set /; $conf_line =~ s/^set //g; chomp($conf_line); ($var_conf,$var_data) = split(/: /,$conf_line); switch ($var_conf) { case 'botnick' { $botnick = $var_data; } case 'server' { $server = $var_data; } case 'port' { $port = $var_data; } case 'ircname' { $ircname = $var_data; } case 'username' { $username = $var_data; } case 'ctcp_version_msg' { $cversionmsg = $var_data; } case 'allow_cuptime' { $allow_cuptime = $var_data; } } } } sub uptime { my $uptime = `uptime`; return $uptime; } sub on_connect { my $self = shift; print "Connected to $server:$port\n"; $self->join("#Linuxers"); $self->privmsg('zOrK','hola'); } sub on_cversion { my ($self, $event) = @_; my $rnick = $event->nick; $self->ctcp_reply($rnick, $cversionmsg); } sub on_cuptime { my $uptime = uptime(); my ($self, $event) = @_; my $rnick = $event->nick; $self->ctcp_reply($rnick, $uptime); } sub start { print "Trying to connect to $server:$port as $botnick!$username:$ircname\n"; my $irc = new Net::IRC; my $con = $irc->newconn(Nick => $botnick, Server => $server, Port => $port, Username => $username, Ircname => $ircname); $con->add_global_handler('376', \&on_connect); $con->add_handler('cversion', \&on_cversion); if (defined($allow_cuptime) && $allow_cuptime eq '1') { $con->add_handler('cuptime', \&on_cuptime); } $irc->start; } &load_conf(); &check_conf(); &start();