X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=index.pl;h=c0ab40fde76d2dffdf92943ec947832f18ed214b;hb=d01a291b696be6998db7ea2e9e37e790b529d43f;hp=e33d5094b19fb635f82237e48a12538d8ea91d2b;hpb=1a2401c5ecba4d15756cadf0229d203ec5d6de54;p=ndwebbie.git diff --git a/index.pl b/index.pl index e33d509..c0ab40f 100755 --- a/index.pl +++ b/index.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -w -T #************************************************************************** # Copyright (C) 2006 by Michael Andreen * # * @@ -23,56 +23,113 @@ use CGI qw/:standard/; use HTML::Template; use DBI; use DBD::Pg qw(:pg_types); +#use Apache2::Request; use strict; -my $cgi = new CGI; - -chdir $ENV{'DOCUMENT_ROOT'}; +local $ND::DBH; +local $ND::USER; +local $ND::UID; +local $ND::PLANET; +local $ND::TEMPLATE; +local $ND::BODY; +local $ND::TICK; our $DBH = undef; -our $UID = undef; -our $PLANET = undef; -our $TEMPLATE = undef; -our $TICK = undef; +our $USER = $ENV{'REMOTE_USER'}; +my $error;# = $ND::r->param('page'); + +if ($ENV{'DOCUMENT_ROOT'} =~ m{((\w|/)+)}){ + chdir $1; +} -$ND::TEMPLATE = HTML::Template->new(filename => 'skel.tmpl'); +our $TEMPLATE = HTML::Template->new(filename => 'templates/skel.tmpl', global_vars => 1, cache => 1); -for my $file ("db.pl"){ +for my $file ("db.pl","include.pl"){ unless (my $return = do $file){ - warn "couldn't parse $file: $@" if $@; - warn "couldn't do $file: $!" unless defined $return; - warn "couldn't run $file" unless $return; + print "couldn't parse $file: $@" if $@; + print "couldn't do $file: $!" unless defined $return; + print "couldn't run $file" unless $return; } } -($UID,$PLANET) = $DBH->selectrow_array('SELECT uid,planet FROM users WHERE username = ?' +our ($UID,$PLANET) = $DBH->selectrow_array('SELECT uid,planet FROM users WHERE username = ?' ,undef,$ENV{'REMOTE_USER'}); -($TICK) = $DBH->selectrow_array('SELECT tick()',undef); -$TEMPLATE->param(TICK => $TICK); +our ($TICK) = $DBH->selectrow_array('SELECT tick()',undef); -print header; +my $query = $DBH->prepare('SELECT groupname,attack,gid from groupmembers NATURAL JOIN groups WHERE uid = ?'); +$query->execute($UID); -my $page = 'main.pl'; -if (param('page') =~ /^(main)$/){ - $page = "$1.pl"; +our $ATTACKER = 0; +undef our %GROUPS; +while (my ($name,$attack,$gid) = $query->fetchrow()){ + $GROUPS{$name} = $gid; + $ATTACKER = 1 if $attack; } -unless (my $return = do $page){ - warn "couldn't parse $page: $@" if $@; - warn "couldn't do $page: $!" unless defined $return; - warn "couldn't run $page" unless $return; + +our $LOG = $DBH->prepare('INSERT INTO log (uid,text) VALUES(?,?)'); + +my $page = 'main'; +if (param('page') =~ /^(main|check|motd|points|covop|top100|launchConfirmation|addintel|defrequest|raids|editRaid|calls|intel|users|alliances|memberIntel|resources|planetNaps)$/){ + $page = $1; +} + +our $XML = 0; +$XML = 1 if param('xml') and $page =~ /^(raids)$/; + +our $AJAX = 1; + +my $type = 'text/html'; +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); +}else{ + $ND::BODY = HTML::Template->new(filename => "templates/${page}.tmpl", global_vars => 1, cache => 1); + $ND::BODY->param(PAGE => $page); } -print $TEMPLATE->output; + +unless (my $return = do "${page}.pl"){ + $error .= "

couldn't parse $page: $@

" if $@; + $error .= "

couldn't do $page: $!

" unless defined $return; + $error .= "

couldn't run $page

" unless $return; +} + +unless ($XML){ + my $fleetupdate = $DBH->selectrow_array('SELECT landing_tick FROM fleets WHERE uid = ? AND fleet = 0',undef,$UID); + + + $TEMPLATE->param(Tick => $TICK); + $TEMPLATE->param(isMember => (($TICK - $fleetupdate < 24) || isScanner()) && $PLANET && isMember()); + $TEMPLATE->param(isHC => isHC()); + $TEMPLATE->param(isDC => isDC()); + $TEMPLATE->param(isBC => isBC()); + $TEMPLATE->param(isIntel => isBC()); + $TEMPLATE->param(isAttacker => $ATTACKER && (!isMember() || ((($TICK - $fleetupdate < 24) || isScanner()) && $PLANET))); + if ($ATTACKER && (!isMember() || ((($TICK - $fleetupdate < 24) || isScanner()) && $PLANET))){ + $ND::TEMPLATE->param(Targets => listTargets()); + } + $TEMPLATE->param(Coords => param('coords') ? param('coords') : '1:1:1'); + $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); +print $output; $DBH->disconnect; $DBH = undef; $UID = undef; +$USER = undef; $PLANET = undef; $TEMPLATE = undef; $TICK = undef; +undef %GROUPS; +$ND::BODY = undef; -exit; +1;