修复订阅快照校验、回退与原生反射配置

This commit is contained in:
root
2026-08-30 10:34:18 +08:00
parent 347f2bec14
commit 922e7a2a61
8 changed files with 153 additions and 45 deletions
+18 -7
View File
@@ -94,6 +94,7 @@ storageNode/
| 6 | `IdentityMessage` | 握手 |
| 7 | `MaintainMessage` | 心跳 |
| 8 | `AvailableCheckMessage` | 可用性检查 |
| 9 | `SubscriptionSnapshotMessage` | 主站 → 节点,完整订阅备机快照 |
---
@@ -107,10 +108,12 @@ storageNode/
### BackupSubServer(端口 8889)
- 提供 V2Ray 和 Clash 代理订阅文件
- 每 12 小时从配置的 URL 下载最新订阅数据
- 过滤高比例代理节点
- 文件存储于 `sub/DouNaiV2ray.txt` 和 `sub/DouNaiClash.txt`
- 通过路径密钥进行身份验证
- 不直接访问上游;主站完成下载和倍率过滤后,通过 Netty 类型 9 推送完整快照
- 按公开 Key 的 SHA-256 查找用户绑定的子账号,未知 Key 返回 404
- 快照经 SHA-256 和 HMAC 校验后原子落盘,主站离线时继续分发最后成功版本
- 文件存储于 `sub/snapshots/{revision}/accounts/{accountId}/`
- 没有有效快照或快照超过最大有效期时返回 503,不回退旧共享订阅
- `GET /health/subscription` 提供不含 Key 和订阅正文的快照状态
---
@@ -132,10 +135,18 @@ storageNode/
### config.properties(从 `/root/gallery/storageNode/config.properties` 加载)
```properties
DouNaiV2ray=https://aaaa.gay/link/X7zEqkIx5gtIGugO?client=v2
DouNaiClash=https://aaaa.gay/link/X7zEqkIx5gtIGugO?client=clashmeta
SubscriptionSyncEnabled=false
SubscriptionSyncSecret=
SubscriptionDataDir=/root/gallery/storageNode/sub
SubscriptionMaxStaleSeconds=604800
SubscriptionMaxPayloadBytes=52428800
SubscriptionHttpPort=8889
SubscriptionHttpWorkers=4
SubscriptionSocketTimeoutMs=10000
```
生产同步密钥优先通过 `SUBSCRIPTION_SYNC_SECRET` 环境变量提供,不得提交到仓库或写入日志。
### simplelogger.properties
- 日志级别:`info`
- 时间戳格式:`yyyy-MM-dd HH:mm:ss`
@@ -150,4 +161,4 @@ DouNaiClash=https://aaaa.gay/link/X7zEqkIx5gtIGugO?client=clashmeta
- 外部连接:`lionwebsite.xyz`、`personal.lionwebsite.xyz`、`aaaa.gay`
- GraalVM 原生镜像编译,包含 Jackson 反射配置
- 大量使用 Lombok(`@Data`、`@Slf4j`)
- 使用 Hutool 工具库处理文件/ZIP/HTTP 操作
- 使用 Hutool 工具库处理文件/ZIP/HTTP 操作