qing
|
9b6aa39b94
|
fix(dnfs2): update_note 成环检测(修复已知限制 L-1)
新增 _is_descendant 祖先走查:改 pid 时从新父节点沿 pid 链逐级向上,
命中自身即拒绝(自引用/移入自身子树均成环,子树不可达);深度上限 64
+ visited 集防存量脏数据死循环,db 错误 fail-closed 抛 500。
README 已知限制 L-1 移入安全修复表。
|
2026-08-13 04:10:35 +08:00 |
|
qing
|
49d9a33420
|
fix: 主题/样式继承查询跳过观看计数——前后端配合 noread 标记
前端 inheritThemeStyle 的 fetch 体附加 noread:true,后端 dnfs2
_handle_get_notes 检测到该标记时跳过 _bump_views,避免静默查询
污染节点的观看次数统计。
|
2026-08-12 15:48:12 +08:00 |
|
qing
|
01c699e7a6
|
feat: Notes 新增创建时间/更新时间列,dnfs2 添加/更新时填入本地时间
- patch_002 存量补丁:created_at / updated_at DATETIME 列
- dnfs2 add_note 同时填入两个时间戳,update_note 只更新 updated_at
- 时间格式 local_now():"YYYY-MM-DD HH:MM:S"(本地时间)
|
2026-08-11 10:34:09 +00:00 |
|
qing
|
c9777cbff8
|
feat: 前端卡片观看数/子节点数接线后端
- dnfs2 get_notes 为每个节点附上 child_count(一次 IN 批量查询统计子节点数,best-effort)
- dnfs.js 卡片眼睛=views 观看数、转发=child_count 子节点数(原 share_count/visit_count 后端无字段恒为 0)
|
2026-08-11 10:06:33 +00:00 |
|
qing
|
986acab1c5
|
feat: Notes 新增 views 观看人数列,dnfs2 get_notes 打开节点时自增
- db2 补丁 patch_001:Notes 增加 views 列(默认 0),补齐 pid/owner 索引
- dnfs2 get_notes(pid) 打开节点时对 pid 的 views 读改写 +1(best-effort,失败不影响主流程)
|
2026-08-11 09:51:14 +00:00 |
|
qing
|
77bc367d03
|
dnfs2: 移除样式节点 persist 全局保持机制,样式仅节点作用域生效
|
2026-08-10 11:52:15 +00:00 |
|
qing
|
75a45313c4
|
dnfs2: 特殊节点移除 link 类型,精简为 js/file/style/theme 四类
|
2026-08-10 11:17:19 +00:00 |
|
qing
|
c54e7aca83
|
dnfs2: 特殊节点移除 image 类型,发布权限放宽为节点拥有者或管理员
|
2026-08-10 10:52:30 +00:00 |
|
qing
|
75897c68eb
|
dnfs2: 特殊节点新增 style/theme 类型,支持界面样式注入与主题换肤
|
2026-08-10 10:39:03 +00:00 |
|
qing
|
01e67648e0
|
dnfs2: 彻底移除 dnfs.ini 依赖,改纯 CLI + ENV + 默认值
- 删除 confs/configs/dnfs.ini
- dnfs2.cpp: 移除 INI 解析器、confs 拉取逻辑、--config/--no-confs 参数
- dnfs2.cpp: 移除 confs_host/confs_port/confs_config_name/no_confs 字段
- dnfs2.cpp: 移除 <map>/<sstream>/<fstream> 未使用头文件
- services.yaml: 移除 --no-confs(不再需要)
- 更新 dnfs2/README.md: 配置说明改为 CLI 参数表
- 更新 README.md / confs/README.md: 移除 dnfs.ini 引用
|
2026-08-10 03:39:10 +08:00 |
|
qing
|
22ade06114
|
dnfs2: --no-confs 模式 + 全量 CLI 参数(dnfs.ini 字段全部可 CLI 覆盖)
- 新增 --db-host/--db-port/--db-timeout
- 新增 --review-url/--review-timeout
- 新增 --gateway-url/--gateway-timeout
- 新增 --no-confs 开关:跳过 confs 拉取,完全靠 CLI + ENV + 默认值
- services.yaml: dnfs2 启用 --no-confs,所有配置写进 args
|
2026-08-10 03:35:39 +08:00 |
|
qing
|
fc4e1c4a61
|
feat(dnfs2): CLI 参数标准化 — --host/--log-level/--instance/--config/--help
- 新增 --host 作为 --addr 的规范化别名(两者完全等价)
- 新增 --log-level debug|info|warn|error,实现日志级别过滤
* _log() 按 Config.log_level 过滤,低于设定级别的日志直接丢弃
* 兼容现有大写 level 字符串(INFO/WARNING/ERROR)
- 新增 --instance 指定实例名(注册中心用,默认 dnfs2)
- 新增 --config 覆盖 confs 拉取的配置名(默认 dnfs.ini)
- 新增 --help/-h 打印用法并退出
- Config 优先级不变:CLI > env > confs > 默认值
- services.yaml 同步声明 --instance 和 --log-level
- 更新启动输出包含 instance/log-level/config 信息
|
2026-08-10 03:32:58 +08:00 |
|
qing
|
2e0805eb05
|
fix(dnfs2): 第2轮审计修复 db 错误处理不一致
- P2-N6: _note_exists db 业务错误误判为节点不存在,改抛 500
- P2-N7: delete_note/update_note 所有权检查分离 db 错误(500)和节点不存在(404)
- P3-N8: CONFS_PORT 添加 [1,65535] 范围校验
- P3-N9: main() 添加 curl_global_cleanup,配对 curl_global_init
- 更新审计文档为第 2 轮,评级 A- → A
|
2026-08-08 01:44:04 +08:00 |
|
qing
|
117fc0241e
|
fix(libhttp,dnfs2): HttpClient 新增超时接口,dnfs2 启用配置超时
修复 dnfs2 审计 L-3(P2-N5):
libhttp HttpClient 硬编码 CURLOPT_TIMEOUT=30L/CONNECTTIMEOUT=10L,
dnfs2 的 gateway_timeout/review_timeout 配置加载后从未使用,实际超时恒为 30s。
修复:
- libhttp HttpClient 新增 set_timeout/set_connect_timeout 接口
(默认 30s/10s,向后兼容 gateway/core)
- request_stream_sync 使用成员变量替代硬编码值
- dnfs2 decode_token 设置 gateway_timeout
- dnfs2 review_content 设置 review_timeout
安全评级 A- → A,已知限制 6→5 项。
|
2026-08-08 01:33:57 +08:00 |
|
qing
|
9804838e96
|
feat(dnfs2): C++20 重实现 dnfs,修复全部 P0/P1 + 审计新发现 4 项
dnfs2 基于 libhttp + libmsg + boost::json 重写 Python dnfs,接口完全兼容:
- 4 个路由 (get_notes/add_note/delete_note/update_note) + 特殊节点 (link/js/image/file)
- Token 验签经 gateway /whoami (fail-closed 503)
- AI 内容审核 fail-closed
- AsyncQueue 异步日志 → db2 Logs 表
- 安全响应头 (CSP/X-Frame-Options 等)
修复 dnfs 继承的 6 项 P0/P1:
- P0-4 统一 _call_db() 检查 success 后再访问 data
- P1-6 setMaxBodySize(10MB)
- P1-7 日志客户端复用主配置
- P1-8 update_note pid≠0 校验父节点存在
- P1-9 RpcClient retry_on_refused=true
- P1-11 note_id 显式 as_int64() + 类型校验
审计新发现并修复 4 项:
- P1-N1 stop_watcher detach 改 join,修复 use-after-free (CWE-416)
- P1-N2 main() 添加 curl_global_init,修复多线程首次 curl_easy_init 竞态 (CWE-362)
- P2-N3 delete_note 分离 db 错误(500) 和子节点检查(400)
- P2-N4 threads 上限 256,对齐项目约定
安全评级 A-,6 项已知限制已记录。
|
2026-08-08 01:26:55 +08:00 |
|