fix(web,agent,frp): frps 配置预览脱敏、日志界面倒序与来源中文化,agent 0.12.4 重写日志日期格式(v1.2.12)
CI / verify (push) Canceled after 0s

- frps.toml 同源配置预览泄露明文密钥:FRPSServerConfig(对外预览入口)改为走 maskFRPSSecrets,auth.token / auth.oidc.clientSecret 的值换成 ********(键名与结构保留、注释行不动);下发路径 PushFRPSConfigToAgent 与安装流程仍用未脱敏内容。弹窗补说明,「复制」改「复制(已脱敏)」

- agent 0.12.4:frps 日志 6 行 → 最近 20 行、最新在最上面;日期由 short-iso 的 2026-09-22T18:43:34+08:00 RainYun-XXX 重写为 2026-09-22 18:43:34 进程: 消息(去掉 T 分隔、时区偏移与每行重复的主机名),frps/action 失败日志一并统一

- 日志界面:FRP 日志「来源」列由 Go 源码文件名(client/control.go:174)改为中文模块名;规则详情「日志」页签倒序;「公网服务端」弹窗改为显示 VPS 上的 frps 服务日志

- 测试:maskFRPSSecrets 脱敏(明文不出现、非敏感行不误伤)与注释行不改写;gofmt / go build / go vet / go test / vue-tsc / vite build 全绿

- AgentVersion 0.12.2 → 0.12.4,双架构内嵌二进制已重编:需在 VPS 上点一次「升级 Agent」才生效
This commit is contained in:
2026-09-25 13:56:07 +08:00
parent 74d731d0ac
commit 2236259a52
11 changed files with 188 additions and 15 deletions
+26 -1
View File
@@ -413,6 +413,31 @@ const frpLevelText: Record<string, string> = { I: '信息', W: '警告', E: '错
// 工具条的级别选项值是 INFO / WARN / ERROR,而 frpc 的级别是单字母 I/W/E/D,需转换后再比较
const frpLevelAlias: Record<string, string> = { INFO: 'I', WARN: 'W', ERROR: 'E' }
// frpc 的「来源」是 Go 源码文件行号(如 client/control.go:174),对用户没有意义;
// 这里按文件前缀映射成中文模块名,认不出来的(例如回落到的组件名)原样保留。
const FRP_SOURCE_LABELS: { prefix: string; label: string }[] = [
{ prefix: 'client/control.go', label: '连接' },
{ prefix: 'client/service.go', label: '登录' },
{ prefix: 'client/proxy.go', label: '连接' },
{ prefix: 'client/', label: '客户端' },
{ prefix: 'proxy/proxy_manager.go', label: '代理' },
{ prefix: 'proxy/', label: '代理' },
{ prefix: 'sub/root.go', label: '服务' },
{ prefix: 'sub/', label: '服务' },
{ prefix: 'config/', label: '配置' },
{ prefix: 'health/', label: '健康检查' },
{ prefix: 'server/', label: '服务端' },
{ prefix: 'pkg/', label: '组件' },
]
function frpSourceLabel(source: string): string {
const file = source.split(':')[0] ?? ''
for (const item of FRP_SOURCE_LABELS) {
if (file === item.prefix || file.startsWith(item.prefix)) return item.label
}
return file || source
}
// frpc 行有两种形态:
// 2026-09-23 15:20:31.123 [I] [service.go:295] login to server success
// [web] 2026-09-20 19:38:51.771 [I] [client/control.go:174] [trace-id] [web-http] start proxy success
@@ -426,7 +451,7 @@ function parseFrpLogLine(line: string): FrpLogEntry {
return {
time: matched[2],
level: matched[3].toUpperCase(),
source: matched[4] || component,
source: frpSourceLabel(matched[4] || component),
message: matched[5] ?? '',
}
}