荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjksam (<ENTER>), 信区: InstallBBS
标  题: [src]拒收群体信息功能
发信站: 荔园晨风BBS站 (Sun Mar  9 14:50:04 2003), 转信


功能描述:

以下说明是按照荔园晨风的主菜单的:

可以选择是否接受群体信息,默认的是接受的。
在主菜单的[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]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店