my $latin2 = find_encoding("iso-8859-2");
####
my $enc = find_encoding("iso-8859-2")->name;
####
my $userAgent = LWP::USerAgent->new;
####
my $ua = LWP::UserAgent->new;
####
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Getopt::Long;
use HTML::Form;
use HTTP::Request::Common;
use LWP::UserAgent;
use URI::Escape::JavaScript;
BEGIN {
$ENV{DEBUG} = 1;
}
use Debug::STDERR;
my $url;
my $message = '';
my $scripts = '';
my $username;
my $password;
my $file;
my $name;
my $login = 0;
my $response;
my $usage =
"usage: upload.pl url [--message] [--scripts] [--username --password] [--file [--name]]";
GetOptions(
'message|m=s' => \$message,
'scripts|s=s' => \$scripts,
'username|u=s' => \$username,
'password|p=s' => \$password,
'file|f=s' => \$file,
'name|a=s' => \$name
) or die $usage;
if ( @ARGV != 1 ) { die $usage }
$url = $ARGV[0];
if ( $username && $password ) { $login = 1; }
elsif ( $username || $password ) {
die 'Username and password must be supplied together.';
}
if ($file) {
if ( !-e $file ) { die "File not found: $file" }
}
elsif ( !$message ) { die 'Either a file or a message must be supplied.' }
my $ua = LWP::UserAgent->new;
debug( my_debug => { ua => $ua } );
$ua->agent('PerlKamion');
$ua->cookie_jar( {} );
my $enc = find_encoding("iso-8859-2");
#login
if ($login) {
print "Logging in...\n";
$response = $ua->post(
'http://lohere.net/_user/bejelentkezes.php?login=true',
[ user => $username, password => $password ],
Content_Type => 'form_data',
);
if ( $response->filename == "bejelentkezes.php" ) {
$enc->decode( $response->content ) =~
m|(.+?)|;
die "Unable to log in: $1";
}
}
# authentication
print "Authenticating...\n";
$response = $ua->get($url);
$enc->decode( $response->content ) =~ m|unescape\('(.+?)'\)|;
my @forms = HTML::Form->parse( js_unescape($1), $url );
# upload
my %uploadForm = $forms[0]->form;
$uploadForm{'longcat'} = $scripts;
$uploadForm{'is'} = $message;
if ($file) { $uploadForm{'looong'} = [ $file, $name ] }
print "Posting...\n";
$response = $ua->post( $url, \%uploadForm, Content_Type => 'form-data' );
my $responseText = $enc->decode( $response->content );
print $responseText;
if ( index( $responseText, "Oldal friss\u00edt\u00e9se..." ) == -1 ) {
$responseText =~ m|| (.+?) | |;
die "Upload error: $1";
}
print "Done.";