📄 chat.pl
字号:
#!/usr/bin/perl
# Perl Location one your server
#引用文件的绝对目录
$chathead=".";
#$cgiurl=$ENV{'SCRIPT_NAME'};
$cgiurl="http://7758.com/cgi-bin/chatok/chat.pl";
require "$chathead/chat-config.pl";
require "$chathead/chat-lockfile.pl";
$|=1;
$userlevel =1;
$allow_html=0;
$exist ="no";
&get_form;
$roomtitle=&get_var('room' ,'\n|↑');
if ($roomtitle eq '') { $roomtitle="冰花雪夜";}
$onlinefile="$roomtitle";
$messagefile = "$roomtitle.msg";
&set_var;
require "$chathead/chat-checkip.pl";
&checkip;
if ($job eq "login") {
if($roomtitle=~ /爱情/i)
{
require "$chathead/chat-returnonline.pl";
&return_thisonline;
}
require "$chathead/chat-count.pl";
&count;
require "$chathead/chat-chkuserpwd.pl";
&check_usrpwd;
require "$chathead/chat-setcookie.pl";
&setcookie;
$userinfo3="&username=$username&userpassword=$crypassword&room=$roomtitle";
require "$chathead/chat-writeonline.pl";
require "$chathead/chat-writemsg.pl";
require "$chathead/chat-returnwhole.pl";
require "$chathead/chat-error.pl";
&checknamespace;
&write_online("online");
&write_allroom("login") if ($exist eq "no");
&write_message("mysays3");
&return_whole;
}
elsif ($job eq "allselect") {
&send_html;
require "$chathead/chat-allselect.pl";
&allselect;
}
elsif ($job eq "dnd") {
&send_html;
require "$chathead/chat-dnd.pl";
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
&donotdisturb;
}
elsif ($job eq "actdnd") {
&send_html;
require "$chathead/chat-actdnd.pl";
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
&dodisturb;
}
elsif ($job eq "kicklog") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
if ($userlevel>=$level_kicklog)
{
require "$chathead/chat-admin.pl";
&kicklog;
}
}
elsif ($job eq "setright") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
if ($userlevel>=$level_right){ &showregusers;}
}
elsif ($job eq "rightok") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
&rightusers;
}
elsif ($job eq "rightok1") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
&rightusers1;
}
elsif ($job eq "chgmypwd") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
if ($userlevel>=$level_chgmypwd){ &chgmypwd;}
}
elsif ($job eq "chgmypwdok") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
&chgmypwdok;
}
elsif ($job eq "setpwd") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
if ($userlevel>=$level_changepwd){ &showpwdform;}
}
elsif ($job eq "changeok") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
&check_usrpwd1;
&changepassword;
}
elsif ($job eq "setkick") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
require "$chathead/chat-writemsg.pl";
require "$chathead/chat-chkusers.pl";
&check_usrpwd1;
#检查踢人权利
&check_kickright;
&showallusers;
}
elsif ($job eq "displayuser") {
&send_html;
require "$chathead/chat-displayuser.pl";
&displayuser;
}
elsif ($job eq "kick") {
&send_html;
require "$chathead/chat-userinfo.pl";
&adduserinfo("kick");
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-admin.pl";
require "$chathead/chat-chkusers.pl";
&check_usrpwd1;
#检查踢人权利
&check_kickright;
&kickusers;
}
elsif ($job eq "logout") {
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-writeonline.pl";
require "$chathead/chat-writemsg.pl";
require "$chathead/chat-logout.pl";
&check_usrpwd1;
#删除密码帐号COOKIE
&delcookie;
#删除所有单间的本人在线信息
@addroom =&readtxtfile($addroomfile);
foreach (@addroom) {
($temp1,$roomname,$temp2)=split(/"/,$_);
&write_outline("$roomname");
}
&write_allroom("logout");
&return_logout;
}
elsif ($job eq "look") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-returnmsg.pl";
require "$chathead/chat-chkusers.pl";
&check_usrpwd1;
&check_users;
&return_message;
}
elsif ($job eq "says") {
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
if($roomtitle=~ /爱情/i)
{
require "$chathead/chat-returnonline.pl";
&return_thisonline;
}
require "$chathead/chat-writeonline.pl";
&write_online(online);
&check_room;
&send_html;
require "$chathead/chat-returnmsg.pl";
require "$chathead/chat-writemsg.pl";
require "$chathead/chat-chkusers.pl";
require "$chathead/chat-chkdnduser.pl";
&chkdnduser;
&check_users;
require "$chathead/chat-userinfo.pl";
&adduserinfo("says");
require "$chathead/chat-usercount.pl";
if ($towhoway eq "private")
{
if (((&usercount($username))<$privatefu)&&($userlevel<$level_high))
{
$towhoway="" ;
&write_message("mysays1");
} #如果信用点少于私聊一次花费的信用点,就不许私聊
else {&adduserinfo("private");} #如果是私聊就记录私聊一次
}
$tempstring=substr($says,0,5);
if (($tempstring eq "\/send")&&($userlevel >= $level_high))
{ $says=substr($says,6,length($says));
&write_allroom("system");}
else
{ if (($towho ne "")&&(&checkuseron($roomtitle,$towho) ne 1)) {&write_message("mysays");}
else {&write_message("says");}}
&return_message;
}
elsif ($job eq "online") {
require "$chathead/chat-userinfo.pl";
&adduserinfo("look");
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
&send_html;
require "$chathead/chat-returnonline.pl";
&return_online;
}
elsif ($job eq "showonline") {
&send_html;
require "$chathead/chat-online.pl";
&showonline;
}
elsif ($job eq "adver") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-adver.pl";
&return_adver;
}
elsif ($job eq "settype") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-returntype.pl";
&check_usrpwd1;
&return_type;
}
elsif ($job eq "setfunc") {
&send_html;
require "$chathead/chat-chkpwd1.pl";
require "$chathead/chat-func.pl";
&check_usrpwd1;
&return_func;
}
elsif ($job eq "showkickip") {
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
&send_html;
require "$chathead/chat-admin.pl";
&showkickip if($userlevel>=$level_high);
}
elsif ($job eq "kickip") {
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
&send_html;
require "$chathead/chat-admin.pl";
&kickip;
}
elsif ($job eq "showform") {
#否则就显示登陆窗口
require "$chathead/chat-login.pl";
&login;
}
elsif ($job eq "showcount") {
require "$chathead/chat-count.pl";
&showcount;
}
elsif ($job eq "setrecord") {
#设置录音功能
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
require "$chathead/chat-recordit.pl";
&setrecord if($userlevel>=$level_high);
}
elsif ($job eq "lookrecord") {
#查看录音
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
require "$chathead/chat-recordit.pl";
&lookrecord if($userlevel>=$level_high);
}
elsif ($job eq "clearrecord") {
#清除录音
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
require "$chathead/chat-recordit.pl";
&clearrecord if($userlevel>=$level_high);
}
elsif ($job eq "showrecord") {
#显示录音操作截面
require "$chathead/chat-chkpwd1.pl";
&check_usrpwd1;
require "$chathead/chat-recordit.pl";
&showrecord if($userlevel>=$level_high);
}
elsif ($job eq "showhelp") {
#显示使用说明
require "$chathead/chat-showhelp.pl";
&showhelp;
}
elsif ($job eq "displaycount") {
&send_html;
require "$chathead/chat-displaycount.pl";
&displaycount;
}
else
{
#否则就显示登陆窗口
require "$chathead/chat-login.pl";
&login;
}
######################
sub send_html {
if ($has_send ne "1") {
print "Content-type: text/html;CHARSET=gb2312\n";
print "Pragma:no-cache\n\n";
$has_send = "1";
}
}
###########
sub get_form {
require "$chathead/chat-chkpwd1.pl";
&firstcheck;
@querys = split(/&/, $ENV{'QUERY_STRING'});
foreach (@querys) {
($name,$value) = split(/=/, $_);
$value = &filterhtml($value);
&setvaluetoform($name, $value);
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach (@pairs) {
($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value = &filterhtml($value);
&setvaluetoform($name, $value);
}
}
##########
sub filterhtml {
local($return)=$_[0];
$return =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
$return =~ s/<([^>]|\n)*>//g;
$return =~ s/<//g;
$return =~ s/size//g;
$return =~ s/face//g;
# $return =~ s/font//g;
}
#杜绝不文明字眼
require "$chathead/chat-filter.pl";
&filter($return);
#限制使用SCRIPT语句
if (($return=~/script/i)||($return=~/js/i) ||($return=~/jscript/i)||($return=~/onclick/i)||($return=~/onmouseover/i)||($return=~/button/i))
{
&send_html;
require "$chathead/chat-error.pl";
&error("script");
}
return $return;
}
##########
sub setvaluetoform {
if ($FORM{$_[0]}) {
$FORM{$_[0]}="$FORM{$_[0]}”$_[1]";
}
else {
$FORM{$_[0]}=$_[1];
}
}
##########
sub set_var {
$job =&get_var('job' ,'\n|↑');
$username =&get_var('username' ,'\n|"|<|>|\&|;| |\?|↑');
$username=~s/ //g;
$username=~s/ //g;
$usersex =&get_var('usersex' ,'\n|↑');
$autocls =&get_var('autocls' ,'\n|↑');
$towhoway =&get_var('towhoway' ,'\n|↑');
$towho =&get_var('towho' ,'\n|↑');
$says =&get_var('says' ,'\n|↑');
$addkuai =&get_var('quicksays' ,'\n|↑');
$addroom =&get_var('room' ,'\n|↑');
$miandarao =&get_var('miandarao' ,'\n|↑');
$addwordcolor =&get_var('addwordcolor' ,'\n|↑');
$addsays =&get_var('addsays' ,'\n|↑');
$addsign =&get_var('addsign' ,'\n|↑');
$userid =&get_var('userid' ,'\n|"|<|>|\&|;| |\?|↑');
$rightname =&get_var('username' ,'\n|"|<|>|\&|;| |\?|↑');
$userpassword =&get_var('userpassword');
$changelogouturl =&get_var('changelogouturl' ,'\n|↑');
#&checkempty($job ,"No Job");
&checkempty($username,"请输入用户名!") if($job eq "login");
&checkempty($usersex ,"请选择性别!") if (($usersexmust==1) && ($job eq "login"));
&checkempty($says ,"请输入发言内容!") if ($job eq "says");
$userip=$ENV{'REMOTE_ADDR'};
$userbrowser=$ENV{'HTTP_USER_AGENT'};
($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time);
$monn=$monn+1;
#$yearn=substr(localtime,length(localtime)-4,4);
if ($monn<10) {$monn="0$monn";}
if ($dayn<10) {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10) {$minn="0$minn";}
if ($secn<10) {$secn="0$secn";}
if ($yearn>90) {$yearn="19$yearn";}
else {$yearn="20$yearn";}
$daten="$yearn/$monn/$dayn";
$daten1="$yearn/$monn/$dayn/$hourn/$minn";
$timen="$hourn\:$minn\:$secn";
$secn=$hourn*60*60+$minn*60+$secn;
$reloadtimes=4;
$reloadxx=$reloadx*$reloadtimes;
$reloadtimes=20; #在线人员时间
$reloadxxx=$reloadxx*$reloadtimes;
$userinfo1="&username=$username&userpassword=$userpassword";
$userinfo="$userinfo1&room=$roomtitle&miandarao=$miandarao";
}
#########
sub get_var {
local($return)="";
$return="$FORM{$_[0]}" if ($FORM{$_[0]});
$return=~ s/$_[1]//g;
return $return;
}
#########
sub readtxtfile {
&lockfile("$filehead$_[0]");
open(READTXTFILE,"$filehead$_[0]");
flock(READTXTFILE,$_[1]) if ($_[1]);
@readtxtfile=<READTXTFILE>;
flock(READTXTFILE,8) if ($_[1]);
close(READTXTFILE);
&unlockfile("$filehead$_[0]");
return @readtxtfile;
}
#############
sub checkempty {
local($chkval)=$_[0];
$chkval =~ s/ |<br>|\n//g;
&error1($_[1]) if ($chkval eq "");
}
##########
sub error1 {
&send_html;
print "<html><head><title>$roomtitle error</title>\n";
print "<META HTTP-EQUIV=REFRESH CONTENT='$_[1];URL=$_[2]'>\n" if (($_[1]) && ($_[2]));
print "</head><body bgcolor=$messageback text=$messageword>\n";
print "<center><h1>ERROR</h1><h2>$_[0]</h2></center>\n";
print "</body></html>\n";
exit 0;
}
sub menuti
{
print "<table><tr><td>";
print "<form method=post action=$cgiurl?job=displaycount><input type=submit value=更新排名 $buttonstyle ></form>\n";
print "</td><td>";
print "<form method=post action=$cgiurl?job=showform><input type=submit value=冰花雪夜 $buttonstyle ></form>";
print "</td><td>";
print "<form method=post action=$cgiurl?job=showonline><input type=submit value=在线名单 $buttonstyle ></form>";
print "</td><td>";
print "<form method=post action=$cgiurl?job=showhelp><input type=submit value=使用说明 $buttonstyle ></form>";
print "</td></tr></table>";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -