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

📄 checkboard.cgi

📁 一个linux论坛
💻 CGI
字号:
#!/usr/bin/perl
#############################################################
#  LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
#  版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
#  制作人  : 山鹰糊 (Shining Hu)
#            花无缺 (Ifairy Han)
#           
#  主页地址: http://www.CGIer.com/      CGI 编程者之家
#	     http://www.LeoBoard.com/   雷傲论坛支持主页
#	     http://www.leoBBS.com/     本论坛直通车
#            
#############################################################
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;
$LBCGI::POST_MAX=2000;
$LBCGI::DISABLE_UPLOADS = 1;
$LBCGI::HEADERS_ONCE = 1;
require "lbadmin.lib.pl";
require "data/boardinfo.cgi";
require "lb.lib.pl";
$|++;                                     # Unbuffer the output
$thisprog = "checkboard.cgi";
$query = new LBCGI;
$inforum       = $query -> param("forum");
$inforum       = &cleaninput("$inforum");
$action        = $query -> param("action");
$action        = &cleaninput("$action");
$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;

&getadmincheck;
print header(-charset=>gb2312);
&error("打开文件&老大,别乱黑我的程序呀!") if (($inforum) && ($inforum !~ /^[0-9]+$/));
&admintitle;
&getmember("$inmembername");
        
if (($membercode eq "ad") && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
    if ($action eq "restoreforums") {
        $filetoopen = "$lbdir" . "data/allforums.cgi.cgi";
        $filetoopen = &stripMETA($filetoopen);
        open(FILE, "$filetoopen");
        @files = <FILE>;
        close(FILE);
        $totalforums = @files;
        $filetomake = "$lbdir" . "data/allforums.cgi";
        $filetomake = &stripMETA($filetomake);
        &winlock($filetomake) if ($OS_USED eq "Nt");
        open(FILE, ">$filetomake");
        flock (FILE, 2) if ($OS_USED eq "Unix");
        foreach (@files) {
            chomp $_;
            print FILE "$_\n";
        }
        close(FILE);
        &winunlock($filetomake) if ($OS_USED eq "Nt");
        print qq~
            <tr><td bgcolor=#333333 colspan=3><font face=宋体 color=#FFFFFF>
            <b>欢迎来到 LB5000 论坛管理中心/检查结果</b>
            </td></tr>
            <tr><td bgcolor=#FFFFFF colspan=3><font face=宋体 color=#333333>
            <b>恢复结果:</b><br><br>您的所有论坛均已恢复。<br><br>现有 $totalforums 论坛在您的主论坛中。
            </td></tr>
        ~;
    }
    elsif ($action eq "restorelist") {
        $filetoopen = "$lbdir" . "forum$inforum/list.bak.cgi";
        $filetoopen = &stripMETA($filetoopen);
        open(FILE, "$filetoopen");
        @files = <FILE>;
        close(FILE);
        $totaltopics = @files;
        $filetomake = "$lbdir" . "boarddata/list$inforum.cgi";
        $filetomake = &stripMETA($filetomake);
        &winlock($filetomake) if ($OS_USED eq "Nt");
        open(FILE, ">$filetomake");
        flock (FILE, 2) if ($OS_USED eq "Unix");
        foreach (@files) {
            chomp $_;
            print FILE "$_\n";
        }
        close(FILE);
        &winunlock($filetomake) if ($OS_USED eq "Nt");
        print qq~
            <tr><td bgcolor=#333333 colspan=3><font face=宋体 color=#FFFFFF>
            <b>欢迎来到 LB5000 论坛管理中心/检查结果</b>
            </td></tr>
            <tr><td bgcolor=#FFFFFF colspan=3><font face=宋体 color=#333333>
            <b>恢复结果:</b><br><br>您的“$inforum”论坛的 list.cgi 已经恢复<br><br> 现有 $totaltopics 主题在此论坛。
            </td></tr>
        ~;
    }
    else {
	$filetoopen = "$lbdir" . "data/allforums.cgi";
        $filetoopen = &stripMETA($filetoopen);
        open(FILE, "$filetoopen");
        @files = <FILE>;
        close(FILE);
        $check = @files;
        $check = "failed" unless ($check > 0);
        $filetoopen = "$lbdir" . "data/allforums.cgi.cgi";
        $backup_file = "true" if (-e $filetoopen);
                
        $allforums = qq~所有论坛数据文件找到</font>~;
        if (($check eq "failed") && ($backup_file eq "true")) {
             $allforums = qq~<b>警告!所有论坛数据文件已被破坏!</b> - <a href=$thisprog?action=restoreforums>恢复所有论坛数据文件</a>~;
        }
        if ($backup_file eq "true") {
             $allforums_backup = qq~所有论坛数据备份文件找到~;
        }
        else {
             $allforums_backup = qq~<b>没有</b>备份数据文件(如果是第一次建立,是正常的)。~;
        }
        my $checkallforums=0;
        foreach (@files) {
             chomp($_);
             ($tempno, $trash) = split(/\t/,$_);
             $filetoopen = "$lbdir" . "boarddata/list$tempno.cgi";
             $filetoopen = &stripMETA($filetoopen);
             open(FILE, "$filetoopen");
             @test = <FILE>;
             close(FILE);
             $filetocheck = "$lbdir" . "forum$tempno/list.bak.cgi";
             $filetocheck = &stripMETA($filetocheck);
             if (-e $filetocheck) { 
                   $listback_up = "true"; 
             }else{
                &winlock($filetocheck) if ($OS_USED eq "Nt");
        	open(FILE, ">$filetocheck");
        	flock (FILE, 2) if ($OS_USED eq "Unix");
        	foreach (@test) {
            	chomp $_;
            	print FILE "$_\n";
        	}
        	close(FILE);
        	&winunlock($filetocheck) if ($OS_USED eq "Nt");
             $listback_up = "failed";
             }
	     $check = @test;
             $check = "failed" unless ($check > 0);
  
             if (($check eq "failed") && ($listback_up eq "true")){
                   $result = "论坛 $tempno 含有错误的 list.cgi 文件 - <a href=\"$thisprog?action=restorelist&forum=$tempno\">从备份中恢复</a>";
             }
             elsif (($check eq "failed") && ($listback_up eq "failed")){
             $result = "论坛 $tempno 含有错误的 list.cgi 文件 - <a href=\"setforums.cgi?action=recount&forum=$tempno\">更新索引恢复</a>";
             if (($tempno eq "")||($tempno !~ /^[0-9]+$/)){
             $result = "论坛分类文件含有错误 - 自动修正" ;
             $checkallforums=1;
             }
             }  
             else {
                   $result = "论坛 $tempno 测试通过";
             }
             push (@results, $result);
	}
	if ($checkallforums==1){
	$filetoopen = "$lbdir" . "data/allforums.cgi";
        $filetoopen = &stripMETA($filetoopen);
               
        open(FILE, ">$filetoopen");
        foreach (@files){
        chomp($_);
        ($tempno, $trash) = split(/\t/,$_);
        if (($tempno ne "")&&($tempno =~ /^[0-9]+$/)){
        print FILE "$_\n";
        }
        }
        close(FILE);
        }
	
	print qq~
                <tr><td bgcolor=#333333 colspan=3><font face=宋体 color=#FFFFFF>
                <b>欢迎来到 LB5000 论坛管理中心/测试结果</b>
                </td></tr>
                <tr><td bgcolor=#FFFFFF colspan=3><font face=宋体 color=#333333>
                <b>检测结果:</b><br><br>
                您的论坛数据检测完毕,没有文件损坏或丢失。<br> <font color=#FF0000><b>如果您正在修改论坛,或是正在论坛发言,那么您将得到错误信息。</b>
                <font face=宋体 color=#333333>  
                <br><br>
                <b>检查 allforums.cgi 文件:</b> <br><br>$allforums<br><br></font>
                <font face=宋体 color=#333333>
                <b>检查所有论坛备份文件:</b> <br><br>$allforums_backup</font>
                <hr>
                <font face=宋体 color=#333333>
                <br><b>每个目录下的 list.cgi 文件的检查结果:</b>
                <br><br>
	~;
        foreach (@results) {
            chomp $_;
            print qq($_<br><br>\n);
        }
        print qq~
            <br><hr><br><i>报告结束</i>
            </td></tr>
        ~;
    }
}
else {
    &adminlogin;
}
print qq~</table></td></tr></table></td></tr></table></body></html>~;
exit;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -