#!/usr/bin/perl # Version 1.01 beta (7 Oct. 2009) # Wrzuc.to perl uploader # Send bugs and errors on b4x wrzuc to # # Changelog # 12/07/2010 - Login URL changed. # 07/12/2009 - Problem with high RAM usage fixed. [submitted by pol007] # # Thanks pol007 (first bug!) yay! # # Required HTTP::Request::Common # # cpan install HTTP::Request::Common use strict; use warnings; use IO::Socket; use HTTP::Request::Common; use LWP::UserAgent; use HTTP::Cookies; $HTTP::Request::Common::DYNAMIC_FILE_UPLOAD = 1; my ($FILE, $USERNAME, $PASSWORD, $session_id); $FILE = $ARGV[0] || ""; $USERNAME = $ARGV[1] || ""; $PASSWORD = $ARGV[2] || ""; unless ($FILE) { die "Syntax: $0 [login] [haslo]\n" } unless (-e $FILE) { die "Plik nie zostal odnaleziony.\n" } &wyslijplik($FILE, $USERNAME, $PASSWORD); sub wyslijplik { my $file = shift || die; my $username = shift || ""; my $password = shift || ""; my $session_upload = shift || ''; my $server = losuj_server(); unless ($username or $password) { print "Wysyłanie pliku jako anonim.\n"; my $session_upload = ''; } else { $session_upload = zaloguj_sie($username, $password); } print "Rozpoczynam wysylanie pliku: $file.\n"; my $ua = LWP::UserAgent->new(env_proxy => 1, keep_alive => 1, agent => 'Mozilla/5.0', ); my $req = POST $server, Content_Type => 'multipart/form-data', Content => [ WrzucTo => $session_upload, MAX_FILE_SIZE => '838860800', plik => [$file] ]; my $response = $ua->request($req); if($response->content =~ 'error') { print "Wystapil blad podczas wgrywania pliku, sprobuj ponownie. Jesli blad sie potworzy poinformuj administratora.\n"; } else { open(O,">>wrzucto.txt") or die "Nie moge zapisac do pliku wrzucto.txt: $!\n"; print O "$file\n".$response->content."\n\n"; close(O); print "Plik zostal wgrany pomyslnie, linki do pliku znajdziesz w pliku wrzucto.txt\n\n====DZIEKUJEMY ZA SKORZYSTANIE===="; } } sub zaloguj_sie { my $username = shift || die; my $password = shift || die; my $wt_login = LWP::UserAgent->new; my $req = POST 'http://www.wrzuc.to/konto/zaloguj', Content_Type => 'multipart/form-data', Content => [ login => $username, password => $password ]; my $response = $wt_login->request($req); my $wt_cookie = $response->header('Set-Cookie'); my $re= '(WrzucTo)(=).*?((?:[a-zA-Z0-9]*))'; if ($wt_cookie =~ m/$re/is) { $session_id = $3; } else { die "Wystapil blad podczas logowania - sprobuj ponownie\n"; } if($response->header('Location') =~ "http://www.wrzuc.to/moje-konto/") { print "Zalogowano sie pomyslnie na konto: $username.\n"; } else { die "Podano bledne dane - sprawdz poprawnosc danych i sprobuj ponownie.\n"; } return $session_id; } sub losuj_server { my $wt_agent = LWP::UserAgent->new; my $server_link = $wt_agent->get('http://www.wrzuc.to/ajax/server'); print "Plik zostanie wgrany na serwer: ".$server_link->content."\n"; return $server_link->content; }