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

📄 setmemberbak.cgi

📁 一个linux论坛
💻 CGI
📖 第 1 页 / 共 2 页
字号:
#!/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";
$|++;
$thisprog = "setmemberbak.cgi";

$query = new LBCGI;
$action          = $query -> param('action');
$action          = &unHTML("$action");
$checkaction     = $query -> param('checkaction');
$member          = $query -> param('member');
$member          = &unHTML("$member");
$noofone         = $query -> param('noofone');
$noofone         = &unHTML("$noofone");
$beginone        = $query -> param('beginone');
$beginone        = &unHTML("$beginone");
$totolerepire    = $query -> param('totolerepire');
$totolerepire    = &unHTML("$totolerepire");

$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;

$noofone      = 2000 if ($noofone !~ /^[0-9]+$/);
$beginone     = 0    if ($beginone !~ /^[0-9]+$/);
$totolerepire = 0    if ($totolerepire !~ /^[0-9]+$/);

opendir (DIRS, "$lbdir");
my @files2 = readdir(DIRS);
closedir (DIRS);
my @backupdir = grep(/^backup/, @files2);
$backupdir=@backupdir;
if ($backupdir eq 0) {
	@backupdir = grep(/^BACKUP/, @files2);
	rename("${lbdir}BACKUP","${lbdir}backup");
}
if ($backupdir eq 0) {
	@backupdir = grep(/^Backup/, @files2);
	rename("${lbdir}Backup","${lbdir}backup");
}
$backupdir = $backupdir[0];

&getadmincheck;
print header(-charset=>gb2312);       
&admintitle;

&getmember("$inmembername");
        
if (($membercode eq "ad") && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
    print qq~<tr><td bgcolor=#333333" colspan=2><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 用户库备份及还原</b></td></tr>~;
    my %Mode = ( 
            'backup'      => \&backup,
            'backupnext'  => \&backupnext,
            'repire'      => \&repire,
            'repirenext'  => \&repirenext,
            'repireone'   => \&repireone,
            'restore'     => \&restore,
            'restorenext' => \&restorenext
    );
    if ($Mode{$action}) { $Mode{$action}->(); } else { &memberoptions; }
    print qq~</table></td></tr></table>~;
}
else {
    &adminlogin;
}
print qq~</td></tr></table></body></html>~;
exit;

sub backup {

    opendir (DIR, "${lbdir}$memdir/old"); 
    @filedata = readdir(DIR);
    closedir (DIR);
    @countvar = grep(/\.cgi$/i,@filedata);
    $totaluserdata = @countvar;
    
    open(FILE,">${lbdir}$backupdir/allname.cgi");
    foreach (@countvar) {
        print FILE "$_\n";
    }
    close(FILE);

    print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2><font color=#990000><b>用户库备份</b><br>
        <font color=#333333><B>当前共有 $totaluserdata 个注册用户,准备工作已经完成。</b><BR><BR><BR>
	<form action="setmemberbak.cgi" method=get>
        <input type=hidden name="action" value="backupnext">输入每次备份的用户数 
        <input type=hidden name="beginone" value=0>
        <input type=text name="noofone" size=3 maxlength=3 value=300>
        <input type=submit value="开始备份">
        </form>
	为了减少资源占用,请输入每次备份的用户数,默认 300,<BR>一般不要超过 600,如果发现备份无法正常完成,请尽量减少这个数目,延长备份时间。<BR><BR>
        </td></tr>
    ~;       
}

