荔园在线

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

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


发信人: jjk (pq), 信区: InstallBBS
标  题: SMTH_001  对区段删除进行备份
发信站: 荔园晨风BBS站 (Thu Nov 29 11:21:42 2001), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@bbs.pku.edu.cn 所发表 】
发信人: Admin (新的一天从零开始), 信区: BBSDev
标  题: SMTH_001  对区段删除进行备份
发信站: 北大未名站 (2001年05月24日11:18:14 星期四), 站内信件

发信人: Leeward (4% completed★1999), 信区: BBSMan_Dev
标  题: SMTH_001  对区段删除进行备份
发信站: BBS 水木清华站 (Sat Jan 16 17:25:11 1999) WWW-POST

本文描述的修改在 FireBird 2.5 和 2.6 上均可使用.

FireBird 原始代码对使用 D 进行区段删除操作时,
不作类似用 d 单篇删除,或者是用 b 进行主题删除时的备份操作,
也就是不转移被删文章到 deleted/junk 两版.

这样,误删无法恢复;有 D 权的人(比如版主)恶意删版将造成很大损失.
同时,虽然 2.6 版在系统安全版(syssecurity)记录谁何时在何版 D 多少文章,
但是依然不能解决误删或者恶意删版的问题.
而这两种情况,我都见过多次,前者尤甚.

为此,特修改 D 操作同样使用 deleted/junk 进行备份.
修改代码于 Thu Jan 22 14:22:11 1998 由 Leeward 在水木清华站开发并运行.
修改后,用 D 在任何版区段删除成功的每篇文章, 同样放到 deleted 或 junk 版.

=========================================================================

程序修改:

1. bbs_src/record.c 的 delete_range 函数中
            unlink(fullpath);
>改成
#ifdef BACKUP_RANGE_DELETE
            if (strcmp(currboard, "deleted"))
            {
              cancelpost(currboard, currentuser.userid,
                         &fhdr, !strcmp(fhdr.owner, currentuser.userid));
            }
#endif
            unlink(fullpath);

2. 文件 bbs_src/Makefile 中编译 bbs 的指令,大概是:
$(PROGNAME): $(COBJS) $(OTHERS) 一节下的:
$(CC) -o $(PROGNAME) $(CFLAGS) $(COBJS) $(LIBS) 一句.
需要修改成为:
$(CC) -o $(PROGNAME) $(CFLAGS) -DBACKUP_RANGE_DELETE $(COBJS) $(LIBS)

3. 其它目录下的 Makefile 中,如果编译指令指定使用 bbs_src/record.o
那么需要修改为使用 bbs_src/record.c
比如如果 bbs_src/local_utl/Makefile 中 usage: usage.c ../record.o 一节,
包含指令:$(CC) $(CFLAGS) -o usage usage.c ../record.o
那么,两处 ../record.o 需要修改成为 ../record.c

这么做,是指定在编译除了 bbs 这个程序外,其它使用 bbs_src/record.c 的程序时,
不会直接连接 bbs_src/record.o 而是重新编译 bbs_src/record.c 以生成 record.o

如果直接连接, 可能会出错误的, 告诉你 cancelpost 这个函数无法连接.
这是因为除了编译 bbs 这个程序外是不定义宏 BACKUP_RANGE_DELETE 的.
而只有 bbs 这个程序可以连接并使用 cancelpost 函数对被删除的文章进行备份.

=========================================================================

当然,对 D 操作进行备份,将可能会比较显著地降低 D 操作的平均速度.
但是备份总是很重要的,尤其是要挽回误删或者恶意删文.

可以考虑改进 cancelpost 代码,加速备份操作.
--

        我 们 的 一 切 追 求 和 作 为, 都 有 一 个 令 人 厌 倦 的 过 程

   作 为 一 个 不 识 厌 倦 为 何 物 的 人, 便 掌 握 了 生 命 的 全 部 秘 密

※ 修改:·Leeward 於 Jan 16 17:32:04 修改本文·[FROM:    166.111.40.8]

--

     目前正在搜集整理内存管理相关资料
            欢迎提供

     泛一叶轻舟,漂流海上,逍遥有过于斯乎?


※ 来源:·北大未名站 bbs.pku.edu.cn·[FROM: 162.105.203.8]
--
※ 转寄:·北大未名站 bbs.pku.edu.cn·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


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

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