rendered paste bodypackage identify;
use strict;
use warnings;
use POE::Component::IRC qw( :ALL );
use POE::Component::IRC::Plugin qw( :ALL );
use DBI;
use Config::Simple;
use Time::Duration;
my $irc;
my $db = &Trice::get_sql();
my $cfg = new Config::Simple();
$cfg->read('bot.cfg') or die $cfg->error();
# Plugin object constructor
sub new {
my $package = shift;
return bless {}, $package;
}
sub PCI_register {
my ($self, $irc) = splice @_, 0, 2;
$irc->plugin_register( $self, 'SERVER', qw(msg public) );
return 1;
}
# This is method is mandatory but we don't actually have anything to do.
sub PCI_unregister {
return 1;
}
sub S_public {
my ($self, $irc) = splice @_, 0, 2;
# Parameters are passed as scalar-refs including arrayrefs.
my $nick = ( split /!/, ${ $_[0] } )[0];
my $channel = ${ $_[1] }->[0];
my $msg = ${ $_[2] };
$msg = &Trice::strip_formatting(&Trice::strip_color($msg));
if ((lc($channel) eq "#torbot-logfeed") && (lc($nick) eq "torbot")) {
if ($msg =~ /LOGOUT (.*?) (.*?) :(.*?)/i) {
my $sql = $db->prepare("UPDATE `users_main` SET `onirc`=0 WHERE `Username`=$2");
$sql->execute();
} elsif ($msg =~ /IDENTIFY (\S+).*[;:]([A-Za-z0-9]+)\-([A-Za-z0-9\s]+)\-PWN\-http[s]?:\/\/pwnnetwork\.net/i) {
my($nickname, $username) = ($1, $2);
my $sql = $db->prepare("SELECT u.ID, u.Username, u.IRCKey, u.Enabled, p.name, p.Level FROM users_main AS u
JOIN permissions AS p ON u.PermissionID=p.ID JOIN users_info AS ui ON ui.UserID=u.ID
WHERE Username = $username");
$sql->execute();
if ($sql->rows > 0) {
my ($user_id, $username, $irckey, $enabled, $class) = $sql->fetchrow_array();
if($enabled eq '1'){
#$irc->yield(quote => "SAJOIN $nickname ".$cfg->param('#pwn'));
my $sql = $db->prepare("UPDATE users_main SET onirc = '1' WHERE Username = ?");
$sql->execute($username);
if($db->rows()){
$irc->yield(notice => $nickname => "IRC Bonus Enabled.");
}
$irc->yield(privmsg => "#torbot-logfeed" => "IDENTIFIED $nickname AS $username");
} else {
$irc->yield(privmsg => "TorBot" => "idtracker $nick $username PWN * *");
$irc->yield(privmsg => $nickname => "Your account is disabled.");
#$irc->yield(quote => "SAJOIN $nickname ".$cfg->param('#pwnhelp'));
}
}
}
return PCI_EAT_ALL;
}
return PCI_EAT_NONE;
}
sub S_msg {
my ($self, $irc) = splice @_, 0, 2;
# Parameters are passed as scalar-refs including arrayrefs.
my $nick = ( split /!/, ${ $_[0] } )[0];
my $channel = ${ $_[1] }->[0];
my $msg = ${ $_[2] };
$msg = &Trice::strip_formatting(&Trice::strip_color($msg));
my $nickname = $nick;
#IDENTIFY NEW
if ($msg =~ /^IDENTIFY/i) {
if ($msg =~ /^IDENTIFY (.*?) (.*?)/i) {
my $user = $1;
my $pass = $2;
my $sql = $db->prepare("SELECT u.ID, u.Username, u.IRCKey, u.Enabled, p.name, p.Level
FROM users_main AS u JOIN permissions AS p ON u.PermissionID=p.ID
JOIN users_info AS ui ON ui.UserID=u.ID
WHERE Username = $user AND IRCKey = $pass");
$sql->execute();
if ($sql->rows > 0) {
my ($user_id, $username, $irckey, $enabled, $class) = $sql->fetchrow_array();
if($enabled eq '1'){
$irc->yield(privmsg => "TorBot" => "idtracker $nickname $username PWN https://pwnnetwork.net/user.php?id=$user_id $class");
} else {
$irc->yield(privmsg => "TorBot" => "idtracker $nick $username PWN * *");
$irc->yield(privmsg => $nickname => "Your account is disabled.");
}
} else {
$irc->yield(privmsg => $nick => "Wrong username and/or IRC key");
}
} else {
$irc->yield(privmsg => $nick => "Invalid syntax: Username and IRC key required. Example: /msg ".$cfg->param('irc_nick')." IDENTIFY <username> <irckey>");
}
return PCI_EAT_ALL;
}
return PCI_EAT_NONE;
}
1;