鉴于我校BBS近日水患严重,正就读于水利工程博士的qyb(qyb*大禹治水)经过
多年苦心研究,发表论文<<论BBS水患的治理>>,经我爱南开BBS站务组评审,认为
该文填补了我国水利治理领域的一个空白,现整理公告如下:
1. 需要对.PASSWDS转换
由于广大网虫使用的终端格式都是vt100,决定去除termtype[STRLEN]的使用,但仍
在struct.h中有所保留。将struct.h修改如下
....
char ident[NAMELEN];
/*以下为增加部分*/
time_t virtual_logintime;
short day_offset;
short m_count;
char termtype[STRLEN-8]; /*上面的三个变量共增加了8个char*/
/*结束*/
unsigned int userlevel;
...
转换程序主代码:/*可以参考local_utl/restruct.c*/
....
while(fread(&fh,sizeof(struct userec),1,fp)>0) {
if(用户已经通过注册) {
fh.virtual_logintime=fh.lastlogin+120*SECONDOFDAY; /*一天的秒数 86400*/
fh.day_offset=120;
}
else {
fh.virtual_logintime=fh.lastlogin+15*SECONDOFDAY;
fh.day_offset=15;
}
fh.m_count=0;
}
....
新增变量功能说明:更改用户生命力计算方法
生命力=(virtual_logintime-time(NULL))/SECONDOFDAY;
取代原来的由lastlogin计算的方法
当斑竹删除一篇water的时候,day_offset--; (当然不能减的太小)
virtual_logintime-=SECONDOFDAY; (这个也不可以减的太小 :P )
每当斑竹m一篇文章,m_count++ (给关税者改过自信的机会)
每当用户登录的时候,增加这样的代码
if(m_count>=5) {
day_offset=(通过注册)?120:15;
m_count=0;
}
virtual_logintime = time(NULL) + day_offset * SECONDOFDAY;
2.
相应的,修改所有跟termtype有关的代码,改成缺省vt100
修改register.c中计算生命力的函数compute_user_value()
修改bbs.c中删除文章的del_post()
修改bbs.c中标记文章的mark_post()
修改main.c中user_login()
3.
本文档只是给出一个anti-water的思路,代码并未成熟,还有少许情况
如区段删除、斑竹清理过时文章时程序应该如何运做并没有考虑周全,
但有一个设想就是仅仅当删除最近一段时间(比如两周)的文章时才进行
减小灌水者生命力的操作
4.
需要指出的是,由于virtual_logintime和day_offset这两个变量的引入,
很容易就可以实现SMTH的自杀者生命力降为14,在账号未被注销之前登录
就可以恢复回来的功能——只需virtual_logintime=time(NULL)+15*SECONDOFDAY;
day_offset不改变就可以。
5.
本程序现在正在南开一台机器上测试运行
附:由于qyb(qyb*大禹治水)被控为变态,第二号公告可能会推迟公布。
--
修改:qyb FROM 202.113.18.2
FROM 202.113.18.2