#!/usr/local/bin/perl
$debug = 0;
$connect_retries = 5;
$nick = 'lnks';
$server = 'irc.boldt.us';
$port = 6667;
$username = 'lnks';
$ircname = 'lnks.us bot';
#$nickserv = 'x@channels.undernet.org';
#$nickregister = "register lnks rczaV8aS";
$umode = "$nick -iw";
@channels = ('#channel1','#channel2');
#@channels = ('#munky_test1', '#munky_test2');
#################################################
# END CONFIG
use POE::Component::IRC;
use POE::Kernel;
use POE::Session;
#use DBI;
use LWP::UserAgent;
open(PID,">$nick.pid");
print PID $$;
close(PID);
$c = 0;
sub _start {
my($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
$kernel->post('lnks', 'register', qw(all));
$kernel->post('lnks', 'connect',
{
Nick => $nick,
Server => $server,
Port => $port,
Username => $username,
Ircname => $ircname
} );
}
sub irc_433 {
my($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
$nick_addon .= "_";
$kernel->post('lnks', 'connect',
{
Nick => $nick . $nick_addon,
Server => $server,
Port => $port,
Username => $username,
Ircname => $ircname
} );
}
sub irc_disconnected {
if($c < $connect_retries)
{
$kernel->post('lnks', 'connect',
{
Nick => $nick,
Server => $server,
Port => $port,
Username => $username,
Ircname => $ircname
} );
$c += 1;
return;
}
exit;
}
sub irc_socketerr {
exit;
}
sub irc_001 {
my($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
foreach(@channels)
{
$kernel->post('lnks', 'join', $_);
}
$kernel->post('lnks', 'privmsg', $nickserv, $nickregister) if($nickserv);
$kernel->post('lnks', 'mode', $umode);
}
sub get_lnks {
my ($url) = @_;
my ($ua) = LWP::UserAgent->new;
my(%form);
$url =~ s/'/%27/g; $url =~ s/"/%22/g; $url =~ s/;/%3B/g;
if( $url =~ /^(http:\/\/)?(www.)?lnks.us\/\??([A-Z0-9]*)/i )
{
$hash = $3;
print "get_lnks: hash=$hash\n" if($debug);
$response = $ua->get("http://lnks.us/$hash");
$url =~ /(not found)/;
$response->content =~ /going to post("http://lnks.us", \%form);
$response->content =~ /Your link is: post('lnks', 'privmsg', $nick, $reply);
}
return;
}
sub irc_public {
my($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
my($nickhost, $target, $msgtxt) = @_[ARG0, ARG1, ARG2];
$channel = $target->[0];
my($url) =~ /()/;
$msgtxt =~ /(http:\/\/[^\s]+)/;
print "irc_public: msgtxt=$msgtxt\n" if($debug);
$url = $1;
print "irc_public: url=$url\n" if($debug);
if($url ne '' && length($url) > 50){
$reply = &get_lnks($url) || return "error getting lnks for $msgtxt";
$kernel->post('lnks', 'privmsg', $channel, $reply);
}
return;
}
sub _default {
my ( $event, $args ) = @_[ ARG0, ARG1 ];
$args ||= []; # Prevents uninitialized-value warnings.
print "default: $event (@$args)\n" if($debug);
return 0;
}
POE::Component::IRC->new('lnks') or die "poop!! $!";
POE::Session->new('main' => [qw(_start irc_disconnected irc_001 irc_msg irc_public irc_socketerr irc_433 _default)] );
$poe_kernel->run();
exit 0;