package nzbget::enqueue; use strict; use Apache2::Const -compile => qw(OK REDIRECT); use CGI qw(:standard); use local::db; use local::nzbget; use utf8; use LWP::Simple; use local::user; sub handler { my $user = new local::user(%ENV); my $nzbget = new local::nzbget; die "Kein name angegeben" if not param('name'); die 'Kein freier Speicher' if $user->obj->quota_used>$user->obj->quoata; my $cat = local::db::category->retrieve(name=>param('cat')); die "Ungültige category" if not $cat; my $category = $cat->name(); # my ($size) = param('description') =~ m/(.*)<\/b>/; my $size = 0; my $nzb; my $title = param('title'); if (param('url')) { $nzb = get(param('url')); die "Couldn't get ".param('url') unless $nzb; } elsif ($title = param('file')) { my $upload_filehandle = upload("file"); while ( <$upload_filehandle> ) { $nzb.=$_; } } die "Could not get nzb" if not $nzb; use MIME::Base64; $nzb = encode_base64($nzb); my $download = local::db::download->insert({owner=>$user->get_id(),name=>param('name'),category=>$cat->category_id(),description=>$title,size=>$size}); my $resp = $nzbget->send_request('append',RPC::XML::string->new($download->download_id()),RPC::XML::string->new($category),RPC::XML::boolean->new(0),RPC::XML::string->new($nzb)); if ($resp) { print CGI::redirect('download'); return Apache2::Const::REDIRECT; } else { print header; print start_html('nzbget enqueue error'); print 'Error'; print end_html(); return Apache2::Const::OK; } } 1;