X-Git-Url: https://git.treefish.org/wirbrennen/flipacoin.git/blobdiff_plain/71ffe1a4df9e93e659dc842ccc7a9bb4684ed4ee..refs/heads/master:/flipacoin.cgi?ds=sidebyside diff --git a/flipacoin.cgi b/flipacoin.cgi index 408c445..cba07b1 100755 --- a/flipacoin.cgi +++ b/flipacoin.cgi @@ -2,6 +2,7 @@ use DB_File; use CGI; +use HTML::Template; my $COINLIFETIME = 30; @@ -12,24 +13,46 @@ my $requestedaction = $cgi->param('action'); my $coinsindb=0; my $flippedcoinsindb=0; -sub alert { - print "ERROR: @_[0]\n"; +my $template; + +sub setprotocolparam { + { + no warnings 'uninitialized'; + if( length $ENV{HTTPS} ) { + $template->param(PROTOCOL => "https"); + } + else { + $template->param(PROTOCOL => "http"); + } + } +} + +sub printpage { + $template->param(COINLIFETIME => $COINLIFETIME); + $template->param(FLIPPEDCOINSINDB => $flippedcoinsindb); + $template->param(COINSINDB => $coinsindb); + + my $rootloc = $ENV{SCRIPT_FILENAME}; + $rootloc =~ s/$ENV{DOCUMENT_ROOT}//g; + $rootloc =~ s/\/[^\/]*$//g; + $template->param( ROOTURL => $ENV{HTTP_HOST} . $rootloc ); + + print "Content-type: text/html\n\n", $template->output; } -sub printcoin { - print ""; - print ""; - print "http://$ENV{HTTP_HOST}/@_[0]"; - print ""; - print ""; +sub exitalert { + $template = HTML::Template->new(filename => 'alert.html'); + $template->param(ALERTMSG => @_[0]); + printpage(); + exit(); } -sub printresult { +sub translateresult { if ( @_[0] == 0 ) { - print "Heads"; + return "Heads"; } else { - print "Tails"; + return "Tails"; } } @@ -55,34 +78,21 @@ foreach my $key ( keys %coins_db ) } } -print "Content-type: text/html\n\n"; -print ""; -print "
"; -print ""; - print "Creation time: " . localtime($coininfo[0]); - print ""; } -print ""; -print ""; +printpage(); untie(%coins_db);
"; + $template = HTML::Template->new(filename => 'usecoin.html'); + + $template->param(REQUESTEDCOINID => $requestedcoinid); + $template->param(COINCREATIONTIME => localtime($coininfo[0]).""); + setprotocolparam(); if ( $coininfosize == 1 && $requestedaction eq "" ) { - print "Status: Not yet flipped "; - print ""; - print "[flip it]"; - print ""; + $template->param(STATUS_NOTYETFLIPPED => 1); } elsif ( $coininfosize == 1 && $requestedaction eq "flip" ) { $result = int(rand(2)); $coins_db{$requestedcoinid} = $coins_db{$requestedcoinid} . "," . time . "," . $result; - print "Status: Just flipped"; - print "
"; - print "Result: "; - printresult($result); + $template->param(STATUS_JUSTFLIPPED => 1); + $template->param(COINRESULT => translateresult($result)); } elsif ( $coininfosize == 3 ) { - print "Status: Flipped @ " . localtime($coininfo[1]); - print "
"; - print "Result: "; - printresult($coininfo[2]); + $template->param(STATUS_FLIPPED => 1); + $template->param(COINFLIPPEDTIME => localtime($coininfo[1]).""); + $template->param(COINRESULT => translateresult($coininfo[2])); } - - print "