X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND.pm;h=e9bc401f83138574447f6e1b9855782effd3d753;hb=83be73d01437ba9841257bb9064314d63fab9487;hp=791d5f096c2170532684a9348408c689630f9e71;hpb=7fec381e300732e503286056289eb91dec6d7dcd;p=ndwebbie.git diff --git a/ND.pm b/ND.pm index 791d5f0..e9bc401 100755 --- a/ND.pm +++ b/ND.pm @@ -23,32 +23,42 @@ use CGI qw/:standard/; use DBI; use DBD::Pg qw(:pg_types); use Apache2::Request; +use Apache2::Response; +use Apache2::RequestUtil; use ND::DB; -use ND::Web::Page; +use NDWeb::Page; use strict; use warnings; $SIG{__WARN__} = sub {$ND::ERROR .= p $_[0]}; -chdir '/var/www/ndawn/code'; +chdir '/var/www/ndawn'; sub handler { - local $ND::r = shift; - local $ND::req = Apache2::Request->new($ND::r, POST_MAX => "1M"); + my $r = shift; + my $req = Apache2::Request->new($r, POST_MAX => "1M"); local $ND::DBH = ND::DB::DB(); local $ND::UID; local $ND::ERROR; - my $page = $ND::req->param('page'); + my $page = $req->param('page'); + $r->no_cache; if ($ENV{'SCRIPT_NAME'} =~ /(\w+)(\.(pl|php|pm))?$/){ $page = $1 unless $1 eq 'index' and $3 eq 'pl'; } - $page = ND::Web::Page->new(PAGE => $page, DBH => $ND::DBH, URI => $ENV{REQUEST_URI}, USER_AGENT => $ENV{HTTP_USER_AGENT}, HTTP_ACCEPT => $ENV{HTTP_ACCEPT}); + $page = NDWeb::Page->new(PAGE => $page, DBH => $ND::DBH, URI => $ENV{REQUEST_URI}, USER_AGENT => $ENV{HTTP_USER_AGENT}, HTTP_ACCEPT => $ENV{HTTP_ACCEPT}, R => $r); $page->render; $ND::DBH->rollback unless $ND::DBH->{AutoCommit}; $ND::DBH->disconnect; + if ($page->{RETURN}){ + if($page->{RETURN} eq 'REDIRECT'){ + $r->headers_out->set(Location => $page->{REDIR_LOCATION}); + $r->status(Apache2::Const::REDIRECT); + $r->rflush; + } + } return Apache2::Const::OK; }