feat: 上游 1.0.3-1.0.5 同步第 1-8 项(v1.2.2)

剪贴板:新增 web/src/utils/clipboard.ts,5 处调用点支持非 HTTPS 环境(对齐 1.0.4)

日志中心:新增「FRP 日志」Tab,解析 frpc 日志为 时间/级别/来源/消息(对齐 1.0.3)

通知:单通道密文解密失败不再拖垮整份配置(对齐 1.0.5);容器补 TZ + tzdata(对齐 1.0.4);Telegram 代理自动补 http:// 并校验 scheme(对齐 1.0.3)

反向代理:复制不再追加「-复制」(对齐 1.0.5);监听占用校验合并表单规则与手动 Nginx 配置两张表(迁移 024 + endpoints 解析器),冲突提示写明占用规则;改端口的并发冲突改为可读提示

FRP:frps 弹窗补「VPS 防火墙放行 TCP 远程端口」提示(对齐 1.0.3);反代配置弹窗补齐内容区内边距与来源说明

文档:新增 docs/upstream-sync-plan.md(逐版本对照 + 第 5 项详细整理);VERSION 与 CHANGELOG 记 v1.2.2
This commit is contained in:
2026-09-23 17:46:21 +08:00
parent 1e915fe7c1
commit fd1661622e
23 changed files with 1008 additions and 53 deletions
+13 -6
View File
@@ -105,9 +105,12 @@ func (s *Store) load(ctx context.Context, decrypt bool) (Config, runtimeSecrets,
if decrypt && s.secret != nil {
plain, err := s.secret.Decrypt(smtpEnc)
if err != nil {
return Config{}, runtimeSecrets{}, secret.DecryptHint(err)
// 单个通道的密文损坏(例如更换过加密密钥)不应让整份配置加载失败:
// 仅标记该通道不可用并继续解析其它通道,避免 Telegram/Webhook 一起失效
cfg.Email.HasPassword = false
} else {
secrets.smtpPassword = plain
}
secrets.smtpPassword = plain
}
}
@@ -117,9 +120,11 @@ func (s *Store) load(ctx context.Context, decrypt bool) (Config, runtimeSecrets,
if decrypt && s.secret != nil {
plain, err := s.secret.Decrypt(webhookEnc)
if err != nil {
return Config{}, runtimeSecrets{}, secret.DecryptHint(err)
// 同上:只让该通道不可用,不影响其它通道
cfg.Webhook.HasSecret = false
} else {
secrets.webhookSecret = plain
}
secrets.webhookSecret = plain
}
}
@@ -129,9 +134,11 @@ func (s *Store) load(ctx context.Context, decrypt bool) (Config, runtimeSecrets,
if decrypt && s.secret != nil {
plain, err := s.secret.Decrypt(telegramEnc)
if err != nil {
return Config{}, runtimeSecrets{}, secret.DecryptHint(err)
// 同上:只让该通道不可用,不影响其它通道
cfg.Telegram.HasBotToken = false
} else {
secrets.telegramToken = plain
}
secrets.telegramToken = plain
}
}