X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND.pm;h=e9bc401f83138574447f6e1b9855782effd3d753;hb=8250eb360c341a4eeaa76e5e3fc0f57cf0014a60;hp=50629e8efab535a072d2558359579659b1f959bd;hpb=256609e2df07f5dd40a33ace6163d2b72a269246;p=ndwebbie.git diff --git a/ND.pm b/ND.pm index 50629e8..e9bc401 100755 --- a/ND.pm +++ b/ND.pm @@ -23,29 +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}); + $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; }