use Apache2::Request;
use ND::Include;
use ND::DB;
+use Tie::File;
+use Fcntl 'O_RDONLY';
use strict;
use warnings FATAL => 'all';
+tie our @PAGES, 'Tie::File', "/var/www/ndawn/code/pages", mode => O_RDONLY or die $!;
+
sub handler {
local $ND::r = shift;
local $ND::req = Apache2::Request->new($ND::r, POST_MAX => "1M");
sub page {
our $DBH = ND::DB::DB();
our $USER = $ENV{'REMOTE_USER'};
- my $error;# = $ND::r->param('page');
+ my $error = '';
chdir '/var/www/ndawn/code';
our $LOG = $DBH->prepare('INSERT INTO log (uid,text) VALUES(?,?)');
- my $page = 'main';
- if ($ND::PAGE =~ /^(main|check|motd|points|covop|top100|launchConfirmation|addintel|defrequest|raids|editRaid|calls|intel|users|alliances|memberIntel|resources|planetNaps)$/){
- $page = $1;
- }
+ $ND::PAGE = 'main' unless grep { /^$ND::PAGE$/ } @PAGES;
our $XML = 0;
- $XML = 1 if param('xml') and $page =~ /^(raids)$/;
+ $XML = 1 if param('xml') and $ND::PAGE =~ /^(raids)$/;
our $AJAX = 1;
if ($XML){
$type = 'text/xml';
$ND::TEMPLATE = HTML::Template->new(filename => "templates/xml.tmpl", cache => 1);
- $ND::BODY = HTML::Template->new(filename => "templates/${page}.xml.tmpl", cache => 1);
+ $ND::BODY = HTML::Template->new(filename => "templates/$ND::PAGE.xml.tmpl", cache => 1);
}else{
- $ND::BODY = HTML::Template->new(filename => "templates/${page}.tmpl", global_vars => 1, cache => 1);
- $ND::BODY->param(PAGE => $page);
+ $ND::BODY = HTML::Template->new(filename => "templates/$ND::PAGE.tmpl", global_vars => 1, cache => 1);
+ $ND::BODY->param(PAGE => $ND::PAGE);
}
-
- unless (my $return = do "${page}.pl"){
- $error .= "<p><b>couldn't parse $page: $@</b></p>" if $@;
- $error .= "<p><b>couldn't do $page: $!</b></p>" unless defined $return;
- $error .= "<p><b>couldn't run $page</b></p>" unless $return;
+ unless (my $return = do "$ND::PAGE.pl"){
+ $error .= "<p><b>couldn't parse $ND::PAGE: $@</b></p>" if $@;
+ $error .= "<p><b>couldn't do $ND::PAGE: $!</b></p>" unless defined $return && defined $!;
+ $error .= "<p><b>couldn't run $ND::PAGE</b></p>" unless $return;
}
unless ($XML){
$ND::TEMPLATE->param(Targets => listTargets());
}
$TEMPLATE->param(Coords => param('coords') ? param('coords') : '1:1:1');
- $TEMPLATE->param(Error => $error);
}
+ $TEMPLATE->param(Error => $error);
$ND::TEMPLATE->param(BODY => $ND::BODY->output);
my $output = $TEMPLATE->output;
print header(-type=> $type, -charset => 'utf-8', -Content_Length => length $output);