#!/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( | PID | Account | Time | State | Filename | Remote host | Kbytes | Local host | \n).
$FTPWHOOUTPUT.
qq(
).
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" .
"\n
\n
\n";
}
################################################################################