]> ruin.nu Git - ndwebbie.git/blob - ND.pm
757108b7a76b0b42c17339192c15a4f7c1693748
[ndwebbie.git] / ND.pm
1 #!/usr/bin/perl -w -T
2 #**************************************************************************
3 #   Copyright (C) 2006 by Michael Andreen <harvATruinDOTnu>               *
4 #                                                                         *
5 #   This program is free software; you can redistribute it and/or modify  *
6 #   it under the terms of the GNU General Public License as published by  *
7 #   the Free Software Foundation; either version 2 of the License, or     *
8 #   (at your option) any later version.                                   *
9 #                                                                         *
10 #   This program is distributed in the hope that it will be useful,       *
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13 #   GNU General Public License for more details.                          *
14 #                                                                         *
15 #   You should have received a copy of the GNU General Public License     *
16 #   along with this program; if not, write to the                         *
17 #   Free Software Foundation, Inc.,                                       *
18 #   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
19 #**************************************************************************/
20
21 package ND;
22 use CGI qw/:standard/;
23 use DBI;
24 use DBD::Pg qw(:pg_types);
25 use Apache2::Request;
26 use ND::DB;
27 use ND::Web::Page;
28 use strict;
29 use warnings;
30
31 $SIG{__WARN__} = sub {$ND::ERROR .= p $_[0]};
32
33 chdir '/var/www/ndawn/code';
34
35 sub handler {
36         local $ND::r = shift;
37         local $ND::req = Apache2::Request->new($ND::r, POST_MAX => "1M");
38         local $ND::DBH = ND::DB::DB();
39         local $ND::UID;
40         local $ND::ERROR;
41         my $page = $ND::req->param('page');
42
43         if ($ENV{'SCRIPT_NAME'} =~ /(\w+)(\.(pl|php|pm))?$/){
44                 $page = $1 unless $1 eq 'index' and $3 eq 'pl';
45         }
46         $page = ND::Web::Page->new(PAGE => $page, DBH => $ND::DBH, URI => $ENV{REQUEST_URI}, USER_AGENT => $ENV{HTTP_USER_AGENT});
47         $page->render;
48
49         $ND::DBH->rollback unless $ND::DBH->{AutoCommit};
50         $ND::DBH->disconnect;
51
52         return Apache2::Const::OK;
53 }
54
55 1;