#!/usr/local/bin/perl5
#

$dbase = "/www/htdocs/nspixp/nspixp.db";
$lockfile = "/tmp/nspixp.lock";

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>NSPIXP-2 Netmask Change</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";

use DB_File;
use Fcntl ':flock';

open(LOCK, ">> $lockfile") || die "Can not open lockfile";
flock(LOCK, LOCK_EX);

tie %db, 'DB_File', $dbase, O_RDONLY;

$t = localtime;
print "<H2 ALIGN=\"CENTER\">Current Status of NSPIXP2 Netmask Change</H2>\n";

print "<H4 ALIGN=\"CENTER\">As of $t</H4>\n";

print "<TABLE BORDER=1 ALIGN=\"CENTER\">\n";
print "<TR>";
print "<TD ALIGN=\"CENTER\">Address</TD>";
print "<TD ALIGN=\"CENTER\">AS Number</TD>";
print "<TD ALIGN=\"CENTER\">AS Name</TD>";
print "<TD ALIGN=\"CENTER\">Status</TD>";
print "<TD ALIGN=\"CENTER\">Operator</TD>";
print "<TD ALIGN=\"CENTER\">Time of Last Change</TD>";
print "</TR>\n";

$notyet = 0; $notoperational = 0; $done = 0; $notyetack = 0;
$disconnected = 0;
$n = 0;

for ($i = 1; $i < 128; $i++) {
	next unless (defined($db{$i}));
	print "<TR>\n";
	@f = split(/\t/, $db{$i});
	if ($n++ % 2 == 0) {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#ffffff\">202.249.2.$i</TD>";
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#ffffff\">AS$f[0]</TD>";
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#ffffff\">$f[1]</TD>";
	} else {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#dddddd\">202.249.2.$i</TD>";
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#dddddd\">AS$f[0]</TD>";
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#dddddd\">$f[1]</TD>";
	}
	if ($f[2] eq "N") {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"RED\"><FONT COLOR=\"WHITE\">Not Yet</FONT></TD>";
		$notyet++;
	} elsif ($f[2] eq "Y") {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"BLACK\"><FONT COLOR=\"WHITE\">Already Disconnected</FONT></TD>";
		$disconnected++;
	} elsif ($f[2] eq "X") {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"BLUE\"><FONT COLOR=\"WHITE\">Not yet In Operation</FONT></TD>";
		$notoperational++;
	} elsif ($f[2] eq "D") {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"LIGHTGREEN\">done</TD>";
		$done++;
	} else {
	}
	if (defined($f[3])) {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"WHITE\">$f[3]</TD>";
	} else {
		$notyetack++;
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#c0c0f0\">unknown</TD>";
	}
	if (defined($f[4])) {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"WHITE\">$f[4]</TD>";
	} else {
		print "<TD ALIGN=\"CENTER\" BGCOLOR=\"#c0c0f0\">unknown</TD>";
	}
	print "</TR>\n";
}
print "</TABLE>\n";

untie %db;
close(LOCK);
flock(LOCK, LOCK_UN);
unlink($lockfile);

$notyet -= $notyetack;

print "<H2 ALIGN=\"CENTER\">Current Summary</H2>\n";
print "<TABLE BORDER=1 ALIGN=\"CENTER\" BGCOLOR=\"#ffffff\"><TR>\n";
print "<TD>Not Yet (operator unregistered): $notyetack</TD>";
print "<TD>Not Yet (operator registered): $notyet</TD>";
print "<TD>Not Yet in Operational: $notoperational</TD>";
print "<TD>Already Disconnected: $disconnected</TD>";
print "<TD>Done: $done</TD>";
print "</TR></TABLE>\n";

print "<H2 ALIGN=\"CENTER\">Update Form</H2>\n";
print "<FORM METHOD=\"GET\" ACTION=\"change.cgi\"\n";
print "\tENCTYPE=\"application/x-www-form-urlencoded\"";
print "NAME=\"NSPIXP2 Netmask\">\n";

print "<TABLE BORDER=1 ALIGN=\"CENTER\">\n";
print "<TR>";
print "<TD ALIGN=\"CENTER\">IP Address</TD>";
print "<TD ALIGN=\"CENTER\">AS Number</TD>";
print "<TD ALIGN=\"CENTER\">Password</TD>";
print "<TD ALIGN=\"CENTER\">New Status</TD>";
print "</TR>\n";
print "<TR>";
print "<TD>202.249.2.<INPUT TYPE=\"TEXT\" NAME=\"ADDR\" SIZE=3 MAXLENGTH=4></TD>\n";
print "<TD>AS<INPUT TYPE=\"TEXT\" NAME=\"AS\" SIZE=5 MAXLENGTH=6></TD>\n";
print "<TD><INPUT TYPE=\"PASSWORD\" NAME=\"PASSWORD\" SIZE=10 MAXLENGTH=20></TD>\n";
print "<TD><SELECT NAME=\"OPERATION\">\n";
print "\t<OPTION VALUE=\"N\">Not Yet\n";
print "\t<OPTION VALUE=\"D\">Done\n";
print "\t<OPTION VALUE=\"X\">Not Yet in Operation\n";
print "\t<OPTION VALUE=\"Y\">Already Disconnected\n";
print "</SELECT></TD></TR>\n";
print "</TABLE><BR>";
print "<TABLE BORDER=1 ALIGN=\"CENTER\">\n";
print "<TR>\n";
print "<TD>Operator's Email Address</TD>\n";
print "<TD><INPUT TYPE=\"TEXT\" NAME=\"OPERATOR\" SIZE=30 MAXLENGTH=40></TD>\n";
print "</TR>\n";
print "</TABLE><BR>";
print "<TABLE BORDER=0 ALIGN=\"CENTER\"><TR><TD>";
print "<INPUT TYPE=\"SUBMIT\" NAME=\"SUBMIT\" VALUE=\"SUBMIT\">";
print "</TD></TR></TABLE>\n";

print "</BODY>\n";
print "</HTML>\n";
