📄 func.c
字号:
sprintf(toself,"<font color=green>【提示】</font>喔,你想干什么呀?<br>\n");
return;
}
if( strstr(cmdstr,"roomid") == cmdstr )
{ /* //roomid [roomid] 转换到指定的房间 */
int roomid=atoi(&cmdstr[7]);
char *roomname;
roomname=GetRN(roomid);
if( roomname!=NULL && strlen(roomname)>0 )
{
ROOMINFO *rp;
unsigned int back;
rp=GetRP(up->roomid);
rp->usernum--;
rp=GetRP(roomid);
rp->usernum++;
back=up->roomid;
up->roomid=roomid;
sprintf(toself,"<script>top.location.reload();</script>");
sprintf(totarget,"");
sprintf(toall,"【注意】[%s]离开了<font color=red>SocketChat聊天室[%s]</font>,跑到[%s]去了!<script>parent.RemoveUser('%s','%s','%s');</script><br>", up->nickname, GetRN(back), GetRN(up->roomid), up->userid, up->nickname, up->sex );
}
else
{
sprintf(toself,"<font color=red>指定的房间不存在!</font><br>");
sprintf(totarget,"");
sprintf(toall,"");
}
}else if( strstr(cmdstr,"ip") == cmdstr )
{/* 01.查看IP */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
sprintf(toself,"<font color=green>【注意】</font>[%s]的IP地址为:%s<br>\n",toup->nickname, toup->ip);
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"kickip") == cmdstr )
{/* 02.踢人IP */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
if( up->level <= toup->level )
sprintf(toself,"<font color=green>【注意】</font>你和他是平级哦……<br>\n");
else
{
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"<font color=green>【通知】</font>[%s](%s)被(%d)号管理员请出SocketChat聊天室[%s]<br><script>parent.RemoveUser('%s','%s','%s');</script>\n",toup->nickname,toup->userid,up->n_manager,GetRN(up->roomid),toup->userid,toup->nickname,toup->sex);
if( toup->level >0 ) AddBanList(2,toup->ip,60*30,toup->roomid); /* 半个小时 */
sprintf(Buffer,"<font color=red><b>您由于违反聊天室规定,被(%d)号管理员请出了聊天室。如果您对此不满,请按下<Print Screen>键,拷贝下此屏幕,然后发送到chatadmin@socketchat.com。我们会对您的投诉进行及时的处理。</b></font><br>\n",up->n_manager);
sp1=sysinfo.SOCKET_HEAD;
while(sp1!=NULL)
{
if(sp1->user==toup) break;
sp1=sp1->next;
}
write(sp1->socketfd,Buffer,strlen(Buffer));
LogOut(toup->nickname,toup->sid);
}
}else if( strstr(cmdstr,"kicklist") == cmdstr )
{/* 03.踢人名单 */
BANLIST *p;
char buf[3000];
IsBan("", "", -1);
p=BanList;
buf[0]='\0';
while( p!=NULL )
{
if( p->roomid==-1 || p->roomid==up->roomid )
sprintf(&buf[strlen(buf)],"%s,",p->ban);
if( strlen(buf) >1800 )
{
int j;
char *s;
j=strlen(buf);
if( j-1800 <2 ) j-=2;
s=strstr(&buf[j],",");
if( s==NULL )
sprintf(buf,"Process 'kicklist' Error<br>\n");
else
sprintf(s,"......");
break;
}
p=p->next;
}
sprintf(toself,"<font color=green>【注意】</font>被踢人员的清单:%s<br>\n",buf);
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"kick") == cmdstr )
{/* 04.踢人名字 */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
if( up->level <= toup->level )
sprintf(toself,"<font color=green>【注意】</font>你和他是平级哦……<br>\n");
else
{
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"<font color=green>【通知】</font>[%s](%s)被(%d)号管理员请出SocketChat聊天室[%s]<br><script>parent.RemoveUser('%s','%s','%s');</script>\n",toup->nickname,toup->userid,up->n_manager,GetRN(up->roomid),toup->userid,toup->nickname,toup->sex);
if( toup->level >0 ) AddBanList(1,toup->userid,60*30,toup->roomid); /* 半个小时 */
sprintf(Buffer,"<font color=red><b>您由于违反聊天室规定,被(%d)号管理员请出了聊天室。如果您对此不满,请按下<Print Screen>键,拷贝下此屏幕,然后发送到chatadmin@socketchat.com。我们会对您的投诉进行及时的处理。</b></font><br>\n",up->n_manager);
sp1=sysinfo.SOCKET_HEAD;
while(sp1!=NULL)
{
if(sp1->user==toup) break;
sp1=sp1->next;
}
write(sp1->socketfd,Buffer,strlen(Buffer));
LogOut(toup->nickname,toup->sid);
}
}else if( strstr(cmdstr,"unkick") == cmdstr )
{/* 05.解除踢人 */
if( strlen(cmdstr)<=6 )
{
sprintf(toself,"<font color=green>【指令格式】</font>//unkick [ID]<br>\n");
return;
}
UnBan(&cmdstr[7], &cmdstr[7], up->roomid);
sprintf(toself,"<font color=green>【注意】</font>[%s] 被放出来了:-)<br>\n",&cmdstr[7]);
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"filterlist") == cmdstr )
{/* 06.过滤名单 */
USERINFO *ulist;
char buf[3000];
ulist=sysinfo.USER_HEAD;
while(ulist!=NULL)
{
if( ulist->status&0x0001 )
{
sprintf(&buf[strlen(buf)],"%s,",ulist->userid);
}
if( strlen(buf) >1800 )
{
int j;
char *s;
j=strlen(buf);
if( j-1800 <2 ) j-=2;
s=strstr(&buf[j],",");
if( s==NULL )
sprintf(buf,"Process 'filterlist' Error<br>\n");
else
sprintf(s,"......");
break;
}
ulist=ulist->next;
}
sprintf(toself,"<font color=green>【注意】</font>被过滤人员名单:%s<br>\n",buf);
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"filter") == cmdstr )
{/* 07.系统过滤 */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
if( up->level <= toup->level )
sprintf(toself,"<font color=green>【注意】</font>你和他是平级哦……<br>\n");
else
{
toup->status|=0x0001;
sprintf(toself,"<font color=green>【注意】</font>[%s](%s)已经加入到系统过滤表",toup->userid,toup->nickname);
sprintf(totarget,"<font color=green>【注意】</font>您已经被系统过滤");
}
sprintf(toall,"");
}else if( strstr(cmdstr,"modlist") == cmdstr )
{/* 08.室主列表 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"adminlist") == cmdstr )
{/* 09.网管列表 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"unfilter") == cmdstr )
{/* 10.解除过滤 */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
if( toup->status&0x0001 ) toup->status^=0x0001;
sprintf(toself,"<font color=green>【注意】</font>[%s](%s)已经解除过滤<br>\n",toup->userid,toup->nickname);
sprintf(totarget,"<font color=green>【注意】</font>您已从系统过滤名单中移出<br>\n");
sprintf(toall,"");
}else if( strstr(cmdstr,"msg") == cmdstr )
{/* 11.发管理员消息 */
if( strlen(cmdstr)<=3 )
{
sprintf(toself,"<font color=green>【指令格式】</font>//msg [信息]<br>\n");
return;
}
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"<font color=green>【管理员消息】</font><font color=red>%s -- by [%s]</font><br>\n",&cmdstr[4], up->nickname);
}else if( strstr(cmdstr,"grant") == cmdstr )
{/* 12.授予室主 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"revoke") == cmdstr )
{/* 13.取消室主 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"hidden") == cmdstr )
{/* 14.隐身 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"appear") == cmdstr )
{/* 15.现身 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"kill") == cmdstr )
{/* 16.踢全站IP */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
if( up->level <= toup->level )
sprintf(toself,"<font color=green>【注意】</font>你和他是平级哦……<br>\n");
else
{
sprintf(toself,"");
sprintf(totarget,"<font color=red><b>您由于违反聊天室规定,被(%d)号管理员请出了聊天室。如果您对此不满,请按下<Print Screen>键,拷贝下此屏幕,然后发送到chatadmin@socketchat.com。我们会对您的投诉进行及时的处理。</b></font>\n",up->n_manager);
sprintf(toall,"<font color=green>【通知】</font>[%s](%s)被(%d)号管理员请出SocketChat聊天室[%s]\n",toup->nickname,toup->userid,up->n_manager,GetRN(up->roomid));
AddBanList(2,toup->ip,60*30,-1); /* 半个小时 */
LogOut(toup->nickname,toup->sid);
}
}else if( strstr(cmdstr,"bcast") == cmdstr )
{/* 17.系统消息 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"%s",&cmdstr[6]);
}else if( strstr(cmdstr,"seeall") == cmdstr )
{/* 18.看破隐身 */
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"hereall") == cmdstr )
{/* 19.查看私聊 */
up->status|=0x0200;
sprintf(toself,"<font color=green>【注意】</font>您现在可以看到其它人的私聊,请您遵守管理员守则,为用户保密<br>\n");
sprintf(totarget,"");
sprintf(toall,"");
}else if( strstr(cmdstr,"status") == cmdstr )
{/* 20.查看状态 */
if( toup==NULL )
{
sprintf(toself,"<font color=green>【注意】</font>目标不存在<br>\n");
return;
}
sprintf(toself,"<font color=green>【状态】</font>等级:%d<br>\n",toup->level);
sprintf(totarget,"");
sprintf(toall,"");
}else
{
sprintf(toself,"");
sprintf(totarget,"");
sprintf(toall,"");
}
}
void Func_Say(int connfd, RequestData *RDp)
{
char *fromname,*toname,*action,*color,*pic,*hidden,*message,*roomid;
USERINFO *utest;
fromname=GetFormVarValue(RDp->Form,"fromname");
toname=GetFormVarValue(RDp->Form,"toname");
action=GetFormVarValue(RDp->Form,"action");
color=GetFormVarValue(RDp->Form,"color");
pic=GetFormVarValue(RDp->Form,"pic");
hidden=GetFormVarValue(RDp->Form,"hidden");
message=GetFormVarValue(RDp->Form,"msg");
roomid=GetFormVarValue(RDp->Form,"roomid");
utest = GetUP(fromname);
if( utest==NULL || utest->status == 0 || utest->status & 0x0001 )
{
WriteHeader(connfd);
return;
}
if( fromname!=NULL && toname!=NULL && action!=NULL && color!=NULL && pic!=NULL && message!=NULL && roomid!=NULL )
{
printf("Roomid=[%d], ID=[%s], ToID=[%s], Hidden=%d\n",atoi(roomid),GetID(fromname), GetID(toname),(hidden==NULL)?0:1 );
if( message!=NULL )
{
char toself[2048], totarget[2048], toall[2048];
if( message[0]=='/' && message[1] =='/' )
{
Func_Cmd(&message[2], GetID(fromname), GetID(toname), toself, totarget, toall);
if( strlen(toself)!=0 || strlen(totarget)!=0 || strlen(toall)!=0 )
{
if( strlen(toself) != 0 )
{
USERINFO *up;
up = GetUP(fromname);
AddWords(up->roomid, NULL, GetID(fromname), 0, color, pic, toself, 3 );
}
if( strlen(totarget) != 0 )
{
AddWords(atoi(roomid), NULL, GetID(toname), 0, color, pic, totarget, 3 );
}
if( strlen(toall) != 0 )
{
AddWords(atoi(roomid), NULL, NULL, 0, color, pic, toall, 2 );
}
}
else AddWords(atoi(roomid), GetID(fromname), GetID(toname), 0, color, pic, message, (hidden==NULL)?0:1 );
}
else AddWords(atoi(roomid), GetID(fromname), GetID(toname), 0, color, pic, message, (hidden==NULL)?0:1 );
ForceSend();
}
}
WriteHeader(connfd);
}
void Func_Act(char *actstr, char *retstr, char *id, char *toid)
{
unsigned int i;
char *buf;
char buf1[4096];
ActFace *p;
p=sysinfo.action;
while( p!=NULL )
{
if( strcmp(actstr, p->name)==0 ||
strcmp(actstr, p->action)==0 )
{
if( toid==NULL || strlen(toid)==0 )
{
if( id==NULL || strlen(id)==0 )
{ /* id 与 toid 都为空 */
retstr[0]='\0';
return;
}
buf = (char *)Malloc(strlen(p->msg1)+1);
strcpy( buf, p->msg1 );
sprintf(buf1,"<a href=\"\" OnClick=\"parent.SelectUser(\\\'%s\\\');return false;\">%s</a>",id,GetNN(id));
buf = ExChange(buf, "[source]", buf1);
strcpy( retstr, buf );
Free(buf);
return;
}
else
{
if( id==NULL || strlen(id)==0 )
{ /* id 为空 */
retstr[0]='\0';
return;
}
buf = (char *)Malloc(strlen(p->msg2)+1);
strcpy( buf, p->msg2 );
sprintf(buf1,"<a href=\"\" OnClick=\"parent.SelectUser(\\\'%s\\\');return false;\">%s</a>",id,GetNN(id));
buf = ExChange(buf, "[source]", buf1);
sprintf(buf1,"<a href=\"\" OnClick=\"parent.SelectUser(\\\'%s\\\');return false;\">%s</a>",toid,GetNN(toid));
buf = ExChange(buf, "[target]", buf1);
strcpy( retstr, buf );
Free(buf);
return;
}
}
p=p->next;
}
retstr[0]='\0';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -