All pastes #580612 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-21 04:33 UTC
rendered paste body
#!/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=<FILE>;
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();