Skip to content
 
 

Latest commit

 

History

2,901 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fbbs — 日月光华 BBS

fbbs 是曾经驱动日月光华 BBS(bbs.fudan.edu.cn / bbs.fudan.sh.cn, 复旦大学 BBS)的 BBS 引擎。日月光华在鼎盛时期是中国最大的高校 BBS 之一, 约有 400 多个版面、约 8 万注册账号,最高同时在线超过 10,000 人。

它是 Firebird 系 BBS 的经典血统在现代基础设施上的重写:C99 核心, Telnet/SSH 终端界面,两代人并存的 Web 界面(旧的 XML+XSLT 和基于 JSON 的 JavaScript 单页应用),PostgreSQL 作为权威数据存储,Redis 存放实时状态, 另有一层基于 Unix socket 的后端工作进程,把所有写操作隔离在独立进程中执行。

功能特性

  • 终端 BBS:全屏 ANSI 文本界面,增量重绘,可编辑输入(UTF-8/GBK), 编译式菜单系统,支持权限过滤和动态加载模块
  • Web BBS:FastCGI 守护进程,用同一组处理器支撑两代前端——由浏览器端 XSLT 渲染的旧式 XML,以及由基于 Mustache 的单页应用消费的 JSON API; 另有专门的移动版界面
  • 版面:分区、版主、收藏夹(支持文件夹)、未读追踪、文摘、置顶帖、 版内搜索、RSS、每日热词、十大话题
  • 发帖:发表/回复/编辑/删除/转寄/转载,主题串,@提醒,带配额检查的 附件
  • 邮件:站内私信(带未读追踪),另附独立的 POP3 网关 (util/bbspop3d.c,注意:它未被 CMake 构建,需自行编译)
  • 社交:关注/黑名单(带触发器),好友在线状态,个人资料,签名档, 个人说明档(plan)
  • 经济系统:虚拟货币、道具商店、可购买的自定义头衔(带审批流程和审计 记录)
  • 游戏:扫雷、21 点/赌场、银行/股市、虚拟宠物,以及多模块的 PIP 角色扮演游戏,全部可从终端菜单加载
  • 跨站中转:bbsnet telnet 中转,可连到远端 BBS 站点
  • 运维工具:统计、版主活跃度报告、僵死会话清理、用户归档、公告生成, 以及旧格式到 PostgreSQL 的迁移脚本

架构

  Telnet/SSH ──▶ bbsd(每连接 fork)──┐
                                    ├──▶ bbsbed-proxy ──▶ bbsbed × N ──┐
  浏览器 ──▶ Web 服务器 ──▶ bbswebd ┘     (Unix socket, libev)          │
                    │ (FastCGI)                                        ▼
                    └──────────── 经由 libfbbs 直接读          PostgreSQL(权威存储)
                                                              Redis(易失状态)
                                + 扁平文件与 SysV 共享内存(遗留/缓存)
  • bbsd 为每个终端连接 fork 一个进程;bbswebd 处理 Web 请求。两者的 写操作都经由 bbsbed-proxy 交给 bbsbed 工作进程执行。
  • PostgreSQL 持有用户、版面、帖子、会话、社交关系、收藏夹和付费数据。 Redis 只保存派生状态(会话索引、计数器、Web 会话令牌)。扁平文件和 System V 共享内存作为遗留存储和缓存层保留下来。

详见 docs/architecture.md · docs/data-model.md

仓库结构

路径 内容
src/ 核心守护进程与终端界面(bbsd.cmain.cterminal.cscreen.ctui.cmenu.cmiscd.cbbsnet.c 等)
lib/ 共享库(libfbbs_baselibfbbslibfbbs_pg):记录引擎,帖子/版面/用户/会话逻辑,Redis/PostgreSQL 封装,SysV 共享内存,后端客户端
backend/ bbsbed-proxy(libev 多路复用器)和 bbsbed 工作进程
fcgi/ bbswebd FastCGI Web 守护进程(18 个处理器模块)
include/ 公共头文件(include/fbbs/)、site.h 站点配置、config.h.cmake
pg/ PostgreSQL 模式、触发器、存储过程
html/ Web 资源:单页应用外壳(bbs/home/)、旧版 XSLT(xsl/)、图片、CSS、generator 模板工具
js/less/ 新版 Web 前端(uglifyjs/lessc 流水线)
game/ 可加载游戏(winmine、casino、money、chicken、PIP)
util/ 管理/监控工具、迁移脚本、代码生成器、install.sh
bbshome/ 运行时数据骨架(etc/ 模板、二进制 BOARDS 缓存)
cmake/ FindGCrypt.cmakeFindHiRedis.cmake
doxygen/ API 文档配置

编译

依赖:CMake、C99 编译器、libpq、hiredis、libgcrypt、libev、FastCGI, 以及(Web 资源需要的)uglifyjslessc

mkdir build && cd build
cmake .. && make

可选选项包括 ENABLE_SSHENABLE_WWWENABLE_PGENABLE_BANKENABLE_FDQUAN(复旦泉站点配置)。完整说明见 docs/building.md;安装(util/install.sh)、 BBSHOME 数据目录树、守护进程启动和 Web 服务器配置见 docs/deployment.md

文档

历史

  • 本代码库源自 Firebird BBS 一系:Pirate BBS(美国)→ 台湾 (1990 年代初中山大学的中文化分支)→ Firebird。Firebird 的简体中文版 后来成为大陆多数高校 BBS 系统的基础(SMTH/KBS、YTHT、PKUBBS、 Firebird2000 等)。
  • 日月光华 BBS1996-04-19 在复旦大学创立,站名出自《尚书大传》 「日月光华,旦复旦兮」,复旦大学的校名也出自同一句。1996 年秋曾短暂 关闭(1996-09-19),1996-10-30 恢复,1997-07-08 成为校方正式 BBS。
  • 鼎盛时期它是中国最大的高校 BBS 之一(约 443 个版面、约 8 万账号、峰值 同时在线超过 1 万人)。2010 年代随着社交网络兴起,访问量逐渐下滑 (2011 年日均在线约 3,000 人,当年关闭了 66 个低流量版面)。
  • fbbs 代码库本身由 fbbs 开发团队(bbs.fudan.edu.cn / bbs.fudan.sh.cn)维护,版权年份为 2002–2016;本仓库的 git 历史跨度为 2008–2016。

许可证

GNU 通用公共许可证第 3 版或更高版本(GPLv3+) — 见 LICENSECOPYING。版权所有 © 2002–2016 fbbs 开发团队;历史上的 Firebird/Pirate BBS 作者署名见 COPYING

About

Firebird Bulletin Board System

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages