📄 attachadmin.cgi
字号:
#!/usr/bin/perl
#############################################################
# Attachment Admin Script for LB5000
#
# Writed by RoyRoy http://www.LeoHacks.com
# Version Beta 2.5 Build 1010
#
# Require LB3000 Ver:all version of XP and MX
#
# -LB5000 Support Web Site
# http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
# http://www.LeoHacks.com/ 官方LeoBoard Hacks开发站点
# http://www.hennlong.idv.tw/leo/ 官方繁体版雷傲论坛
#
#############################################################
BEGIN {
$LBPATH = '.';
my $pgm = $0;
$pgm =~s/\\/\//g;
$pgm =~s/^.*\/([^\/]+)$/$1/g;
unless (-e $LBPATH.'/'.$pgm) {
foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV{'PATH_TRANSLATED'}) {
s!\\!/!g; s/^(.*)\/[^\/]+$/$1/g;
if (-e $_ . '/' .$pgm) { $LBPATH = $_; last; }
}
}
unshift (@INC, "$LBPATH");
}
use LBCGI;
use File::Copy;
$LBCGI::POST_MAX=10000;
$LBCGI::DISABLE_UPLOADS = 1;
$LBCGI::HEADERS_ONCE = 1;
require "data/boardinfo.cgi";
require "lbadmin.lib.pl";
require "lb.lib.pl";
$|++; # Unbuffer the output
#################--- Begin the program ---###################
$maxtopics=12; #for MX,remove if you using XP
$thisprog = "attachadmin.cgi";
$query = new LBCGI;
&ipbanned; #封杀一些 ip
$action = $query -> param('action');
$action = &unHTML("$action");
#Global
$forum = $query -> param('forum');
$forum = &unHTML("$forum");
$topic = $query -> param('topic');
$topic = &unHTML("$topic");
$reply = $query -> param('reply');
$reply = &unHTML("$reply");
$eachp = $query -> param('eachp');
$eachp = &unHTML("$eachp");
$start = $query -> param('start');
$start = &unHTML("$start");
#Top
$sortt = $query -> param('sortt');
$aord = ($query -> param('aord') eq "a")?"a":"d";
#Move
$nforum = $query -> param('nforum');
$nforum = &unHTML("$nforum");
$ntopic = $query -> param('ntopic');
$ntopic = &unHTML("$ntopic");
$nreply = $query -> param('nreply');
$nreply = &unHTML("$nreply");
#For Mult Attachmant
$count = $query -> param('count');
$count = &unHTML("$count");
#v2.0
$pageaction = ($query -> param('pageaction'))?1:0;
$inmembername = $query->cookie("adminname");
$inpassword = $query->cookie("adminpass");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
$inpassword =~ s/[\a\f\n\e\0\r\t\|\@\;\#\{\}\$]//isg;
my %Mode = ('deleteattach' => \&deleteattach,'moveattach' => \&moveattach,'copyattach' => \©attach,
'delete_no_topic' => \&delete_no_topic,'multdelete' => \&multdelete);#v3.5
$pageaction = 1 if(!$Mode{$action});#v2.0
#################--- Main program ---###################
&getadmincheck;
print header(-charset=>gb2312);
if(!$pageaction) {
&getmember("$inmembername");
print qq~<html>
<head>
<title>LB5000 - 论坛管理中心</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
A:visited{TEXT-DECORATION: none}
A:active{TEXT-DECORATION: none}
A:hover{TEXT-DECORATION: underline overline}
A:link{text-decoration: none;}
.t{LINE-HEIGHT: 1.4}
TD,DIV,form ,OPTION,P,TD,BR{FONT-FAMILY: 宋体; FONT-SIZE: 9pt}
INPUT{BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 1px; PADDING-LEFT: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 9pt; BORDER-LEFT-COLOR: #cccccc; BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: #cccccc; PADDING-BOTTOM: 1px; BORDER-TOP-COLOR: #cccccc; PADDING-TOP: 1px; HEIGHT: 18px; BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #cccccc}
textarea, select {border-width: 1; border-color: #000000; background-color: #efefef; font-family: 宋体; font-size: 9pt; font-style: bold;}
</style>
</head>
<body bgcolor="#555555" topmargin=0 leftmargin=0>
<table width=100% cellpadding=6 cellspacing=0 border=0 height="100%" style="border:1 solid #555555;">~;
if ((($membercode eq "ad") || ($membercode eq "smo")) && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
$Mode{$action}->();
} else {
&erroroutsmall("请先登入管理中心!");
}
print qq~<tr><td bgcolor="#FFFFFF" align=right valign="bottom" height="40"><a href="http://www.LeoHacks.com" target="_blank" title="官方LeoBoard Hacks开发站点"><font color=#bbbbbb>ATTACHA for LBXP Beta 3.5</font></a><br><font color=#bbbbbb>Copyright © 2002 RoyRoy All rights reserved</font></td></tr></table>~;
} else {
&admintitle;
&getmember("$inmembername");
if ((($membercode eq "ad") || ($membercode eq "smo")) && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
print qq~
<tr><td bgcolor="#333333"><font color="#FFFFFF">
<b>欢迎来到论坛管理中心 / 文章附件管理器</b>
</td></tr>~;
if($Mode{$action}){#v2.0
$Mode{$action}->();
}else{
&toppage;
}
print qq~<tr><td bgcolor="#FFFFFF" align=right valign="bottom" height="80"><a href="http://www.LeoHacks.com" target="_blank" title="官方LeoBoard Hacks开发站点"><font color=#bbbbbb>ATTACHA for LBXP Beta 3.5</font></a><br><font color=#bbbbbb>Copyright © 2002 RoyRoy All rights reserved</font></td></tr></table></td></tr></table>~;
} else {
&adminlogin;
}
}
sub delete_no_topic{#v2.0
$attachdir="${imagesdir}usr/$forum";
if($forum ne ""){
if(!-d $attachdir){
&errorout("管理程式出错","找不到附件目录 - $attachdir");return;
}
}
print qq~
<tr>
<td bgcolor="#EEEEEE" align=center>
<font color="#990000"><b>删除丢失主题的附件</b>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" align=center colspan=2><table width=90% cellspacing="0" cellpadding="2">
<tr><td align="center" bgcolor="#DDDDDD"><b style="color:blue">附件名称</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">附件容量</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">上傳日期</b></td><td align="center" width="30%" bgcolor="#DDDDDD"><b style="color:blue">已删除</b></td></tr>
~;
opendir(DIR,"$attachdir");
@attachfiles=grep(/^$forum\_/,readdir(DIR));
closedir(DIR);
chomp @attachfiles;
$allattachcount=@attachfiles;
$start=0 if(!$start);
$end=$start+$eachp;
$end=$allattachcount if($end > $allattachcount);
$j=$start+1;
$k=$start;
for($i=$start;$i<$end;$i++){
$filefullname=$attachfiles[$i];
next if($filefullname eq "");
$filepath="$attachdir/".$filefullname;
my @filename=split(/\./,$filefullname);
my($forumid,$topicid,$relyid)=split(/\_/,$filename[0]);
$relyid=0 if(!$relyid);
$fileext=pop(@filename);
$filename=join(".",@filename);
$filecount=$filename[1];
$filecount=0 if(!$filecount);
$filesize=(stat("$filepath"))[7];
$filelastmod=(stat("$filepath"))[9];
$lastmoddate=&longdate($filelastmod);
@checktopic=&getpl($forumid,$topicid);
unlink($filepath) if($#checktopic == 0);
$deleted=(!-e $filepath)?'<font color="red">TRUE</font>':'<font color="blue">FALSE</font>';
print qq~
<tr><td align="left">$filefullname</td><td align="right">$filesize bytes</td><td align="right">$lastmoddate</td><td align="center">$deleted</td></tr>
~;
$attachcount++;
$k++;
}
if($end != $allattachcount){
print qq~
<tr><td align="center" colspan="4" bgcolor="#EEEEEE"><a href="$thisprog?action=delete_no_topic&forum=$forum&eachp=$eachp&pageaction=1&start=$end">繼續删除本论坛中主题丢失的附件</a><meta http-equiv="refresh" content="2; url=$thisprog?action=delete_no_topic&forum=$forum&eachp=$eachp&pageaction=1&start=$end"></td></tr>~;
}else{
print qq~
<tr><td align="center" colspan="4" bgcolor="#EEEEEE"><a href="$thisprog?forum=$forum&eachp=$eachp">本论坛中主题丢失的附件已全部删除,按此返回</a><meta http-equiv="refresh" content="2; url=$thisprog?forum=$forum&eachp=$eachp"></td></tr>~;
}
print qq~
<tr><td align="center" colspan="2" bgcolor="#EEEEEE">该分论坛共有附件 $allattachcount 个 [$j - $k]</td><td align="center" bgcolor="#EEEEEE" colspan="2"></td></tr>
</table>
</td>
</tr>~;
}
sub multdelete{#v3.5
$attachdir="${imagesdir}usr/$forum";
if($forum ne ""){
if(!-d $attachdir){
&errorout("管理程式出错","找不到附件目录 - $attachdir");return;
}
}
print qq~
<tr>
<td bgcolor="#EEEEEE" align=center>
<font color="#990000"><b>删除复数附件</b>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" align=center colspan=2><form action="$thisprog" method=post name=form>
<input type="hidden" name="forum" value="$forum">
<input type="hidden" name="start" value="checked">
<input type="hidden" name="pageaction" value="1">
<input type="hidden" name="action" value="multdelete">
<input type="hidden" name="eachp" value="$eachp">
<table width=90% cellspacing="0" cellpadding="2">
<tr><td align="center" bgcolor="#DDDDDD"><b style="color:blue">附件名称</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">附件容量</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">上傳日期</b></td><td align="center" width="30%" bgcolor="#DDDDDD"><b style="color:blue">相关文章</b></td><td align="center" width="5" bgcolor="#DDDDDD"><b style="color:blue">选</b></td></tr>
~;
$allattachcount = 0;
$delete_array = $query -> param('delete_array');
if($delete_array ne ""){
@delete_array = $query -> param('delete_array');
$allattachcount = @delete_array;
}
foreach(@delete_array){
$filefullname=$_;
next if($filefullname eq "");
$filepath="$attachdir/".$filefullname;
my @filename=split(/\./,$filefullname);
$fileext=pop(@filename);
$filename=join(".",@filename);
$filecount=$filename[1];
$filecount=0 if(!$filecount);
$filesize=(stat("$filepath"))[7];
$filelastmod=(stat("$filepath"))[9];
$lastmoddate=&longdate($filelastmod);
my($forumid,$topicid,$relyid)=split(/\_/,$filename[0]);
$relyid=0 if(!$relyid);
@checktopic=&getpl($forumid,$topicid);
if($#checktopic == 0){
$topiclink=qq(相关文章已经丢失);
}else{
($topictitle,$topisstarter,$topicposttime,$topicreply,$topicview)=@checktopic;
$topicstart=0;$orelyid=$relyid;
if($relyid > $maxtopics){
my ($crelyid,undef)=split(/\./,($relyid/$maxtopics));
$topicstart=$crelyid*$maxtopics;
}
$relyid="bottom" if($relyid eq $topicreply);
$topictitle_temp=&lbhz($topictitle,30);
$topictitle_temps=" " x (30 - length($topictitle_temp));
$topicpostdata=(!$topicpostdata)?"Unknown":&dateformat("$topicposttime");
$topiclink=qq(<a href="topic.cgi?forum=$forumid&topic=$topicid&start=$topicstart#$relyid" target="_blank" TITLE="$topictitle \n发布时间: $topicpostdata \n主题作者: $topisstarter ">$topictitle_temp</a>);
}
if($start eq "checked"){
$disabled=' disabled';
unlink($filepath);
}
print qq~
<tr><td align="left"><a href="$imagesurl/usr/$forum/$filefullname" title="下载附件" target="_blank">$filefullname</a></td><td align="right">$filesize bytes</td><td align="right">$lastmoddate</td><td align="left"> $topiclink$topictitle_temps</td><td align="center" width="5"><input type="checkbox" name="delete_array" value="$filefullname" checked $disabled></td></tr>
~;
$attachcount++;
$k++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -