- autoban: 新增 RecordHoneypot 独立通道(不受 enabled 约束)+ 独立阈值/时长; IsBanned 不再因 enable_auto_ban=false 而忽略已有封禁 - honeypot: 新增 honeypotSuffixes 后缀匹配,覆盖 /backup.zip、/db.sql、/id_rsa.pem - 新增配置 honeypot_threshold / honeypot_ban_minutes - 补测试:autoban/honeypot_test.go、route 侧禁用自动封禁仍封禁
3.1 KiB
3.1 KiB
其它约定(长版明细)
其它约定
- 校验靠
valid:"required;maxlen:N"标签(internal/form/*.go),别在 handler 手写。 - 终止性操作(停用)落独立公开页
/deactivated(注册在reqUserSignIn外);改密码后重登才用 flash +/login。 - 只有箱主
/user面板,无管理员角色、无站方后台,用户要求不要加:站方动作只走 CLI / 邮件 / 改配置重启。 - git
https://git.shiroko.one/tamakyi/tamabox(main)。git push能直接推(本机 Git for Windows 已认证); 「Failed to authenticate user」是临时态。推前git log --oneline -3。outputs/已 gitignore,别整目录 add。 - 打包交付用 tar.gz(排除
.git/.workbuddy/outputs),放项目同级。
测试环境 box-dev-api.337845818.best
- 账号
[email protected]/adminadmin,公开页/_/admin6。 - 登录要过算数验证码:
GET /login取_csrf+cookie →GET /api/captcha/generate→ 算a op b→POST /login带g-recaptcha-response="<id>:<答案>"。默认语言 ja,四语言文案要一起加。 - 部署有延迟;模板是编译期 embed,只重启不重编不会变。用户说「已部署但没变化」→ 先抓线上 HTML 比对标记。
- 表单字段:提问
content,回答answer。GET /user/votes故意 302;匿名无邮箱提问成功直接 200 渲染。 - 自检:
dev/devcheck-e2e.py(28 项)、dev/devcheck-restrict.sh(基线非 200 就别往下走;RUN=1才真跑)。 - 图片编码三档(头像 512/q78、背景 1920/q80、通用 1600/q80),EXIF 方向必须先归一(转 WebP 会丢)。
CLI(TamaBox <cmd>)
-
⚠️ 两个构建入口必须同步:根
go build .(tamabox.go)与 Dockerfile 的./cmd/(cmd/tamabox.go), 否则No help topic for '<cmd>'。 -
现有:
webcensoruidbanrestorereportsrestrictunrestricthide-public。 -
restrict --domain|--email --level L1..L4 --days N --reason/unrestrict;reports --domain|--email [--days](证据包)、--pending、--stats --days N;hide-public [--only-reported] [--since N]。 -
本地冒烟:
NEKOBOX_CONFIG_PATH=<ini>;conf.Init强制app.external_url、server.salt、server.xsrf_key非空。 -
蜜罐 CLI:
TamaBox honeypot hits|stats|prune(--since 24h/--show-password/--yes), 注册须在cmd/tamabox.go+ 根tamabox.go两处同步。 -
蜜罐配置:
[security] enable_honeypot/honeypot_paths/honeypot_retain_days(默认全关)。
行尾与测试坑(2026-10-21 蜜罐轮)
- ⚠️
internal/route/route.go、internal/conf/static.go、conf/app.sample.ini实际是全 CRLF;grep | cat -A不显示^M极易误判 → Python 替换用\r\n锚点,写后统计b'\r\n'复核。 - ⚠️ Go 里
time.Duration(60)= 60 纳秒,测试写裸数字会让封禁/冷却瞬间过期 → 一律60 * time.Minute。 - ⚠️ 测
IsBanned→ 403 必须注册中间件(f.Use(autobanMiddleware(ab, hp))),只注册路由+NotFound 会被绕过。