#!/usr/bin/perl -w print "Content-type: text/html \n\n"; #Before browser times out. use CGI; my $REQ = new CGI; my $HTML = ""; my $GET = $ENV{'QUERY_STRING'}; my $TASK = (defined $REQ->param('Task')) ? $REQ->param('Task') : "first_page"; my $OPTION = (defined $REQ->param('Option')) ? $REQ->param('Option') : ""; my @querydata = split /&/, $GET; ################################################################################ # MAIN ROUTINE ################################################################################ $|=1; $|=0; if ($TASK eq "first_page" and $querydata[0] ne "show_ftp") { &write_html_header; &first_page; &write_html_content; &write_html_footer; } elsif ($TASK eq "show_ftp" or $querydata[0] eq "show_ftp") { if ($OPTION eq "repeat" or $querydata[1] eq "repeat") { $OPTION = "#ftp.cgi?show_ftp&repeat\">"; } &write_html_header; &show_ftp; &write_html_footer; } exit(1); ################################################################################ # SUBROUTINES ################################################################################ sub write_html_header { print qq(\n). qq(\n). qq(\n). qq(TheGeekClub FTP\n). qq(\n). $OPTION. qq(\n); } ################################################################################ sub write_html_footer { print qq(\n); } ################################################################################ sub write_html_content { print qq(\n). $HTML. qq(\n); } ################################################################################ sub show_ftp { $garbage = ""; $FTPWHOOUTPUT = ""; $newtext = ""; open GARBAGE, "/usr/bin/ftpwho -s |" or die "Can't run ftpwho: $!"; while (read (GARBAGE,$newtext,1)) { $garbage .= $newtext; } @users = split /\|/, $garbage; $i = ""; for ($i = 0; $i <= $#users; $i++){ if ($users[$i] eq "##") { @speed = split /\s+/, $users[($i + 10)]; @pid = split /\s+/, $users[($i - 1)]; $FTPWHOOUTPUT = $FTPWHOOUTPUT. "".$pid[1]."".$users[$i]."".$users[($i + 1)]."".$users[($i + 2)]."".$users[($i + 3)]."".$users[($i + 4)]."".$users[($i + 7)]."/".$users[($i + 8)]." (".$users[($i + 9)]."% - ".$speed[0]." KB/s):"; } } print qq(\n). qq(\n). $FTPWHOOUTPUT. qq(
PIDAccountTimeStateFilenameRemote hostKbytesLocal host
). qq(\n); } ################################################################################ sub first_page { $HTML = $HTML . "Welcome to the FTP server browser. Check refresh if you want the info page to refresh and then click \"Go\"\n" . "
#ftp.cgi\" method=\"post\">\n". "\n". "Refresh every 25 seconds? \n" . "\n
\n
\n
\n"; } ################################################################################