#!/usr/local/bin/perl
$|=1;
BEGIN { require "../CGI.pm"; import Module CGI; }
$query = new CGI;
$host = $query->param('host');
if ($host) {
  @tempHost=split(" ",$host);
  $ipAddr=$tempHost[0];
}
else {
    if ($ENV{"HTTP_X_FORWARDED_FOR"}) {
        @forward=split(",",$ENV{"HTTP_X_FORWARDED_FOR"});
        $ipAddr=$forward[0];
    }
    else {
        $ipAddr=$ENV{"REMOTE_ADDR"};
    }
}
print "Content-type: text/html\n\n" ;
print "<html><head><title>Traceroute $ipAddr</title></head><body>";
print "<center><h2><font face=\"Times New Roman\">Traceroute</font></h2></center><hr><p>";
print <<FR;
<form method=post action="tr.cgi">
IP Address or Host Name:<br>
<input type=text size=40 name="host"> 
<input  type=submit> <input type=reset>
</form>
FR
open TR ,"/usr/sbin/traceroute $ipAddr |";
print "<hr><p><center><TABLE width=90% cellpadding=2 bgcolor=#DDDDFF align=center border=2><caption><h3>Traceroute From www.im.ncnu.edu.tw to <font color=red>$ipAddr</font></h3></caption>";
print "<TR><th bgcolor=#FFFFBB align=center></th><th bgcolor=#FFFFBB align=center>Host Name</th><th bgcolor=#FFFFBB align=center>IP Address</th><th bgcolor=#FFFFBB align=center>Round Trip Time</th></tr>";
while (<TR>) {
if (/([\s,\d]\d*)\s+([^*]*)\s\((.*)\)\s*(.*)$/) {
print "<tr><td align=center>$1</td><td align=center>$2</td><td align=center>$3</td><td align=center>$4</td></tr>\n";
}
else {
   if (/([\s|\d]\d*)\s+\*\s(.*)\s\((.*)\)\s*(.*)$/) {
      print "<tr><td align=center>$1</td><td align=center>$2</td><td align=center>$3</td><td align=center>* $4</td></tr>\n";
   }
   else {
      if (/([\s|\d]\d*)\s+\*\s\*\s(.*)\s\((.*)\)\s*(.*)$/) {
         print "<tr><td align=center>$1</td><td align=center>$2</td><td align=center>$3</td><td align=center>* * $4</td></tr>\n";
      }
      else {
         if (/([\s|\d]\d*)\s+\*\s\*\s\*/) {
            print "<tr><td align=center>$1</td><td align=center></td><td align=center></td><td align=center>* * *</td></tr>\n";
         }
         else {
            if (/unknown host/) {
               print "</table><p>";
               print "<TABLE width=90% cellpadding=2 bgcolor=#DDDDFF align=center border=2><tr><th align=center><font size=+2 color=green>Unknown Host:</font><font size=+2 color=red> $ipAddr</font></th></tr>"
            }
            else {
               print "<tr><td colspan=4>$_</td></tr>";
            }
         }
      }
   }
}
}
print "</TABLE></center></body></html>";
close TR;
