📄 manage.cgi
字号:
#####################################################
#恢复用户数据
#####################################################
sub restoredata {
&check_password();
if ($find_id == 0 ) { &error('你不是系统管理员'); }
$k = 0;
$deenfile = "$filehead$backfile";
if (not -e $deenfile) { &error("用户备份文件不存在"); }
@backuser =&readtxtfile($backfile);
foreach (@backuser) {
&readuserdata($_);
if ($mark eq "userdata") {
$userfile = "$userhead$chkusername$userext";
&writeuserdata;
chmod(0666,$userfile);
$k++; }
}
&success("恢复 $k 个用户数据");
}
#########################################################################
# 列出要踢的对象
#########################################################################
sub list_user {
#检查用户是否有踢人的权限
&check_password();
if ( $userlevel < $level_killer ) { &error('没有踢人的权限'); }
do "$path/write_online.cgi";
&write_online("line");
@online=&getlinedata;
@online=sort @online;
print <<_dnchat;
<html><head><title>当前的所有人员列表,您想踢哪个?</title>
<META HTTP-EQUIV=REFRESH CONTENT="60;URL=$cgiurl$manage?job=setkick$userinfo">
<style type="text/css">
<!--
TABLE { font-family: 宋体; font-size: 14px }
--></style>
</head>
<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
<basefont size=2>
<center><font size=5><b>所有人员列表,您想踢哪个?</b></font><br>
<table border=1>
<form method=POST action="$cgiurl$manage?job=add_kick_out$userinfo" onsubmit="self.status='资料已送出'; return true;">
<tr bgcolor=ffddff><td>选取</td><td>人员识别</td><td>权限等级</td><td>最后出现时间</td><td>管制状态</td></tr>
_dnchat
foreach (@online) {
&readlinedata($_);
if (($chkusername ne $username) && ($chkusername ne $superuser) && ($chkuserlevel < $userlevel )) {
if ($chkstat ne 'k') { print "<tr bgcolor=ffffdd><td><input type=radio name='kickuser' value='$chkuserip‖$chkusername‖$chkuserlevel‖$chkusersex‖'></td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>正常</td></tr>\n"; }
else { print "<tr bgcolor=ffffdd><td>----</td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>Kicked</td></tr>\n"; }
}
else { print "<tr bgcolor=ffffdd><td>----</td><td><font size=-1>$chkusersex</font> $chkusername($chkuserip)</td><td>$chkuserlevel级</td><td>$chktimen</td><td>正常</td></tr>\n"; }
}
print <<_dnchat;
</table>
<br><font color = blue>
1.只踢指定的用户<br><br>
2.只踢指定的IP地址<br><br>
3.前两组IP数字相同的所有用户<br><font color=red>(尽量不用此功能)</font></font>
<br><br>
选择踢人方式<SELECT NAME="checkip">
<option value='1' selected > 1 </option>
<option value='2' > 2 </option>
<option value='3' > 3 </option>
</SELECT>
<br><br>
<select name="kickway">
<option value="1" selected>Level1 - 自动跳离视窗
<option value="2">Level2 - 禁止发言
<option value="3">Level3 - 浏览器当机(JS)
<option value="4">Level4 - 视窗炸弹(JS)
</select><br>
<br>
<input type=submit value="执 行"> <input type=reset value="清 除">
</form></center></body></html>
_dnchat
}
#########################################################################
# 将选择的人加入被踢名单
#########################################################################
sub add_kick_out {
&check_password();
if ( $userlevel < $level_killer ) { &error('你的权限不够'); }
$username = &get_var('username' ,'\n|"|<|>|\&|;| |\?|‖') ;
$kickuser = &get_var('kickuser' ,'\n') ;
$kickway = &get_var('kickway' ,'\n|‖');
$checkip = &get_var('checkip' ,'\n|‖');
($chkuserip,$chkusername,$chkuserlevel,$chkusersex)=split(/‖/,$kickuser);
&error("呵呵,你不能踢$chkusername") if ($userlevel <= $chkuserlevel) ;
$this_call_time = $secn;
$message='killdata'."‖".$kickuser.$kickway."‖".$checkip."‖".$this_call_time."‖".$username."‖".'end'."‖";
open (KICKOUT,">>$filehead$killfile") || die $!;
print KICKOUT "$message\n";
close(KICKOUT);
do "$path/write_message.cgi" ;
&write_message("kickout");
do "$path/write_online.cgi";
&write_online("kill","$chkusername","$kickway");
&success("$chkusername 被踢出聊天室");
}
###################################
#查看踢人记录
##################################
sub killrec {
&check_password();
print <<eof;
<html><head><title>踢人记录</title>
<style type="text/css"> <!-- TABLE { font-family: 宋体; font-size: 14px } --></style>
</head>
<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
<basefont size=2>
<center><font size=5><b>踢人记录</b></font><br>
<table border=1>
<form method=POST action="$cgiurl$manage?job=delekillip$userinfo" onsubmit="self.status='资料已送出'; return true;">
<tr><td bgcolor='#FFCC66' align=center width=10%>选择</td>
<td bgcolor='#FFCC66' align=center width=18%>IP地址</td>
<td bgcolor='#FFCC66' align=center width=10%>用户名</td>
<td bgcolor='#FFCC66' align=center width=6%>级别</td>
<td bgcolor='#FFCC66' align=center width=5%>类型</td>
<td bgcolor='#FFCC66' align=center width=30%>时间</td>
<td bgcolor='#FFCC66' align=center width=10%>杀手</td>
</tr>
eof
@bekill=&readtxtfile($killfile,2);
foreach (@bekill) {
($mark,$bekill_host,$bekill_name,$bekill_level,$bekill_sex,$bekill_type,$kill_ip,$kill_time,$killer,$markend)=split(/‖/,$_);
if (($mark eq "killdata") && ($markend eq "end")) {
($dnsecn,$dnminn,$dnhourn,$dndayn,$dnmonn,$dnyearn,$dnweekn,$dnyeardayn,$dnisdst) = localtime($kill_time+(3600*$time_hour)+($time_min*60));
$dnmonn=$dnmonn+1;
$dnyearn = $dnyearn + 1900;
if ($dnmonn<10) {$monn="0$dnmonn";}
if ($dndayn<10) {$dayn="0$dndayn";}
if ($dnhourn<10) {$hourn="0$dnhourn";}
if ($dnminn<10) {$minn="0$dnminn";}
if ($dnsecn<10) {$secn="0$dnsecn";}
$dndaten="$dnyearn/$dnmonn/$dndayn";
$dntimen="$dnhourn\:$dnminn\:$dnsecn";
$dnkill_time = $dndaten." ".$dntimen;
$killuser = $bekill_host."‖".$bekill_name."‖".$kill_time."‖".$killer."‖";
print "<tr><td bgcolor='#FFCC66' align=center width=10%><font size=-1><input type=radio name=killuser value='$killuser'>删除</font></td>\n";
print "<td bgcolor='#FFCC66' align=center width=18%>$bekill_host</td>\n";
print "<td bgcolor='#FFCC66' align=center width=10%>$bekill_name</td>\n";
print "<td bgcolor='#FFCC66' align=center width=6%>$bekill_level</td>\n";
print "<td bgcolor='#FFCC66' align=center width=5%>$bekill_type</td>\n";
print "<td bgcolor='#FFCC66' align=center width=30%>$dnkill_time</td>\n";
print "<td bgcolor='#FFCC66' align=center width=10%>$killer</td>\n";
print "</tr>\n";
}
}
print <<eof;
</table><br><br>
<input type=submit value="执 行"> <input type=reset value="清 除">
</form> </center></BODY></HTML>
eof
}
####################################
#删除踢人记录
####################################
sub delekillip {
&check_password();
if ( $userlevel < $level_killer ) { &error("$username 你的权限不够"); }
$killuser = &get_var('killuser' ,'\n');
if ($killuser eq "") { &error("请选择删除的记录"); }
($chkkill_host,$chkkill_name,$chkkill_time,$chkkiller)=split(/‖/,$killuser);
@bekill=&readtxtfile($killfile,2);
open(BEKILLDATA,">$filehead$killfile") || die $!;
foreach (@bekill) {
($mark,$bekill_host,$bekill_name,$bekill_level,$bekill_sex,$bekill_type,$kill_ip,$kill_time,$killer,$markend)=split(/‖/,$_);
if (($mark eq "killdata") && ($markend eq "end")) {
if (($chkkill_host eq $bekill_host) && ($chkkill_name eq $bekill_name) && ($chkkill_time eq $kill_time) && ($chkkiller eq $killer)) {
next; }
else {
print BEKILLDATA "$mark‖$bekill_host‖$bekill_name‖$bekill_level‖$bekill_sex‖$bekill_type‖$kill_ip‖$kill_time‖$killer‖$markend‖\n";}
}
}
close(BEKILLDATA);
&success('删除成功');
}
######################################
#过滤用户功能
######################################
sub filter {
do "$path/write_online.cgi";
$filtername = &get_var('filtername' ,'\n|‖'); #取过滤用户的名字
&dn_prompt("错误 --- 过滤用户不能为空") if ($filtername eq "");
&dn_prompt("错误 --- 不能将大家,自己,聊天精灵进行过滤") if (($filtername eq '大家')||($filtername eq $username)||($filtername eq $bchatgenius)||($filtername eq $gchatgenius));
$filternametemp="§$filtername§";
&dn_prompt("错误 --- $filtername已经在你的过滤名单") if ($chkfilterlist=~ /$filternametemp/);
if ($chkfilterlist eq "") { $filterlist = "§$filtername§";}
else { $filterlist = $chkfilterlist. "$filtername§"; }
&write_online("filter");
&dn_prompt(" $filtername 已经加入了你的过滤名单。你的过滤名单中有:$filterlist");
}
######################################
#解除过滤用户功能
######################################
sub unfilter {
do "$path/write_online.cgi";
$filtername = &get_var('filtername' ,'\n|‖'); #取过滤用户的名字
&dn_prompt("错误 --- 解除过滤用户不能为空") if ($filtername eq "");
$filternametemp="§$filtername§";
&dn_prompt("错误 --- $filtername 不在你的过滤名单") if (not ($chkfilterlist=~ /$filternametemp/));
$filterlist = $chkfilterlist;
$filterlist =~ s/$filternametemp//g;
if ($filterlist ne "") {
if (substr ($filterlist, 0, 2) ne "§") { $filterlist ="§".$filterlist; }
if (substr ($filterlist, -2, 2) ne "§") { $filterlist .="§"; }
}
&write_online("filter");
&dn_prompt(" $filtername 已经从你的过滤名单中解除。你的过滤名单中有:$filterlist");
}
######################################
#显示过滤用户功能
######################################
sub dispfilter {
do "$path/write_online.cgi";
if ($chkfilterlist ne "") { &dn_prompt("你的过滤名单中有:$chkfilterlist"); }
else { &dn_prompt("你的过滤名单中没有用户"); }
}
##############################################
#超级用户的管理页面
##############################################
sub super_html {
#检查用户是否有超级用户的权限
&check_password();
if ($find_id == 0 ) { &error('你不是系统管理员'); }
&getsysnum;
$level_html = "<select name='setlevel'><option value='1' selected> 1 </option>";
for ($i = 2; $i<$maxlevel ; $i++) { $level_html .="<option value='$i' > $i </option>"; }
$level_html .= "</select>";
print <<eof;
<html><head><title>超级用户管理</title> </head>
<body bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color>
<br><br><br><div align="center">
<table width="540" border="1" bordercolorlight="#CCFFFF" bordercolordark="#000000" bordercolor="#33CCFF" align="center" bgcolor="#99CCFF" height="150">
<tr><td colspan="2" bgcolor="#D6D5CD" height="14"><p align="right"><font color="#000000">$roomtitle</font></td></tr>
<tr><td colspan="2" bgcolor="#FDF0EA" height="14"><p align="center"><font size = 6 color="#0000FF">超级管理</font></td></tr>
<tr><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=csuperpass$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt"> 大网管<font color=red><u>$superuser</u></font>密码</span></font> <input type="text" name="usuperpass" size="6" maxsize = "20"> <INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 修 改 "></form>
</td><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=cleanuserlist$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt"> 删除$user_kill_day天未访问的用户</span></font> <INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 确 定 "></form></td>
</td></tr>
<tr><td bgcolor="#EFEDEF" width="270" height="12">
<br><form method=POST action="$cgiurl$manage?job=setpoint$userinfo"><font color="#0000FF"><SPAN style="FONT-SIZE: 9pt"> 所有用户经验置1</span></font> <INPUT style="BACKGROUND-COLOR: '#DDDDFF'; COLOR: 000000; BORDER-BOTTOM: 1px double; BORDER-LEFT: 1px double; BORDER-RIGHT: 1px double; BORDER-TOP: 1px double; COLOR: 000000; FONT-FAMILY: 宋体, Arial; FONT-SIZE: 9pt" type=submit value=" 确 定 "></form>
</td><td bgcolor="#EFEDEF" width="270" height="12">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -