|
珞珈山水BBS →
电脑网络 →
BBS安装与维护 →
单文区文章阅读
|
| 单文区文章阅读 [返回] |
|---|
|
发信人: jjksam.bbs@bbs.szu.edu.cn (<ENTER>), 信区: BBSDev 标 题: [src]拒收群体信息功能 发信站: 深圳大学荔园晨风BBS (Sun Mar 9 14:50:04 2003) 转信站: WHU!news.tiaozhan.com!SZU 功能描述: 以下说明是按照荔园晨风的主菜单的: 可以选择是否接受群体信息,默认的是接受的。 在主菜单的[I]nfo 个人信息 |__ (U)serDefine 个人参数设定 可以找到这个选项。 代码修改: 1. include/bbs.h 增加 +#define MSGWALL 0x10 /* add by jjk March 9, 2002 */ 2. include/permission.h 按下面的方法加一个bit, 注意要按照递增的顺序加。 #define DEF_NEWSTOP10 0x02000000 +#define DEF_MSGWALL 0x04000000 /* 接受群体信息,add by jjk on March 9, 2003 */ 把NUMDEFINES加1。 即: -#define NUMDEFINES 26 +#define NUMDEFINES 27 在下面的字符串数组里面加上 char *user_definestr[] = { .... "不使用汉字整字删除", /* DEF_DELDBLCHAR */ "进站时观看全国十大排行榜", /* DEF_NEWSTOP10 */ + "接收群体信息", /* DEF_MSGWALL */ NULL }; 3. src/xyz.c 在下面的函数中增加代码: x_userdefine() { ... uinfo.pager &= ~ALLMSG_PAGER; uinfo.pager &= ~FRIENDMSG_PAGER; + uinfo.pager &= ~MSGWALL; /* add by jjk from FB20001219 Apr 1, 2002 */ if (DEFINE(DEF_DELDBLCHAR)) enabledbchar=0; else enabledbchar=1; /* end add */ if (DEFINE(DEF_FRIENDMSG)) { uinfo.pager |= FRIENDMSG_PAGER; } if (DEFINE(DEF_ALLMSG)) { uinfo.pager |= ALLMSG_PAGER; uinfo.pager |= FRIENDMSG_PAGER; } + /* add by jjk March 9, 2003 */ + if (DEFINE(DEF_MSGWALL)) { + uinfo.pager |= MSGWALL; + } + /* end add.jjk */ update_utmp(); if (DEFINE(DEF_ACBOARD)) nettyNN = NNread_init(); prints("新的参数设定完成...\n\n"); } ... } 4. src/list.c 增加下面的函数。 /* add by jjk March 9, 2002 */ int iswall(uentp) struct user_info *uentp; { if (uentp->pager & MSGWALL) return YEA; return NA; } /* end add.jjk */ 5. src/main.c 在u_enter()中增加: if (DEFINE(DEF_ALLMSG)) { uinfo.pager |= ALLMSG_PAGER; uinfo.pager |= FRIENDMSG_PAGER; } + /* add by jjk March 9, 2002 */ + if (DEFINE(DEF_MSGWALL)) { + uinfo.pager |= MSGWALL; + } + /* end add.jjk */ uinfo.uid = usernum; strncpy(uinfo.from, fromhost, 60); 6. src/sendmsg.c 修改代码如下: int myfriend_wall(uin) struct user_info *uin; { + /* modified by jjk Apr 12, 2002 */ - if ((uin->pid - uinfo.pid == 0) || !uin->active || !uin->pid || isreject(uin)) + if ((uin->pid - uinfo.pid == 0) || !uin->active || !uin->pid || isreject(uin) + || !iswall(uin)) + /* end modified.jjk */ ... } int hisfriend_wall(uin) struct user_info *uin; { + /* modified by jjk March 9, 2002 */ - if ((uin->pid - uinfo.pid == 0) || !uin->active || !uin->pid || isreject(uin)) + if ((uin->pid - uinfo.pid == 0) || !uin->active || !uin->pid || isreject(uin) + || !iswall(uin)) + /* end modified.jjk */ return -1; ... } 7. 执行下面的命令(因为修改了include中的文件,所以需要make clean) make clean && make &&make update kill -9 `cat ~bbs/reclog/bbsd.pid` ~bbs/bin/bbsd 23 8. 注意,由于群体信息关联到其他id的utmp,所以要两方都重新登陆了才能生效, 除非把全站的人都kick下去。xixi :-) -- ξ █D Would you like to have a cup of tea with me? ※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.234] |
| [返回单文区目录] |
|
|