#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use Digest
::MD5 qw(md5_hex
);
my %pages = (
'Login' => "/news.php",
'Logout' => "/setuser.php?logout=yes",
'F_ID' => "/forum/index.php",
'Tmp_fid' => 0,
'Topic_pt' => "/forum/post.php?action=reply&forum_id=",
'Thread_n' => "/forum/post.php?action=newthread&forum_id="
);
my @msgs = ("Hi people.", "Just a bot.", "Tell me baby!", "'njoy", "wtf?");
my $cookie = "";
my $url = "";
sub user_login() {
my($e,$uri,$uid,$pass) = @_;
if($e eq "PerlFusion") { $e = $uri; }
die("user_login(Fusion_Path, User_ID, User_Pass)\n") if(!$pass);
$uri = &parse_host($uri);
if($uri =~ /(http|www.)/) {
$url = $uri;
&request($uid,$pass,'Login');
}
}
sub new_post() {
my($e,$forum,$thread,$message) = @_;
if($e eq "PerlFusion") { $e = $forum; }
$forum = &forumid($forum,$thread);
my @forum = split("fusion", $forum);
my $lwpt = LWP::UserAgent->new();
$lwpt->default_header(
"Cookie" => $cookie
);
my $heads = [
message => $message,
postreply => "postreply"
];
my $reqt = $lwpt->post($url.$pages{'Topic_pt'}.@forum[0]."&thread_id=".@forum[1],$heads);
}
sub new_topic() {
my($e,$forum,$name,$message) = @_;
if($e eq "PerlFusion") { $e = $forum; }
$forum = &forumid($forum,"",1);
my $lwpn = LWP::UserAgent->new();
$lwpn->default_header(
"Cookie" => $cookie
);
my $heads = [
subject => $name,
message => $message,
postnewthread => "postnewthread"
];
my $reqn = $lwpn->post($url.$pages{'Thread_n'}.$forum,$heads);
}
sub user_logout() {
&request('Logout');
$cookie = "fusion_visited=yes";
}
sub forumid() {
my $toget = &request('F_ID');
if(
$toget =~ /<a href='viewforum.php\?forum_id=(.*?)'>$fname<\/a>/ ||
$toget =~ /<a href='viewforum.php\?forum_id=(.*?)'><strong>$fname<\/strong><\/a>/
) {
$pages{'Tmp_fid'} = "/forum/viewforum.php\?forum_id=".$1; my $thid = $1;
my $ntoget = &request('Tmp_fid');
if(
$ntoget =~ /<a href='viewthread.php\?thread_id=(.*?)'>$tname<\/a>/ ||
$ntoget =~ /<a href='viewthread.php\?forum_id=$thid&thread_id=(.*?)'>$tname<\/a>/ ||
$ntoget =~ /<a href='viewthread.php\?forum_id=$thid\&thread_id=(.*?)'>$tname<\/a>/
) { return $thid."fusion".$1; }
else {
die("[-] Topic ID not received.\n") if(!$delim);
}
}
else {
die("[-] Forum ID not received.\n");
}
}
sub request() {
my($uid,$pass,$what) = @_;
if($uid && $pass) {
my $md5p = md5_hex($pass);
$cookie = "fusion_visited=yes; fusion_user=".$uid.".".$md5p;
}
else {
$what = $uid;
}
my $lwp = LWP::UserAgent->new();
$lwp->default_header(
"Cookie" => $cookie
);
my $req = $lwp->post($url.$pages{$what});
if($req->content !~ /(>edit profile|>modifica profilo|>logout|>logging out)/i) {
die("[-] Invalid user id or password.\n");
}
}
sub parse_host() {
my @tmp = split("", $uri);
if(@tmp[length($uri)-1
] eq "/") {
}
$uri = "";
foreach my $swift(@tmp) {
$uri .= $swift;
}
}
1;