package nzbget::main; use strict; use warnings FATAL => 'all'; no warnings 'redefine'; BEGIN { $SIG{__DIE__} = \&handle_errors; } use Apache2::RequestRec (); use Apache2::RequestIO (); use Apache2::Const -compile => qw(OK); use nzbget::list; use nzbget::download; use nzbget::cancel; use nzbget::enqueue; use nzbget::log; use nzbget::pre_enqueue; use nzbget::read; use nzbget::remove; use nzbget::search; use nzbget::menu; use nzbget::search_upload; use ModPerl::Util; sub handle_errors { # die @_ if $^S; my $msg = shift; # print "Content-type: text/plain\n\n"; print $msg; ModPerl::Util::exit(); return; } my %modules = ( download => \&nzbget::download::handler, download_1 => \&nzbget::list::handler, download_2 => \&nzbget::list::handler, cancel=> \&nzbget::cancel::handler, enqueue=> \&nzbget::enqueue::handler, log=> \&nzbget::log::handler, pre_enqueue=> \&nzbget::pre_enqueue::handler, read=> \&nzbget::read::handler, remove=> \&nzbget::remove::handler, search=> \&nzbget::search::handler, search_1=> \&nzbget::search_upload::handler, menu=> \&nzbget::menu::handler, ); sub handler { my $r = shift; my $module = $ENV{REQUEST_URI}; $module =~ s'.*/''; $module =~ s'\?.*''; if ($modules{$module}) { return $modules{$module}->($r); } else { $r->content_type('text/plain'); print "Unknown action $module ($ENV{REQUEST_URI})\n"; return Apache2::Const::OK; } } 1;