#!/usr/bin/perl use DB_File; use CGI; my $COINLIFETIME = 30; my %coins_db; my $cgi = CGI->new(); my $requestedcoinid = $cgi->param('coinid'); my $requestedaction = $cgi->param('action'); my $coinsindb=0; my $flippedcoinsindb=0; sub alert { print "ERROR: @_[0]\n"; } sub printcoin { print ""; print ""; print "http://$ENV{HTTP_HOST}/@_[0]"; print ""; print ""; } sub printresult { if ( @_[0] == 0 ) { print "Heads"; } else { print "Tails"; } } if (-e "var/coins.db") { tie (%coins_db, DB_File, "var/coins.db") || die ("Cannot open var/coins.db"); } else { tie (%coins_db, DB_File, "var/coins.db", O_CREAT|O_RDWR, 0640) || die ("Cannot create or open var/coins.db"); } foreach my $key ( keys %coins_db ) { @value = split(/,/, $coins_db{$key}); if ( time-$value[0] > $COINLIFETIME*(60*60*24) ) { delete $coins_db{$key}; } $coinsindb++; if ( ($#value + 1) == 3 ) { $flippedcoinsindb++; } } print "Content-type: text/html\n\n"; print ""; print "
"; print "";
print "Creation time: " . localtime($coininfo[0]);
print "
";
if ( $coininfosize == 1 && $requestedaction eq "" ) {
print "Status: Not yet flipped ";
print "";
print "[flip it]";
print "";
}
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);
}
elsif ( $coininfosize == 3 ) {
print "Status: Flipped @ " . localtime($coininfo[1]);
print "
";
print "Result: ";
printresult($coininfo[2]);
}
print "";
}
print "";
print "";
untie(%coins_db);
exit;