- 主题:KBS用户权限详解
这个~
自己喜欢的就往上加
int uleveltochar(char *buf, struct userec *lookupuser)
{ /* 取用户权限中文说明 Bigman 2001.6.24 */
unsigned lvl;
char userid[IDLEN + 2];
#ifdef HAVE_CUSTOM_USER_TITLE
if (lookupuser->title != 0) {
strcpy(buf, get_user_title(lookupuser->title));
if (buf[0] != 0)
return 0;
}
#endif
lvl = lookupuser->userlevel;
strncpy(userid, lookupuser->userid, IDLEN + 2);
if (!(lvl & PERM_BASIC) && !(lookupuser->flags & GIVEUP_FLAG)) {
strcpy(buf, "新人");
return 0;
}
/* if( lvl < PERM_DEFAULT )
{
strcpy( buf, "- --" );
return 1;
}
*/
/*
* Bigman: 增加中文查询显示 2000.8.10
*/
/*
* if( lvl & PERM_ZHANWU ) strcpy(buf,"站务");
*/
if ((lvl & PERM_ANNOUNCE) && (lvl & PERM_OBOARDS))
strcpy(buf, "站务");
else if (lvl & PERM_JURY)
strcpy(buf, "仲裁"); /* stephen :增加中文查询"仲裁" 2001.10.31 */
else if (lvl & PERM_BMAMANGER)
strcpy(buf, "实习站务");
else if (lvl & PERM_COLLECTIVE)
strcpy(buf, "专用");
else if (lvl & PERM_CHATCLOAK)
strcpy(buf, "元老");
else if (lvl & PERM_CHATOP)
strcpy(buf, "ChatOP");
else if (lvl & PERM_BOARDS)
strcpy(buf, "版主");
else if (lvl & PERM_HORNOR)
strcpy(buf, "荣誉");
else if ((lvl & PERM_SECANC) && !(lvl & PERM_CHECKCD))
strcpy(buf, "交大校友");
else if ((lvl & PERM_CHECKCD) && !(lvl & PERM_SECANC))
strcpy(buf, "校外友人");
else if ((lvl & PERM_CHECKCD) && (lvl & PERM_SECANC))
strcpy(buf, "校内师生");
/*
* Bigman: 修改显示 2001.6.24
*/
else if (lvl & (PERM_LOGINOK)) {
if (lookupuser->flags & GIVEUP_FLAG)
strcpy(buf, "戒网");
else if (!(lvl & (PERM_CHAT)) || !(lvl & (PERM_PAGE)) || !(lvl & (PERM_POST))
|| (lvl & (PERM_DENYMAIL)) || (lvl & (PERM_DENYRELAX)))
strcpy(buf, "受限");
else
strcpy(buf, "用户");
} else if (lookupuser->flags & GIVEUP_FLAG)
strcpy(buf, "戒网");
else if (!(lvl & (PERM_CHAT)) && !(lvl & (PERM_PAGE)) && !(lvl & (PERM_POST)))
strcpy(buf, "新人");
else
strcpy(buf, "受限");
/* else {
buf[0] = (lvl & (PERM_SYSOP)) ? 'C' : ' ';
buf[1] = (lvl & (PERM_XEMPT)) ? 'L' : ' ';
buf[2] = (lvl & (PERM_BOARDS)) ? 'B' : ' ';
buf[3] = !(lvl & (PERM_POST)) ? 'p' : ' ';
if( lvl & PERM_ACCOUNTS ) buf[3] = 'A';
if( lvl & PERM_SYSOP ) buf[3] = 'S';
buf[4] = '\0';
}
*/
return 1;
}
【 在 JulyClyde (七月) 的大作中提到: 】
: 其实,对于几个特殊的身份如何显示,在site.c里面就有写
: 但都拥有些什么权限,不看代码的话还真是挺神秘的
: 而代码又是那么的……
: ...................
--
FROM 218.249.29.*
哦,记错了。应该是不打开E显示受限
【 在 pig2532 (猪猪猪) 的大作中提到: 】
: 只打开E显示的是新人
--
FROM 222.137.187.*
我来注释一下代码
【 在 tombcy (tombcy) 的大作中提到: 】
: 这个~
: 自己喜欢的就往上加
: int uleveltochar(char *buf, struct userec *lookupuser)
: { /* 取用户权限中文说明 Bigman 2001.6.24 */
: unsigned lvl;
: char userid[IDLEN + 2];
: #ifdef HAVE_CUSTOM_USER_TITLE
: if (lookupuser->title != 0) {
: strcpy(buf, get_user_title(lookupuser->title));
: if (buf[0] != 0)
: return 0;
: }
: #endif
以上:如果定义了HAVE_CUSTOM_USER_TITLE,就把用户职务字符串返回
: lvl = lookupuser->userlevel;
: strncpy(userid, lookupuser->userid, IDLEN + 2);
: if (!(lvl & PERM_BASIC) && !(lookupuser->flags & GIVEUP_FLAG)) {
: strcpy(buf, "新人");
: return 0;
: }
如果没有PERM_BASIC权限,或者自杀了,就显示“新人”
: /* if( lvl < PERM_DEFAULT )
: {
: strcpy( buf, "- --" );
: return 1;
: }
: */
: /*
: * Bigman: 增加中文查询显示 2000.8.10
: */
: /*
: * if( lvl & PERM_ZHANWU ) strcpy(buf,"站务");
: */
: if ((lvl & PERM_ANNOUNCE) && (lvl & PERM_OBOARDS))
: strcpy(buf, "站务");
同时拥有精华区总管和讨论区总管的显示“站务”
: else if (lvl & PERM_JURY)
: strcpy(buf, "仲裁"); /* stephen :增加中文查询"仲裁" 2001.10.31 */
否则,如果有仲裁权,就显示“仲裁”
: else if (lvl & PERM_BMAMANGER)
再否则,如果有实习站务权,就显示“实习站务”
: strcpy(buf, "实习站务");
: else if (lvl & PERM_COLLECTIVE)
: strcpy(buf, "专用");
再否则,如果是集体帐号,就显示“专用”
: else if (lvl & PERM_CHATCLOAK)
: strcpy(buf, "元老");
再否则,如果有智囊团权限,就显示“元老”
: else if (lvl & PERM_CHATOP)
: strcpy(buf, "ChatOP");
再否则,如果有ChatOP权,显示ChatOP
: else if (lvl & PERM_BOARDS)
: strcpy(buf, "版主");
再否则,如果有版主权限,显示“版主”
: else if (lvl & PERM_HORNOR)
: strcpy(buf, "荣誉");
再否则,如果有荣誉帐号身份,显示“荣誉”
: else if ((lvl & PERM_SECANC) && !(lvl & PERM_CHECKCD))
: strcpy(buf, "交大校友");
: else if ((lvl & PERM_CHECKCD) && !(lvl & PERM_SECANC))
: strcpy(buf, "校外友人");
: else if ((lvl & PERM_CHECKCD) && (lvl & PERM_SECANC))
: strcpy(buf, "校内师生");
再否则……这部分是你自己改的吧?
: /*
: * Bigman: 修改显示 2001.6.24
: */
: else if (lvl & (PERM_LOGINOK)) {
: if (lookupuser->flags & GIVEUP_FLAG)
: strcpy(buf, "戒网");
如果使用者资料正确,且正在戒毒,显示戒毒
: else if (!(lvl & (PERM_CHAT)) || !(lvl & (PERM_PAGE)) || !(lvl & (PERM_POST))
: || (lvl & (PERM_DENYMAIL)) || (lvl & (PERM_DENYRELAX)))
: strcpy(buf, "受限");
否则,判断其基本的聊天、呼叫、发帖权限,以及是否封禁Mail和娱乐权限
如果有,显示“受限”
: else
: strcpy(buf, "用户");
最后才是显示“用户”
: } else if (lookupuser->flags & GIVEUP_FLAG)
: strcpy(buf, "戒网");
如果使用者资料不正确,且正在戒毒,显示戒毒
: else if (!(lvl & (PERM_CHAT)) && !(lvl & (PERM_PAGE)) && !(lvl & (PERM_POST)))
: strcpy(buf, "新人");
这部分是为广大改权限爱好者准备的
: else
: strcpy(buf, "受限");
: /* else {
: buf[0] = (lvl & (PERM_SYSOP)) ? 'C' : ' ';
: buf[1] = (lvl & (PERM_XEMPT)) ? 'L' : ' ';
: buf[2] = (lvl & (PERM_BOARDS)) ? 'B' : ' ';
: buf[3] = !(lvl & (PERM_POST)) ? 'p' : ' ';
: if( lvl & PERM_ACCOUNTS ) buf[3] = 'A';
: if( lvl & PERM_SYSOP ) buf[3] = 'S';
: buf[4] = '\0';
: }
: */
: return 1;
: }
--
修改:JulyClyde FROM 222.137.187.*
FROM 222.137.187.*
如果使用者资料正确,且正在戒毒,显示戒毒
不错
【 在 JulyClyde (七月) 的大作中提到: 】
: 我来注释一下代码
: 以上:如果定义了HAVE_CUSTOM_USER_TITLE,就把用户职务字符串返回
: 如果没有PERM_BASIC权限,或者自杀了,就显示“新人”
: ...................
--
FROM 61.135.159.*
kbs没有合理的递进的嵌套关系
例如sysop是集体站号,因为有了站务权限就捕现实专用了
【 在 JulyClyde (七月) 的大作中提到: 】
: 我来注释一下代码
: 以上:如果定义了HAVE_CUSTOM_USER_TITLE,就把用户职务字符串返回
: 如果没有PERM_BASIC权限,或者自杀了,就显示“新人”
: ...................
--
FROM 80.5.160.*
这个很容易改的
而且是在site.c里面实现的
【 在 ukbee (小蜜蜂) 的大作中提到: 】
: kbs没有合理的递进的嵌套关系
: 例如sysop是集体站号,因为有了站务权限就捕现实专用了
--
FROM 222.137.187.*
除了zixia站,其它的好像都没有大的改动
【 在 etnlegend (etn|金字塔·失恋|available) 的大作中提到: 】
: 这些东西基本完全由站点定制文件决定, 没啥讨论意义吧...
--
FROM 222.137.187.*