sub backupnext {
    open(FILE,"${lbdir}$backupdir/allname.cgi");
    @allname = <FILE>;
    close(FILE);
    $allnamenum = @allname;
    if ($beginone < $allnamenum) {
        $lastone = $beginone + $noofone;
        $lastone = $allnamenum if ($lastone > $allnamenum);
        unlink ("${lbdir}$backupdir/alluser.pl") if ($beginone == 0);
        open(FILE,">>${lbdir}$backupdir/alluser.pl");
            print FILE "nodisplay.cgi\t11111\tnodisplay\t11111\tnodisplay\t11111\tnodisplay\t11111\tnodisplay\t11111\tnodisplay\t11111\tnodisplay\t11111\t\n" if ($beginone == 0);
	    for ($i = $beginone; $i < $lastone; $i ++) {
		chomp $allname[$i];
		$usrnames = "${lbdir}$memdir/$allname[$i]";
		$usrnames = "${lbdir}$memdir/old/$allname[$i]" if (!(-e $usrnames));
		open(USRFILE,"$usrnames"); 
		$userinfo=<USRFILE>;
		close(USRFILE);
		chomp $userinfo;
		$allname[$i] =~ tr/A-Z/a-z/;
		print FILE "$allname[$i]\t$userinfo\n";
	    }
        close(FILE); 

        print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2><font color=#990000><b>用户库备份</b><br>
        <font color=#333333><B>当前共有 $allnamenum 个注册用户,已经备份了 $lastone 个用户。。。</b><BR><BR><BR>
        <font color=#333333>如果无法自动开始下 $noofone 个用户的备份,请点击下面的链接继续<p>
        >> <a href="$thisprog?action=backupnext&beginone=$lastone&noofone=$noofone">继续备份用户库</a> <<
	<meta http-equiv="refresh" content="2; url=$thisprog?action=backupnext&beginone=$lastone&noofone=$noofone">
	<BR><BR></td></tr>
         ~;
     }
     else {
        print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2><font color=#990000><b>用户库备份</b><p>
        <font color=#333333>当前共有 $allnamenum 个注册用户,数据已经备份结束!<BR><BR>
        备份的用户保存在 LB5000 的备份专用目录下(cgi-bin 下的 backup 目录),<BR>绝对路径为</font> ${lbdir}$backupdir/alluser.pl<font color=#333333> ,<BR>为了安全起见,请你立即用 ftp 下载保存。</font></td></tr>
         ~;
     }
}

sub restore {
    if (-e "${lbdir}$backupdir/alluser.pl") {
	open(FILE,"${lbdir}$backupdir/alluser.pl");
        my @allname = <FILE>;
        close(FILE);
        $allname = @allname;
        $allname --;
        print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2><font color=#990000><b>用户库还原</b><br>
        <font color=#333333><B>当前共有 $allname 个注册用户,准备工作已经完成。</b><BR><BR><BR>
	<form action="setmemberbak.cgi" method=get>
        <input type=hidden name="action" value="restorenext">输入每次还原的用户数 
        <input type=hidden name="beginone" value=0>
        <input type=text name="noofone" size=3 maxlength=3 value=300>
        <input type=submit value="开始还原">
        </form>
	为了减少资源占用,请输入每次还原的用户数,默认 300,<BR>一般不要超过 600,如果发现还原无法正常完成,请尽量减少这个数目,延长还原时间。
	<BR><BR></td></tr>
         ~;
     }
     else {
        print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2><font color=#990000><b>用户库备份文件没有找到</b><p>~;
     }
}

sub restorenext {
    $memberfiletitle = $inmembername;
    $memberfiletitle =~ y/ /_/;
    $memberfiletitle =~ tr/A-Z/a-z/;
    $memberfiletitle .= ".cgi";
    open(FILE,"${lbdir}$backupdir/alluser.pl");
    @alluser = <FILE>;
    close(FILE);
    $allusernum = @alluser;
    if ($beginone < $allusernum) {
        $lastone = $beginone + $noofone;
        $lastone = $allusernum if ($lastone > $allusernum);

        for ($i = $beginone; $i < $lastone; $i ++) {
	    chomp $alluser[$i];
    	    next if (($alluser[$i] =~ /^nodisplay/i)||($alluser[$i] eq ""));
    	    my ($userfilename,@userinfo) = split(/\t/,$alluser[$i]);

⌨️ 快捷键说明

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