使用了一下,的确可以起到它的作用。UNIX平台的虚拟主机用户如果遇到这样的情况,不妨试试
作者这样说明的: ------------------------------------------------------------- 在你的CGI空间里,由CGI程序生成的一些数据文件,通过FTP无法删除了。这是因为CGI生成的文件的属主是WWW服务进程的拥有者而不是你。怎么办呢?解铃还需系铃人,还是要通过WWW通过CGI程序去删除。这个小工具就是干这个的,整个程序的核心就是一条UNIX删除文件的命令RM,由sylion编写。本程序仅适用于UNIX类系统。 --------------------------------------------------------------
代码:
#!/usr/bin/perl
########################################################################################## # 文件删除工具 V 0.90 # # 作者:sylion # # E-mail:sylion@chinamail.com # # 站址:http://sylion.yeah.net # ########################################################################################## $main_dir = "."; #本程序所在的绝对路径 $cgi_url = "./delete.cgi"; #delete.cgi 的URL路径 $pass = "1234"; #密码 ###########################################################################################
&parseArgument;
sub parseArgument { if($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
@pairs = split(/&/,$buffer); foreach $pair( @pairs ) { ($name,$value)=split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; unless ($name eq 'comments') { $value =~ s/<([^>]|\n)*>//g; }
$FORM{$name} = $value; } }
if($FORM{'action'} eq ""){ &pass_check; } elsif($FORM{'action'} eq "delete_id"){ if($FORM{'passwd'} eq $pass){ $password = $FORM{'passwd'}; &delete_id; } else{ &error_pass; } }
sub pass_check{ print "Content-type: text/html\n\n";
print <<END; <html> <head><title>文件删除工具</title></head> <body bgcolor="#FFFCFE" text="black" link="#000099" vlink="#000099" alink="red"> <form method=post acton=$cgi_url> <input type=hidden name=action value="delete_id"> <div align=center> <table border=0> <tr> <td> 要删除的文件名或目录名</td><td><input type=text name=id>(允许使用"../"指定父级目录)</td> </tr> <tr> <td>管理员密码</td><td><input type=password name=passwd></td> </tr> <tr><td colspan=2 align=center> <input type=submit value="确认删除"> </td> </tr> </table></div> </form> </body> </html> END
}
sub delete_id{ if($FORM{'id'} eq ""){ &error_id; } if(-e "$main_dir/$FORM{'id'}"){
if($password eq $pass){ $id = $FORM{'id'};
print `rm -rf $main_dir/$id`;
print "Content-type: text/html\n\n";
print <<END; <HTML> <HEAD><title>成功!!!</title></HEAD> <body bgcolor="#FFFCFE" text="black" link="#000099" vlink="#000099" alink="red"> <center> <font color=red>$id</font> 已经删除<p> 你可以通过FTP查看命令的执行情况。 </center> </body> </html> END } else{ &error_pass; } } else{ &error_id; } }
sub error_pass{ print "Content-type: text/html\n\n";
print <<END; <html> <head><title>密码错误</title></head> <body bgcolor="#FFFCFE" text="black" link="#000099" vlink="#000099" alink="red"> <center> 密码错误!!!<br> 如果你不是管理员,请马上退出。<br> </center> <p align=center> <a href="javascript:history.go(-1)"><font size=-1>BACK</font></a> </p> </body> </html> END
}
sub error_id{ print "Content-type: text/html\n\n";
print <<END; <html> <head><title>没有指定文件或目录名</title></head> <body bgcolor="#FFFCFE" text="black" link="#000099" vlink="#000099" alink="red"> <center> 没有指定文件名或目录名!!!<br> </center> <p align=center> <a href="javascript:history.go(-1)"><font size=-1>BACK</font></a> </p> </body> </html> END exit; } exit;
[此贴被 咖啡╃泡面(aoming) 在 03月19日00时41分 编辑过]
|