📄 lb.lib.pl
字号:
#############################################################
# LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
# 版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
# 制作人 : 山鹰糊 (Shining Hu)
# 花无缺 (Ifairy Han)
#
# 主页地址: http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
#
#############################################################
$versionnumber = "LB5000MX 2.00";
$maxweiwang = 5 if (($maxweiwang < 5)||($maxweiwang eq ""));
$signaturesplit="aShDFSiod";
$wordfilterto = " *** ";
$ENV{'REMOTE_ADDR'} = $ENV{'HTTP_X_FORWARDED_FOR'} if (($ENV{'REMOTE_ADDR'} eq "127.0.0.1")&&($ENV{'HTTP_X_FORWARDED_FOR'} ne "")&&($ENV{'HTTP_X_FORWARDED_FOR'} ne "unknow"));
opendir (DIRS, "$lbdir");
my @files2 = readdir(DIRS);
closedir (DIRS);
my @memdir = grep(/^members/i, @files2);
$memdir = $memdir[0];
my @msgdir = grep(/^messages/i, @files2);
$msgdir = $msgdir[0];
undef @files2; undef @memdir; undef @msgdir;
sub temppost {
my $tmp=shift;
study($tmp);
$tmp =~ s/\#Moderation Mode//isg;
$tmp =~ s/\[quote\](.*)\[\/quote\]//isg;
$tmp =~ s/\[post=(.+?)\](.+?)\[\/post\]//isg;
$tmp =~ s/\[hide\](.+?)\[\/hide\]//isg;
$tmp =~ s/\[(.+?)\]//isg;
$tmp =~ s/(http|https|ftp):\/\/(.*?)\.(png|jpg|jpeg|bmp|gif|swf)//isg;
$tmp =~ s/<(.|\n)+?>//isg;
$tmp =~ s/\:.{0,20}\://isg;
$tmp =~ s/[\a\f\n\e\0\r\t]//isg;
$tmp =~ s/ / /isg;
$tmp =~ s/^( )+//isg;
return $tmp;
}
sub dofilter {
my $infiltermessage=shift;
my $tempinfilter = $infiltermessage;
my $keepinfiltermessage=&postwordfilter($tempinfilter);
if ($tempinfilter ne $keepinfiltermessage) { &error("贴子有问题&你所发表的贴子中也许包含了一些本论坛不允许发布的言论,请仔细检查后,重新发布,谢谢!"); }
$tempinfilter =~ s/\ \;//ig;
$tempinfilter =~ s/\<.+?\>//ig;
$tempinfilter =~ s/\[.+?\]//g;
$tempinfilter =~ s/ | |\*\_|\?|\+|\/|\\|\.//g;
my $keepinfiltermessage=&postwordfilter($tempinfilter);
if ($tempinfilter ne $keepinfiltermessage) { &error("贴子有问题&你所发表的贴子中也许包含了一些本论坛不允许发布的言论,请仔细检查后,重新发布,谢谢!"); }
return $infiltermessage;
}
sub postwordfilter {
my $infiltermessage=shift;
my $keepinfiltermessage=$infiltermessage;
&badwordfile if ($wordfilter eq "");
if ($wordfilter) { $infiltermessage =~ s/$wordfilter/$wordfilterto/isg; }
return $infiltermessage;
}
sub badwordfile {
if (open (FILE, "${lbdir}data/wordfilter.cgi")) {
$wordfilter = <FILE>;
close (FILE);
$wordfilter=~ s/(\.|\*|\(|\)|\||\\|\/|\?|\+|\[|\])/\\$1/ig;
$wordfilter=~ s/\t/\|/ig;
$wordfilter=~ s/\|\|/\|/ig;
$wordfilter=~ s/^\|//ig;
$wordfilter=~ s/\|$//ig;
}
else { $wordfilter = "";}
}
sub ipbanned {
if (open(FILE, "${lbdir}data/ipbans.cgi")) {
my @term_bannedmembers = <FILE>;
close(FILE);
my @term_vipmembers = grep(/^[0-9]/, @term_bannedmembers);
@term_bannedmembers = grep(/^\-/, @term_bannedmembers);
my $ipallow = "yes";
my $ipaddress = $ENV{"REMOTE_ADDR"};
$trueipaddress = $ENV{"HTTP_CLIENT_IP"};
$trueipaddress = $ENV{"HTTP_X_FORWARDED_FOR"} if ($trueipaddress eq "" || $trueipaddress eq "unknown");
$trueipaddress = $ipaddress if ($trueipaddress eq "" || $trueipaddress eq "unknown");
foreach (@term_bannedmembers) {
s/\r//sg;
s/^\-//sg;
chomp;
next if ($_ eq "");
if ($trueipaddress =~ /^$_/ || $ipaddress =~ /^$_/) {
$ipallow = $_;
last;
}
}
foreach (@term_vipmembers) {
s/\r//sg;
chomp;
next if ($_ eq "");
if ($trueipaddress =~ /^$_/ || $ipaddress =~ /^$_/) {
$ipallow = "yes";
last;
}
}
&error(" IP 被禁止&由于你没遵守本站规定!你的 IP ($ipallow) 被禁止!如有疑问,请联系管理员。") if ($ipallow ne "yes");
}
$inmembername = $query->cookie("amembernamecookie") if ($inmembername eq "");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
if (($inmembername ne "")&&($inmembername ne "客人")) {
my $term_idfiletoopen ="$lbdir" . "data/idbans.cgi";
if (open(FILE,"$term_idfiletoopen")) {
$term_idbannedmembers = <FILE>;
close(FILE);
$term_idbannedmembers =~ s/\t/\_/isg;
$term_idbannedmembers = "\_$term_idbannedmembers\_";
$term_idbannedmembers =~ s/\_\_/\_/isg;
$term_idbannedmembers =~ s/(\.|\*|\(|\)|\||\\|\/|\?|\+|\[|\])/\\$1/ig;
$tempinmembername = "\_$inmembername\_";
if ($term_idbannedmembers =~ /$tempinmembername/i) { &error(" ID 被禁止&由于你没遵守本站规定!你的 ID ($inmembername) 被禁止!如有疑问,请联系管理员。"); }
}
}
}
sub title {
my $newmail = "<p>";
if (($mainoff == 1)||($mainonoff == 1)) { &InMaintenance; }
if ($inmembername eq "" || $inmembername eq "客人") {
$inmembername = "客人";
$loggedinas = qq~<b>客人</b>: <a href="loginout.cgi?forum=$inforum" title=从这里开始进入论坛>登录</a> | <a href="register.cgi?forum=$inforum" title=注册了才能发表文章哦!>注册</a> | <a href="profile.cgi?action=lostpassword" title=好惨啊,忘记密码登录不了 style="cursor:help">忘记密码</a> | <a href="whosonline.cgi" title=看看有谁在线……>在线</a> | <a href="search.cgi?forum=$inforum" title=按关键字、作者来搜寻>搜索</a> | <span style="cursor:hand" onClick="javascript:openScript('help.cgi',500,400)" title=常见问题的解答>帮助</span>~;
if (($regaccess eq "on")&&($thisprog ne "loginout.cgi")&&($thisprog ne "register.cgi")&&($thisprog ne "profile.cgi")&&($thisprog ne "viewavatars.cgi")) {
print header(-cookie=>[$namecookie, $passcookie], -charset=>gb2312);
print "<script language='javascript'>document.location = 'loginout.cgi?forum=$inforum'</script>";
exit;
}
if(($regpuonoff eq "ontop")&&($thisprog eq "leoboard.cgi")||($regpuonoff eq "oneach")&&($thisprog ne "loginout.cgi")&&($thisprog ne "register.cgi")) {
if ($boardlogo =~ /\.swf$/i) {$forumgraphic1 = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=$imagesurl/myimages/$boardlogo quality=high width=$boardlogow height=$boardlogoh pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
else {$forumgraphic1 = qq~<img src=$imagesurl/myimages/$boardlogo border=0>~};
$popupmsg = qq~请先注册以避免此视窗出现~ if(!$popupmsg);
$popupmsg = &HTML("$popupmsg");
$loggedinas .=qq~<script language="JavaScript" src="$imagesurl/images/lbpopup.js"></script><div id="lbplocation" style="position: absolute;visibility: hidden;height: 1;width: 1;top: 100;left: 50"><table width=520 height=320 bgcolor=$titleborder style="border: 1 outset $miscbackone"><tr><td><table width=490 height=290 bgcolor=$menubackground align=center style="border: 1 inset $miscbacktwo"><tr><td align=center valign=middle><a href=leoboard.cgi>$forumgraphic1</a><br>$popupmsg<br><br><b><a href=register.cgi title=按这里进行注册><U>注 册</U></a> <a href=loginout.cgi?forum=$inforum title=从这里开始进入论坛><U>登 入</U></a></b><p>(此视窗将于 5 秒后自动关闭)</td></tr></table></td></tr></table></div>~;
}
}
else {
if (($thisprog eq "leoboard.cgi")||($thisprog eq "forums.cgi")||($thisprog eq "topic.cgi")) {
my $memberfilename = $inmembername;
$memberfilename =~ s/ /\_/g;
$memberfilename =~ tr/A-Z/a-z/;
my $filetoopen = "$lbdir". "$msgdir/in/$memberfilename" . "_msg.cgi";
open (MSGIN, "$filetoopen");
@allmessages = <MSGIN>;
close (MSGIN);
my @newmessages=grep(/^(.+)\tno\t/,@allmessages);
$unread = @newmessages;
my $intanchumsg = $query->cookie("tanchumsg");
my $popnew = qq~<script>if (confirm("你有新的短消息,是否打开收件箱查看?")) openScript("messanger.cgi?action=inbox",420,320);</script>~ if ((($newmsgpop eq "on")||($newmsgpop eq "popup"))&&($intanchumsg eq ""));
my $lightnew = qq~<script language="JavaScript">pmBox.bgColor='Lightblue';setInterval("Timer()", 500);x=1;function Timer(){set=1;if(x==0 && set==1){pmBox.bgColor='Lightblue';x=1;set=0;}if(x==1 && set==1){pmBox.bgColor='';x=0;set=0;}}</script>~ if ((($newmsgpop eq "on")||($newmsgpop eq "light")));
$newmail = qq(<table width=$tablewidth cellpadding=2 cellspacing=0 align=center><tr><td width="*"></td><td align=right id="pmBox" width=215><bgsound src=$imagesurl/images/mail.wav border=0>$lightnew$popnew<span style="cursor:hand" onClick="javascript:openScript('messanger.cgi?action=inbox',420,320)"><img src=$imagesurl/images/newmail.gif border=0><font color=$fonthighlight>你有 <B>$unread</B> 条新的短信息,请注意查收</font></span></td></tr></table>) if $unread;
}
$loggedinas = qq~$inmembername:<a href=loginout.cgi?forum=$inforum>重登录</a> | <span style="cursor:hand" onClick="javascript:openScript('messanger.cgi?action=inbox',420,320)" title=悄悄话短讯息中心>消息</span> | <span style="cursor:hand" onClick="javascript:openScript('friendlist.cgi',420,320)">好友</span> | <a href=profile.cgi?action=modify title=编辑您的个人资料>资料</a> | <a href=search.cgi?forum=$inforum title=按关键字、作者来搜寻>搜索</a> | <a href=whosonline.cgi title=看看有谁在线……>在线</a> | <span style="cursor:hand" onClick="javascript:openScript('help.cgi',500,400)" title=常见问题的解答>帮助</span> | <a href=loginout.cgi?action=logout title=在公众的地方上网记得要按退出哦><font color=$fonthighlight>退出</font></a> ~;
}
$loggedinas .= qq~| <a href=admincenter.cgi target=_blank>管理中心</a>~ if (($membercode eq "ad")||($membercode eq "smo"));
if ($menubackpic ne "") { $menubackpic = "background=$imagesurl/myimages/$menubackpic"; }
$output = qq~<table width=$tablewidth align=center cellspacing=0 cellpadding=1 border=0 bgcolor=$titleborder><tr><td><table width=100% cellspacing=0 cellpadding=4 border=0><tr><td bgcolor=$menubackground $menubackpic><font color=$menufontcolor>>> 欢迎您,$loggedinas </td><td bgcolor=$menubackground align=right $menubackpic><a href=$homeurl target=_blank><img src=$imagesurl/images/gohome.gif width=48 height=16 border=0></a> </td></tr></table></td></tr></table>$newmail~;
$output .= qq~<base onmouseover="window.status='$statusbar';return true">~ if ($statusbar ne "");
if ($forumlastvisit) {
my $fulldate = &fulldatetime($forumlastvisit+$timedifferencevalue*3600+$timezone*3600);
$lastvisitdata = qq~ 最近访问论坛时间: $fulldate~;
}
else { $lastvisitdata = qq~>> $forumname欢迎您的到来 <<~; }
$uservisitdata = qq~<tr><td valign=bottom align=right><font color=$menufontcolor><a href=forums.cgi?forum=$inforum&action=resetposts>标记论坛所有内容为已读</a> <img src=$imagesurl/images/$help_blogo border=0 style="cursor:hand" onClick="javascript:openScript('help.cgi?helpon=阅读标记',500,400)"> <br>$lastvisitdata </td></tr>~;
}
sub mischeader {
local($misctype) = @_;
my $filetoopen = "${lbdir}forum$inforum/foruminfo.cgi";
# &winlock($filetoopen) if (($OS_USED eq "Unix")||($OS_USED eq "Nt"));
open(FILE, "$filetoopen");
# flock (FILE, 1) if ($OS_USED eq "Unix");
my $forums = <FILE>;
close(FILE);
# &winunlock($filetoopen) if (($OS_USED eq "Unix")||($OS_USED eq "Nt"));
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc,$forumpass,$hiddenforum,$indexforum,$teamlogo,$teamurl, $fgwidth, $fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/,$forums);
if ($forumgraphic) {
if ($forumgraphic =~ /\.swf$/i) {$forumgraphic1 = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=$imagesurl/myimages/$forumgraphic quality=high width=$fgwidth height=$fgheight pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
else {$forumgraphic1 = qq~<img src=$imagesurl/myimages/$forumgraphic border=0>~};
} else {
if ($boardlogo =~ /\.swf$/i) {$forumgraphic1 = qq~<PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><embed src=$imagesurl/myimages/$boardlogo quality=high width=$boardlogow height=$boardlogoh pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash"><\/embed>~}
else {$forumgraphic1 = qq~<img src=$imagesurl/myimages/$boardlogo>~};
}
&title;
if($category=~/childforum-[0-9]+/){
$tempforumno=$category;
$tempforumno=~s/childforum-//;
$filetoopen = "${lbdir}forum$tempforumno/foruminfo.cgi";
open(FILE, "$filetoopen");
$forums = <FILE>;
close(FILE);
(undef, undef, undef, $tempforumname, undef) = split(/\t/,$forums);
$addlink=qq~<br> <img src=$imagesurl/images/bar.gif width=15 height=15><img src=$imagesurl/images/closedfold.gif width=14 height=14> <a href="forums.cgi?forum=$tempforumno">$tempforumname</a>~;
$addspace=" ";
}
$output .= qq~<table cellpadding=0 cellspacing=0 border=0 width=$tablewidth align=center><tr><td width=30% rowspan=2 valign=top>$forumgraphic1</td><td valign=top>~;
if ($indexforum ne "no") { $output .= qq~<font color=$fontcolormisc> <img src=$imagesurl/images/closedfold.gif width=15 height=11> <a href=leoboard.cgi>$boardname</a>$addlink<br>$addspace <img src=$imagesurl/images/bar.gif width=15 height=15><img src=$imagesurl/images/closedfold.gif width=15 height=11> <a href=forums.cgi?forum=$inforum>$forumname</a><br>$addspace <img src=$imagesurl/images/bar.gif width=15 height=15><img src=$imagesurl/images/openfold.gif width=15 height=11> $misctype~; }
else { $output .= qq~<font color=$fontcolormisc><img src=$imagesurl/images/closedfold.gif width=15 height=11> <a href=forums.cgi?forum=$inforum>$forumname</a><br><img src=$imagesurl/images/bar.gif width=15 height=15><img src=$imagesurl/images/openfold.gif width=15 height=11> $misctype~; }
$output .= qq~</td></tr></table><p>~;
}
sub getoneforum {
my $inforum = shift;
open(FILE, "${lbdir}forum${inforum}/foruminfo.cgi");
my $forums = <FILE>;
close(FILE);
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc, $forumpass, $hiddenforum, $indexforum, $teamlogo, $teamurl, $fgwidth, $fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/, $forums);
#父论坛斑竹继承
if ($category =~ /childforum-[0-9]+/)
{
my $tempforumno = $category;
$tempforumno =~ s/childforum-//;
open(FILE, "${lbdir}forum${tempforumno}/foruminfo.cgi");
my $forums = <FILE>;
close(FILE);
(undef, undef, undef, undef, undef, my $fmod, undef) = split(/\t/, $forums);
$forummoderator .= ",$fmod";
}
#分区版主获得
if (open(CATEFILE, "${lbdir}boarddata/catemod${categoryplace}.cgi"))
{
my $catemods = <CATEFILE>;
close(CATEFILE);
chomp($catemods);
$forummoderator .= ",$catemods";
}
$forummoderator =~ s/\, /\,/gi;
$forummoderator =~ s/ \,/\,/gi;
$forummoderator =~ s/\,\,/\,/gi;
$forummoderator =~ s/\,$//gi;
$forummoderator =~ s/^\,//gi;
$forummodnamestemp = ",$forummoderator,";
my $tempinmembername = ",$inmembername,";
$inmembmod = $forummodnamestemp =~ /$tempinmembername/i || (($membercode eq "cmo" || $membercode eq "mo") && ($forummodnamestemp =~ /,全体版主,/ || $forummodnamestemp =~ /,全体斑竹,/)) ? "yes" : "no";
return;
}
sub moderator {
my $inforum = shift;
if ($#forums < 1) {
my $filetoopen = "${lbdir}data/allforums.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, $filetoopen);
flock(FILE, 1) if ($OS_USED eq "Unix");
@forums = <FILE>;
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
}
my @thisforums = grep(/^$inforum\t/, @forums);
$inmembmod = "no";
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc, $forumpass, $hiddenforum, $indexforum, $teamlogo, $teamurl, $fgwidth, $fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/, $thisforums[0]);
$forummoderator =~ s/\,\,/\,/ig;
$forummoderator =~ s/\, /\,/ig;
$forummoderator =~ s/ \,/\,/ig;
$forummoderator =~ s/\,$//ig;
$forummoderator =~ s/^\,//ig;
my @forummodnames = split(/\,/, $forummoderator);
#父论坛斑竹继承
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -