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 角色扮演游戏,全部可从终端菜单加载
- 跨站中转:
bbsnettelnet 中转,可连到远端 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.c、main.c、terminal.c、screen.c、tui.c、menu.c、miscd.c、bbsnet.c 等) |
lib/ |
共享库(libfbbs_base、libfbbs、libfbbs_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.cmake、FindHiRedis.cmake |
doxygen/ |
API 文档配置 |
依赖:CMake、C99 编译器、libpq、hiredis、libgcrypt、libev、FastCGI,
以及(Web 资源需要的)uglifyjs 和 lessc。
mkdir build && cd build
cmake .. && make可选选项包括 ENABLE_SSH、ENABLE_WWW、ENABLE_PG、ENABLE_BANK 和
ENABLE_FDQUAN(复旦泉站点配置)。完整说明见
docs/building.md;安装(util/install.sh)、
BBSHOME 数据目录树、守护进程启动和 Web 服务器配置见
docs/deployment.md。
- docs/architecture.md — 守护进程、会话模型、 终端栈、Web 层、后端 RPC、存储引擎
- docs/data-model.md — PostgreSQL 模式、Redis 用法、 扁平文件布局、共享内存、迁移工具
- docs/building.md — 依赖、CMake 选项、构建产物
- docs/deployment.md — 安装、配置、守护进程、 Web 服务器、日常运维
- docs/features/ — 各功能模块的详细文档
- 本代码库源自 Firebird BBS 一系:Pirate BBS(美国)→ 台湾 (1990 年代初中山大学的中文化分支)→ Firebird。Firebird 的简体中文版 后来成为大陆多数高校 BBS 系统的基础(SMTH/KBS、YTHT、PKUBBS、 Firebird2000 等)。
- 日月光华 BBS 于 1996-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+) — 见 LICENSE
和 COPYING。版权所有 © 2002–2016 fbbs 开发团队;历史上的
Firebird/Pirate BBS 作者署名见 COPYING。