⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attachadmin.cgi

📁 一个linux论坛
💻 CGI
📖 第 1 页 / 共 3 页
字号:
#!/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' => \&copyattach,
			'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 &copy; 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 &copy; 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="&nbsp;" 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&nbsp;\n发布时间: $topicpostdata&nbsp;\n主题作者: $topisstarter&nbsp;">$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">&nbsp;&nbsp;&nbsp;$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 + -