qing
32d3a5a19f
重构db
2026-07-30 20:15:02 +08:00
qing
74610c32c8
微调
2026-07-30 19:03:34 +08:00
qing
eec869a28d
style(dnfs): 增大节点表单输入框尺寸
2026-07-30 15:56:06 +08:00
qing
d309f41e47
refix
2026-07-30 15:52:18 +08:00
qing
7589b77916
docs: 更新 README.md - 补充 bot4cj、libtry、tests 等缺失模块说明
2026-07-30 12:44:29 +08:00
qing
e4831522a4
docs: 新增 libhttp/libtry/pymsg/README.robot.md 技术手册,更新 BotOps/README.md
2026-07-30 12:38:31 +08:00
qing
8a14247aed
docs(BotOps): 安装指引改用脚本 + 补全项目结构树 + 新增 Nuitka 编译说明
...
- 安装章节改用 bash _set.sh / _run.sh 一键脚本
- 新增 _inst.sh Nuitka 编译为 botops.bin 单文件的说明
- 项目结构树补全 _set.sh / _run.sh / _inst.sh / requirements.txt / __init__.py
2026-07-30 12:38:14 +08:00
qing
803d176066
docs(db): 修正 log_client 描述并补充 message/extra 截断说明
...
- "纯标准库实现" → "无第三方依赖(仅依赖 pymsg 项目内置库)",更准确
- 新增长度保护说明:message 上限 8KB、extra 上限 4KB,超长自动截断
fix(db): _set.sh Nuitka 注释 main.py → dbv2.py
2026-07-30 12:34:37 +08:00
qing
ac8f3da9df
docs(libcrypt): 完整 README,覆盖 5 个类 API、构建、示例与注意事项
...
- 5 个类的完整 API 文档(Crypto_Basic/AES_CBC/Base64/SHA256/MyRSA)
- 架构层级图与 header-only 设计说明
- 构建/安装/链接指引(含 OpenSSL 3.x 依赖说明)
- 可运行的使用示例
- Private_Key 私有继承、链接 -lssl -lcrypto 等注意事项
fix(libcrypt): SHA256.hpp 删除重复 bytes_to_hex,改用基类版本
- 私有 static bytes_to_hex 与 Crypto_Basic::bytes_to_hex 重复,已删除
- include 路径统一为 "Crypto_Basic.hpp"(与其他三文件一致)
- 移除随之无用的 <iomanip> <sstream> 头文件
fix(libcrypt): AES_CBC.hpp 补充缺失的 #include <iomanip>
2026-07-30 12:26:15 +08:00
qing
6649b31e17
feat(static): add frontend token auto-refresh for dnfs page
...
- New token_manager.js: silent refresh timer (80% lifetime) + global
fetch 401 interceptor with one-shot retry.
- dnfs.py /whoami now returns iat, created_at, keep_time for expiry
estimation.
- Dnfs.html loads token_manager.js before dnfs.js (zero change to dnfs.js).
- Graceful fallback: stale tokens without new fields, refresh failures,
and /refresh_token 401 itself all degrade to the existing 401→login flow.
2026-07-30 12:25:11 +08:00
qing
254fbf4628
docs(aibox): 更新 README.md 并新增 README.robot.md 技术手册
...
README.md 修复:
- 新增 ask_user 工具到工具列表
- 补充配置表中缺失的 17 个字段(system/scheduler/api/context/memo/files/commands/web/memory/conversation/tools/compressor/proxy)
- 补充对话压缩完整配置项
README.robot.md 新增:
- 17 章节完整技术手册(~500 行)
- 架构图、数据流、协议详情
- 19 个工具的完整实现信息
- 配置参考(含所有字段说明)
- 已知限制与安全建议
- 部署与故障排查指南
2026-07-30 12:08:17 +08:00
qing
931e134796
docs(smtp): 新建完整 README,覆盖协议、路由、配置与安全机制
...
- 3 个路由的完整请求/响应文档(send_email / verify_email / health)
- .env 配置项说明(4 种格式支持、必填/可选字段)
- 验证码生命周期:生成→冷却→消费→过期→作废→失败回滚
- 安全机制:发送冷却、失败次数上限防枚举、SMTP 失败回滚
- 集成关系:gateway 调用流程、core 守护、log_client 日志推送
- 旧版 smtp.py 的安全风险标注
fix(smtp): _set.sh 中 nuitka 编译目标 smtp.py → smtp_v2.py
2026-07-30 12:02:25 +08:00
qing
63a80694ae
docs(core): 新增代码审查日志 CODE_REVIEW_LOG_20260730.md
...
- 审查日期:2026-07-30 14:30:00 (Asia/Shanghai)
- 发现 16 个问题(4 Critical / 6 Medium / 6 Low)
- 核心风险:命令注入、无鉴权、空指针解引用
- 包含分阶段修复计划与优先级建议
2026-07-30 12:01:04 +08:00
qing
4506601773
docs(libth): 完整的 README 文档,覆盖 API、架构、构建与使用示例
...
- 新增 4 个类的完整 API 说明(Thread/Fsm/ITask/Cv_wait)
- "回字形"执行循环和两阶段构造的设计说明
- 构建、安装、链接、卸载的完整指引
- 可运行的使用示例代码
- 设计要点与注意事项(死锁风险、单次使用限制等)
- 修正 C++ 标准版本为 C++20(与 Makefile 一致)
fix(libth): Cv_wait.hpp 中 lcok 拼写错误修正为 lock
2026-07-30 11:58:26 +08:00
qing
f214c862d3
docs(bot4cj): 新增 README.robot.md 完整技术手册
...
- 补充 5 层架构分层图(脚本→解析器→结构构建→硬件实现→系统库)
- 详解 .mt 脚本语法、块类型、占位符规则
- 补充 PCA9685/Servo/MPU6050/Speaker 各硬件寄存器与校准参数
- 说明执行流程:stdin→FSM 解析→链表→build/play/free
- 列出 I2C 总线保护、GC 析构、pthread_cancel 等安全限制
- 补充 11 条已知缺陷清单(D1-D11)
- 新增 NN/CNN 测试命令与 DRL 预留接口说明
2026-07-30 11:54:51 +08:00
qing
a8a190571c
feat(gateway): add /refresh_token API with grace window + refresh limit
...
- POST /refresh_token: accept current Bearer token (or Cookie fallback),
verify RSA signature, check grace window (iat + keep_time * multiplier)
and refresh count limit, then issue a new token.
- Token payload extended with iat, refresh_count, max_refresh fields.
- iat preserves original issue time; created_at updates on each refresh.
- Rate limited: 5 req / 5 min / IP via RateLimiter.
- Config: Token.refresh_grace_multiplier (default 2), Token.max_refresh (default 10).
- Backward compatible: old tokens without new fields still pass proxy checks.
2026-07-30 11:54:31 +08:00
qing
aa3a99825c
docs(captcha): 项目结构树和安装指引补全遗漏项
...
- 安装章节新增 bash _set.sh 初始化步骤
- 项目结构树补全 _set.sh 和 requirements.txt
2026-07-30 11:53:30 +08:00
qing
dcfdbcb9f2
docs(waf): 更新 README 文档与代码实现对齐
...
- 新增「安全响应头」章节,列出 7 个 WAF 注入的响应头及说明
- 修正「已知限制」中响应体检测描述,明确响应头检测已启用
- 澄清拦截日志等级区分(WARNING 命中拦截 / ERROR 加载错误)及 extra 字段类型
- 补充规则 ID 分段表的 CRS 可选说明
- 更新目录结构列表补充 logclient 子包
- 请求处理流程新增 ModifyResponse 步骤
2026-07-30 11:49:10 +08:00
qing
62007e7848
docs(static): README 路由表、架构图、配置、依赖与实际代码同步
...
- 修正根路径 / 描述:index.html → login.html
- 补全全部 19 个路由(原仅 6 个),分组为核心/内部工具/OAuth/代理
- 架构图补全 waf:443 → gateway:8443 → static:9200 完整链路
- 配置示例新增 [cors] 段
- 依赖列表补全 waitress 和 pymsg
- 页面和功能列表补全遗漏项
2026-07-30 11:48:54 +08:00
qing
91e6659dac
docs(waf): 拦截日志章节更新为 logclient 推送 db Logs 表的说明
2026-07-30 11:01:34 +08:00
qing
9765edac9b
fix(static): 前端脚本识别 WAF 拦截响应并正确提示
...
- validation.js 新增 WafTip 公共检测:403 + 响应体含 blocked by WAF 双重特征,
与 gateway 白名单拒绝的 403(JSON 错误消息)精确区分
- login/register/dnfs/view 各请求点在 JSON 解析前识别拦截,统一提示
「请求被 WAF 安全规则拦截,请检查输入内容」
- 修复 dnfs getNode 被 WAF 拦截时落入 catch 误跳登录页的问题
- 验证码图片加载识别 403 拦截,alt 提示点击重试
- __view.html 补充引入 validation.js
2026-07-30 11:01:34 +08:00
qing
40175eddb5
Revert "style(dnfs): 用户信息面板移到左边中间,与右侧 minimap 镜像对称"
...
This reverts commit 5c33dbe027 .
2026-07-30 09:52:08 +08:00
qing
5c33dbe027
style(dnfs): 用户信息面板移到左边中间,与右侧 minimap 镜像对称
2026-07-30 09:44:15 +08:00
qing
a58a0f97e3
feat(dnfs): minimap 与用户面板按视口宽度决定初始折叠态
...
新增 PANEL_EXPAND_MIN_WIDTH=768 断点:宽屏默认展开、窄屏默认折叠避免
遮挡内容;仅决定初始状态,用户手动折叠/展开不被 resize 覆盖。
2026-07-30 09:40:58 +08:00
qing
55b127747a
fix(dnfs): 用户面板用户名/角色改为纯展示,去除手型光标与 hover 变色
...
新增 .tag.no-hover 修饰类还原交互态;折叠按钮与退出登录保持可点样式。
2026-07-30 09:34:53 +08:00
qing
8c1956cdeb
feat(dnfs): 左上角用户信息面板(默认折叠),新增 /whoami 身份接口
...
dnfs 新增 POST /whoami:解 Token payload 返回 user/is_admin,无或畸形
Token 返回 login=false(HttpOnly Cookie 模式下 JS 无法读 Token,身份
必须由后端下发);static 加 /whoami 代理(Cookie 转 Bearer);前端
dnfs.html 左上新增 userpanel,镜像 minimap 样式默认折叠,展开显示
用户名/角色/退出登录(POST /logout 清 Cookie 后跳登录页)。
2026-07-30 09:31:28 +08:00
qing
1388fcb72b
feat(dnfs): 卡片移动按钮一并纳入 can_operate 权限显隐
...
编辑/移动/删除三个按钮合并为单次权限判断(移动本质也是 update_note),
未登录或无权时不渲染整个按钮组。
2026-07-30 09:21:15 +08:00
qing
b4e1cf462a
feat(dnfs): get_notes 按当前用户注入 can_operate,前端按权显隐编辑/删除按钮
...
dnfs get_notes 可选解析 Authorization(畸形 Token try 兜底),为每个节点
附带 can_operate 标记(is_admin 或 owner,口径与 delete/update 一致);
dnfs.js 卡片编辑/删除按钮仅 can_operate === true 时渲染,未登录或无权隐藏。
2026-07-30 09:17:28 +08:00
qing
46c3a197be
refactor(auth): 管理员判定上移至 gateway,经 Token payload 下发 is_admin
...
gateway 登录签发 Token 时,账号命中 [Admin] users 白名单即在 payload
写入 is_admin=true(随 RSA 签名保护);dnfs 移除本地 ADMIN_USERS 硬编码,
delete_note/update_note 豁免判断改读 payload 的 is_admin 字段。
旧 Token 无此字段按非管理员处理(安全方向)。
2026-07-30 09:08:33 +08:00
qing
e9f9860fe1
fix(dnfs): review_content 兼容布尔/字符串审核结果,修复安全内容误拦
...
仅明确判定安全(布尔 false 或字符串 "false")才放行,其余一律拦截,
保持 fail-closed;同时消除 invalid 字段缺失时的 KeyError。
2026-07-30 08:38:14 +08:00
qing
949d274c22
获取节点失败后跳转
2026-07-30 08:22:53 +08:00
qing
bcd6c84e3b
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
2026-07-29 21:57:47 +08:00
qing
5275b8bf75
feat(smtp): 邮箱验证码连续校验失败 5 次自动作废,防枚举 6 位数字码
2026-07-29 21:57:16 +08:00
qing
e6e5dab4cd
智能体提问
2026-07-29 21:54:22 +08:00
qing
3c02ba43ad
AskUserTool 内置技能
2026-07-29 21:23:04 +08:00
qing
c5dd8d198d
feat(smtp): 同一邮箱 60 秒发送冷却,gateway 429 透传 + 前端重发倒计时(gateway v0.5.3)
2026-07-29 20:54:56 +08:00
qing
f4a7aca2fa
update: smtp 验证码有效期 60s 调整为 10 分钟,邮件正文从 CODE_TTL 派生
...
60 秒对邮件送达延迟过于紧张;正文有效期文案改为按 TTL 自动生成避免漂移,前端提示与 README 同步。同时移除 .env 排查用的凭证明文调试打印。
2026-07-29 19:32:44 +08:00
qing
f5b69d0b4c
fix: smtp .env 解析兼容 KEY: VALUE 冒号格式,MAIL_FROM 默认跟随 SMTP_USER
...
服务器 .env 误用 YAML 冒号格式导致凭证全部加载为空;163 等服务商强制 From 头与登录账号一致,写死的 MAIL_FROM 会触发 553,现默认取 SMTP_USER、可用 .env 显式覆盖。
2026-07-29 19:08:13 +08:00
qing
53c742c26e
refactor: smtp.py.remote 更名为 smtp_v2.py,恢复 .py 后缀以便工具链识别
...
_run.sh 同步指向新文件名;start() 新增启动时凭证明文打印(仅 stdout 不落日志库),用于排查 .env 加载问题,调试完成后需移除。
2026-07-29 18:36:21 +08:00
qing
11993e178b
smtp dev
2026-07-29 18:22:38 +08:00
qing
3bc4f9720f
fix(dnfs): 移动请求期间禁用按钮防止重复提交
...
后端 update_note 走 AI 审核耗时较长,confirmMove 期间禁用移动条
与表单按钮,finally 统一恢复
2026-07-29 14:37:27 +08:00
qing
751866d9c1
refix
2026-07-29 11:52:46 +08:00
qing
3f9bffb9ea
feat(dnfs): 节点移动功能
...
- dnfs.js: 卡片新增移动按钮,startMove 暂存节点,底部悬浮移动条
提供移动到当前层/取消;confirmMove 经 update_note 改 pid 完成迁移;
拦截移动到自身与已在当前层的情况
- dnfs.html: 新增 #movebar 容器
- theme.css: act-move 描边按钮与 movebar 底部悬浮条样式
2026-07-29 11:40:35 +08:00
qing
ace98caff6
feat: 卡片编辑/删除按钮 + dnfs 管理员豁免
...
- dnfs.js: 卡片底部新增编辑/删除按钮,复用下方表单支持编辑模式
(startEdit/cancelEdit/updateNode/deleteChild),stopPropagation 防误触
- theme.css: 新增 card-actions/act-btn 按钮样式,编辑橙色/删除红色软底
- dnfs.py: ADMIN_USERS 统一管理豁免名单(admin, admin@qsont.me ),
update_note 新增管理员豁免,delete_note 同步改用名单
- dnfs/README.md: 同步更新所有权豁免说明
2026-07-29 11:22:30 +08:00
qing
a0f6a14b5d
style(dnfs): 笔记卡片尺寸随内容自适应
...
- recommend-list 改为 flex 纵向布局,gap 统一间距,隐藏 JS 遗留 <br> 分隔符
- 卡片宽度 fit-content 包裹内容,min-width 240px 保底、max-width 100% 封顶
- 内容图片限宽防撑破自适应布局
2026-07-29 11:05:20 +08:00
qing
2fc12e7b00
feat(dnfs): 卡片增加观看/点赞/分享互动统计图标
...
- dnfs.js: 新增眼睛/爱心/转发 SVG 图标常量与 makeStatItem 构造函数,
统计行挂载在 owner 胶囊下方,计数缺省显示 0(后端暂无该字段)
- theme.css: 新增 card-stats/stat-item/stat-num 样式
2026-07-29 10:59:40 +08:00
qing
dae81ba4a1
style(dnfs): 美化卡片发帖用户显示为头像+昵称胶囊
...
- dnfs.js: owner 纯文本改为首字符圆形头像 + 昵称,空值兜底匿名
- theme.css: 新增 Owner Chip 样式段,复用主题变量自动适配深色模式
2026-07-29 10:53:29 +08:00
qing
a905dac00d
display note ownerx
2026-07-29 10:47:20 +08:00
qing
b8ec752a12
docs(pymsg): 添加中文 README 文档,涵盖协议、API 参考和实际用例
2026-07-29 09:39:49 +08:00
qing
b86b089634
fix(BotOps): 修正 aibox 协议语义错配导致的输出丢失
...
- 服务端 chunk 为增量片段(chunk_buffer 发送后即清零),原 _delta
按累计全文假设计算,相邻 chunk 前缀撞字时静默丢字符;改为直接拼接
- complete 携带完整全文,finish_ai 改为全文对齐(不一致时整体替换,
可自愈丢帧/乱序),修复结尾全文重复 append
- 新增 line/reasoning/task_added/dialogue_reset/pong 消息路由:
line(🔧 工具调用提示、工具输出)不再落入兜底污染聊天区,改投任务侧栏
- 发送失败时移除预建的空 AI 消息框并提示,避免空等回复
- 断线提示补充重连窗口期服务端输出丢失说明
- 同步修正 ws_client/README 中的协议描述
2026-07-29 09:32:30 +08:00
qing
f9cf408c82
static: 切换 fsys.py 到 Waitress WSGI 服务器
...
- HTTP 场景使用 waitress.serve(threads=8) 替代 Flask 开发服务器
- SSL 场景回退 Flask 内置服务器(Waitress 不支持 TLS)
- requirements.txt 新增 waitress 依赖
2026-07-29 09:10:09 +08:00
qing
f0cdaacd85
feat(gateway): 运行日志接入 db 集中式日志(新增 C++ 版 LogC,pymsg 推送 Logs 表)
...
- 新增 gateway/inc/LogC.hpp:异步批量日志客户端(内存队列+后台线程,50条/2秒 flush),
对齐 Python 版 log_client.py,fail-safe 设计(db 不可用静默丢弃)
- main.cpp 全部日志输出迁移:wrapperHttp 双异常分支(>=500 ERROR / 其余 WARNING)、
启动/关闭、登录成功、注册成功、验证码邮件发送成功、代理白名单拒绝
- Makefile 增加 -pthread(LogC 使用 std::thread)
2026-07-29 08:34:14 +08:00
qing
6a0551ab34
fix(gateway): 限流错误码统一429、登录用户不存在改401并拉平时序、pymsg超时常量化(v0.5.2)
...
- 三处限流错误码统一为 429(login 400→429 并修 attampts 拼写;register/send_code 403→429)
- 登录用户不存在不再兜底 500:空结果统一走 401,dummy PBKDF2 校验拉平时序防用户枚举
- db 查询失败消息误名修正:Login (Update Step) Failed → (Query Step)
- 超时常量化:DbC::DEFAULT_TIMEOUT=5.0;_TIMEOUT_CAPTCHA/_SMTP_VERIFY=5.0、_SMTP_SEND=20.0
- 文档:gateway/README 数据库节 email→username 重写、建表归 db/create_sqlite3.sql;根 README 版本号与自动建表描述同步
2026-07-29 00:21:13 +08:00
qing
c2e9cce6a7
fix(BotOps): _inst.sh 补 --include-package=websockets/textual,修复打包后找不到 websockets.asyncio
2026-07-28 23:38:16 +08:00
qing
b07dbf2da5
feat(gateway): 登录成功后更新 Users.last_login(v0.5.1)
...
启用 handleLogin 中被注释的 last_login 更新:经 DbC::call_msg 以
"$now" 哨兵(db 日期适配层转为服务端 UTC 时间)写入,失败按惯例
THROW_EX_CUSTOM 抛 500 由 wrapper 统一处理。README 版本节同步
(原仍停留在 0.3.0-security)。
2026-07-28 23:31:20 +08:00
qing
19d5b65625
fix(db): 新增日期列类型适配层,修复无法经 db 处理 DATETIME 列的问题
...
JSON 无日期类型,而 SQLite DATETIME 只接受 Python datetime 对象,
导致各服务对日期列的写入与 where 比较全部失败。_coerce_value 按反射
列类型把 ISO 8601 字符串转为 datetime/date/time(带时区偏移统一转
UTC),并支持 "$now" 哨兵取服务端当前时间;响应中日期时间改为一律
序列化为 ISO 8601(T 分隔)。黑盒测试补 3 个日期列场景。
2026-07-28 23:16:17 +08:00
qing
12e736d264
chore: BotOps .gitignore 忽略 nuitka 编译产物
2026-07-28 22:54:06 +08:00
qing
8be62683dc
chore: BotOps 添加 _inst.sh 单文件编译脚本(nuitka --onefile)
2026-07-28 22:53:35 +08:00
qing
c93023bd5d
fix(BotOps): 聊天区改用 anchor 锚定吸底,修复流式时滚动条不跟随
2026-07-28 22:48:45 +08:00
qing
422ca798da
chore: BotOps 添加 _set.sh/_run.sh 启动脚本(与 aibox 同款)
2026-07-28 22:44:24 +08:00
qing
c064caa3ec
chore: BotOps 添加 .gitignore 并移除误提交的 __pycache__
2026-07-28 22:41:34 +08:00
qing
f91d4166d6
feat: 新增 BotOps 子模块——aibox 的 Textual TUI 前端(流式 Markdown 渲染+自动重连+任务侧栏)
2026-07-28 22:41:15 +08:00
qing
afb55494e5
interpreter project
2026-07-28 22:25:01 +08:00
qing
6692c9c4ee
refactor(db): 清理遗留死代码并对齐文档与测试
...
删除 dbv2 从未挂载的 log_module.py(Flask /log/* 遗留)与纯 TCP 服务
用不到的 security_middleware.py 副本;db/README.md 按 pymsg 实现重写,
requirements 去掉 flask/waitress;黑盒测试对 pymsg 服务改用 TCP 探测,
修复 check_service HTTP 探测导致的 db 测试整体假 skip。
2026-07-28 22:21:36 +08:00
qing
dabd892601
fix(aibox/client): 放弃 rich.Live 改为 complete 时一次性静态渲染,修复内容一闪而过
2026-07-28 22:01:21 +08:00
qing
2982bc30a4
feat(aibox/client): AI 回复流式渲染 Markdown(rich.Live,无 rich 时降级纯文本)
2026-07-28 21:51:53 +08:00
qing
aaeac343d3
fix(aibox/client): 修4处——stdin单线程防泄漏、LRU去重上限、自动重连、弃用get_event_loop
2026-07-28 21:44:23 +08:00
qing
d5a67ce77e
fix: smtp .env 兼容 export 前缀并在启动时报告缺失的配置项名称
2026-07-28 17:42:37 +08:00
qing
6330e04474
fix: smtp .env 手动解析替代 dotenv,同时支持 KEY=VALUE 和 KEY VALUE 格式
2026-07-28 17:34:55 +08:00
qing
df518d1adb
feat: 注册强制邮箱验证码(gateway v0.5.0 新增 /register/send_code,pymsg 调 smtp)
2026-07-28 17:29:52 +08:00
qing
9078c4d051
refactor: smtp 改造为 pymsg TCP 服务并修复 NameError/finally/KeyError 等已知 bug
2026-07-28 17:12:45 +08:00
qing
78ad3e6d57
移植bot4cj
2026-07-28 12:44:07 +08:00
qing
7803843155
^-^
2026-07-28 12:37:39 +08:00
qing
ec755a30f2
3d打印件
2026-07-28 12:34:02 +08:00
qing
483c5f227f
fix: 发布节点期间同步禁用重置/删除按钮,防止误触
2026-07-28 12:17:27 +08:00
qing
bfd2d334fe
fix: 前端按钮防重复点击,避免重复请求(dnfs提交/删除、view刷新、验证码刷新)
2026-07-28 12:10:48 +08:00
qing
50f209e84a
fix: X-Frame-Options/frame-ancestors 改为同源以修复条例弹窗空白
2026-07-28 11:53:35 +08:00
qing
680d28b616
ui: 用户使用条例改为弹窗显示并移除 LICENSE.html 返回按钮
2026-07-28 11:46:25 +08:00
qing
4d16bc32fc
security: CORS 白名单移除 localhost 并改为 config.ini 驱动
...
扫描发现生产 CORS 含 http://localhost:9200(硬编码于 fsys.py),且 config.ini 的 cors 段(通配符 *)从未被读取。白名单改为从 config.ini 读取,生产值仅 qsont.me/yhdet.top,localhost 仅限本地开发显式配置。
2026-07-28 11:40:19 +08:00
qing
7726857d6b
feat: 新增用户使用条例独立页面并在登录页引用
...
新增 LICENSE.html(六章条例,开源社区定位,复用主题样式);登录页勾选框文案改为链接新标签页打开,不影响勾选交互与表单状态。
2026-07-28 10:36:06 +08:00
qing
3ef7d1b780
fix: 修复验证码图片被输入框挤换行,改为右侧同一行
...
theme.css 全局设定文本输入框 display:block;width:100%,导致验证码图片无法与之同行;改用 flex 容器包裹(输入框 flex:1、图片 flex:none 居右),布局与主题风格一致。
2026-07-28 10:29:22 +08:00
qing
62804d242c
ui: 验证码改为 4 位,登录页图片移到输入框左侧
...
captcha 服务 CAPTCHA_LEN 调整为 4 并适配字符间距;登录页验证码图片与输入框换序,同一行展示更紧凑。
2026-07-28 10:24:48 +08:00
qing
a5e581ef24
fix: CSP img-src 放行 blob:,修复验证码图片被拦截
...
登录页验证码用 URL.createObjectURL 生成的 blob: URL 显示,被 img-src 'self' data: 拦截导致图片无法加载;五处 CSP 定义(waf 边缘 + 四个 Flask 中间件副本)同步放宽。
2026-07-28 10:19:47 +08:00
qing
6fcb70d235
feat: 登录页接入图形验证码,登录接口强制校验
...
登录页展示 captcha 图形码(点击刷新),登录请求携带 captcha_token/captcha_answer;gateway 的 /login 启用验证码校验,经 pymsg 调 captcha verify 路由(fail-closed),补齐防爆破短板。
2026-07-28 10:15:01 +08:00
qing
323dd3061b
rewrite captcha
2026-07-28 10:07:32 +08:00
qing
44c1e5ef72
feat: captcha 改造为 pymsg/TCP 服务,gateway 新增图形码代理路由
...
captcha 参照 dbv2 统一为 pymsg 协议(image/verify/health 路由),与主干 RPC 栈对齐;gateway 新增 GET /captcha/image 做 HTTP→pymsg 转换,解码 base64 PNG 并以原契约(image/png + X-Captcha-Token)返回浏览器。
2026-07-28 09:54:08 +08:00
qing
d06546f6bf
测试模块初步完成
2026-07-28 09:39:37 +08:00
qing
4ad3fbfca8
fix: 修复公开页面因旧 Cookie 验签失败误返回 401
...
浏览器会自动给每个请求携带 q4_token,gateway 重启轮换内存 RSA 密钥后旧凭证验签失败,导致无需登录的公开页面也 401。代理层改为仅对需鉴权目标校验凭证,公开目标跳过;前端遇 401 自动跳转登录页自愈。
2026-07-28 09:31:10 +08:00
qing
b2ddd9e7e3
security: waf 边缘统一注入安全响应头
...
外部扫描发现站点缺少安全响应头。在 waf 反代/403/502 三个出站路径统一注入 XFO/nosniff/Referrer-Policy/Permissions-Policy/HSTS/CSP,下游同名头一律覆盖避免重复;static 补上漏调用的 apply_security_headers 做纵深防御。
2026-07-28 09:19:43 +08:00
qing
e89578fa82
security: Token 改为 HttpOnly Cookie 下发,消除 XSS 窃取面
...
登录时网关签发 HttpOnly+Secure+SameSite=Lax 的 q4_token Cookie,前端不再经手 Token;网关代理时支持从 Cookie 验签并向下游注入 Authorization(dnfs 零改动),新增 /logout 清除 Cookie,static 代理路由兼容 Cookie 转 Bearer。
2026-07-28 09:07:12 +08:00
qing
65cfaf97a1
docs: 按代码实况修正根 README 与实现不符的描述
...
db 实为 pymsg/TCP(非 HTTP),ai_review 实为 fail-closed,captcha 路由与实现方式、static 的 dnfs 代理与账号旁路、gateway 用户存储与 core 守护机制等均按代码核实结果更正。
2026-07-28 08:33:30 +08:00
qing
6b77cdcf3a
feat: 新增俄罗斯方块小游戏(games/game7.html)
...
纯 HTML 单文件实现,Canvas 渲染,含 7-bag 发牌、暂存、落点虚影、硬降/软降、等级加速与触屏按键,最高分本地持久化。
2026-07-28 01:11:58 +08:00
qing
ed3108f55c
docs: 补全根 README 中遗漏的 captcha/smtp/aibox 服务
...
- 各服务说明表新增 captcha/smtp/aibox 三行
- 端口一览新增 smtp(:8008)/aibox(:8765)
- 运行清单新增 smtp/aibox 启动项
- 日志链路与 init.txt 提及补全 smtp/aibox
- 新增 captcha/smtp/aibox 三个子章节(对照 init.txt 与各服务源码)
2026-07-27 23:00:08 +08:00
qing
ee44e1bef1
docs & ui: 完善 captcha/aibox 文档,登录注册改为邮箱制
...
- captcha/README.md: 补充字段级接口文档与错误码表
- aibox/README.md: 对照 main.py 源码核对修正(入口/模型/工具/配置)
- static/public/login.html & register.html: 用户名改为邮箱
- static/public/js/register.js: 合并注册页双邮箱框为单一邮箱字段
2026-07-27 22:51:57 +08:00
qing
f601efdd3f
refix
2026-07-27 22:27:18 +08:00
qing
c58cafcdcf
fixbug: 机器人在定时任务中创建重复的定时任务
2026-07-27 22:11:02 +08:00
qing
3501168f45
inst aibo
2026-07-27 22:03:50 +08:00
qing
13f3eb8f88
DEV
2026-07-27 21:43:56 +08:00
qing
1b60ab0a2e
增加运维机器人单元
2026-07-27 21:39:53 +08:00
qing
8c74d93a76
security fixup
2026-07-27 17:28:15 +08:00