kevin
|
f21e8337af
|
安全加固:Web 登录防爆破(IP+用户名双维度限速 5次/分钟锁10分钟,未知用户名 dummy bcrypt 防枚举),瓦片代理 SSRF 加固(DialContext 拒绝内网/链路本地/CGNAT/ULA 与重定向限制,Content-Type image 白名单+nosniff),/api/discard-details 公开去敏(新增 admin 全字段端点),公开地图源接口外部 URL/key 一律代理化,install.sh 随机管理员密码+非回环默认口令拒绝启动,后端 v1.4.0
|
2026-08-20 17:00:41 +08:00 |
|
kevin
|
01aee47024
|
删除所有测试文件
|
2026-08-07 16:26:30 +08:00 |
|
 kevinandClaude
|
46916d9a93
|
重构:main.go 直接 import 各 internal/ 子包,删除全部 bridge
最后一步:把 main.go 里所有指向桥接小写名的引用(store / config /
blocking / bot / runtimesettings / mqttforward / web 等)改写成直接调用
internal/* 子包的导出 API,从而拆掉所有 *_bridge.go。
变更点
- main.go 顶部 import 区改为引用 11 个 internal/ 子包:auth、blocking、
bot、config、mqttforward、runtimesettings、store、web 等。
- meshtasticFilterHook 字段类型改为 *storepkg.WriteQueue / *blockingpkg.Cache
/ *rspkg.Cache / *mqttforwardpkg.Stats;不再依赖 main 包内别名。
- mqttClientInfoFromClient 返回 storepkg.MQTTClientInfo(之前为 main 包别名)。
- run() 里 newSessionManager → auth.NewManager;newRouter → webpkg.NewRouter;
serveHTTPUnixSocket → webpkg.ServeUnixSocket;mqttRuntimeStatus →
webpkg.MQTTRuntimeStatus;botSendTextRequest → botpkg.SendTextRequest;
newBlockingCache / newRuntimeSettingsCache / newMQTTForwardManager 都改为
对应包的 New / NewManager。
- main_test.go 里的 BlockingViolationForRecord 测试改用 testutil.OpenStore
+ blockingpkg.New,全部通过 store.Store 的公开 API 构造数据,不再需要
根目录 test_helpers_test.go。
删除根目录文件
- config.go、auth.go(已删)、blocking_bridge.go、bot_bridge.go、
help_bridge.go、llmadmin_bridge.go、mapsource_bridge.go、
mqttforward_bridge.go、runtime_settings_bridge.go、sign_bridge.go、
store_bridge.go、web_bridge.go、test_helpers_test.go。
最终结果
- 根目录只剩 main.go (~370 行) 和 main_test.go (~110 行)。
- internal/ 下 13 个独立子包:auth / blocking / bot / config / help /
llmadmin / mapsource / mqttforward / runtimesettings / sign / store /
store/testutil / web / webutil。
- go build ./... / go test ./... 全部通过;测试数量与重构前一致;
go build . 可以产出可执行二进制(约 50 MB)。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-18 18:30:00 +08:00 |
|
 kevinandClaude
|
c527a9fd9a
|
重构:拆出 auth / blocking / runtimesettings / help / mqttforward 包
第二批:把根目录中纯逻辑领域文件(cache、service、admin route)按业务边界
迁到 internal/ 下的子包。各子包暴露 RegisterRoutes 给 web 包调用,根目录
只留下一行 bridge 文件保留旧名字别名。
新增包
- internal/auth/ SessionClaims / Manager / RequireAdmin / HashPassword /
VerifyPassword / AdminUserResponse 等。原 auth.go 中
被两个 admin route 依赖的 sessionClaims 现在以 auth.
SessionClaims 形式被它们 import;不再被锁在 main 包。
- internal/blocking/ Cache + RegisterRoutes,以前散在 blocking_cache.go
和 admin_blocking_routes.go 里。
- internal/runtimesettings/ Cache + RegisterRoutes。
- internal/help/ RenderMarkdown / RegisterPublicRoutes /
RegisterAdminRoutes(拆分原来的 registerHelpRoutes
和 registerAdminHelpRoutes 两条入口)。
- internal/mqttforward/ Manager / Reloader / Stats / RegisterRoutes。
forwarder runner、循环抑制 cache 等运行时逻辑随之迁入。
- internal/webutil/ ParseListOptions / WriteListResponse[WithTotal] /
ParseMapReportListOptions / ParseMapReportViewportOptions
以及 PtrString/PtrInt64/... 等指针解引用 helper。
以前散在 web.go 中,现在被各 admin route 子包共享,
避免 internal/blocking → internal/web → internal/blocking
的循环依赖。
- internal/store/testutil/ OpenStore(t) helper,让其它包测试零样板拿到 store。
根目录新增 bridge 文件
- blocking_bridge.go / runtime_settings_bridge.go / help_bridge.go /
mqttforward_bridge.go:用 type alias + thin wrapper 把上述子包的导出
名映射到旧的小写名(blockingCache、registerAdminBlockingRoutes 等),
让 main.go / web.go 等仍未迁出的文件无须改动。
修改
- auth.go 改为对 internal/auth 的 bridge;web.go 中 sessions.newCookie /
clearCookie 改为 NewCookie / ClearCookie。
- main_test.go 中 BlockingViolationForRecord* 测试不再直接构造未导出字段,
改成走 store.CreateNodeBlocking → newBlockingCache 的真实路径。
- internal/mqttforward 把以前 *_store.go 中没有方法依赖的运行时类型
(forwarder runner、loop cache)和 admin route 一并归位;mqtt_status.go
暂时仍留在根目录(依赖 main 中的 mqttClientInfoFromClient)。
go build ./... / go test ./... 全部通过;测试数量未变。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-18 14:23:56 +08:00 |
|
kevin
|
2e6eab3e01
|
屏蔽词功能ok
|
2026-06-04 15:20:40 +08:00 |
|
kevin
|
8c1e1ef414
|
text_message 表设计与实现
|
2026-06-03 15:08:32 +08:00 |
|