统一桌面服务环境配置加载
This commit is contained in:
parent
ed7b9ef5ed
commit
01dfda888a
@ -28,12 +28,18 @@ func Open(configPath, baseDir string) (*Runtime, error) {
|
||||
baseDir = filepath.Dir(filepath.Dir(configPath))
|
||||
}
|
||||
|
||||
cfg, err := config.Load(configPath)
|
||||
cfg, err := config.LoadWithEnv(configPath)
|
||||
if err != nil {
|
||||
if !errors.Is(err, os.ErrNotExist) {
|
||||
return nil, err
|
||||
}
|
||||
cfg = defaultConfig(baseDir)
|
||||
if err := cfg.ApplyEnvironment(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := cfg.Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
@ -66,3 +66,41 @@ func (r *recordingResponse) Write(body []byte) (int, error) {
|
||||
r.body += string(body)
|
||||
return len(body), nil
|
||||
}
|
||||
|
||||
func TestOpenAppliesEnvironmentOverrides(t *testing.T) {
|
||||
baseDir := t.TempDir()
|
||||
configPath := filepath.Join(baseDir, "config", "scert.json")
|
||||
cfg := defaultConfig(baseDir)
|
||||
if err := cfg.Save(configPath); err != nil {
|
||||
t.Fatalf("保存测试配置失败:%v", err)
|
||||
}
|
||||
t.Setenv("SCERT_WEB_ENABLED", "false")
|
||||
runtime, err := Open(configPath, baseDir)
|
||||
if err != nil {
|
||||
t.Fatalf("应用环境覆盖后打开桌面核心服务失败:%v", err)
|
||||
}
|
||||
defer runtime.Close()
|
||||
|
||||
request, err := http.NewRequest(http.MethodGet, "http://127.0.0.1/", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
request.RemoteAddr = "127.0.0.1:1234"
|
||||
response := newRecordingResponse()
|
||||
runtime.Handler().ServeHTTP(response, request)
|
||||
if response.status != http.StatusNotFound {
|
||||
t.Fatalf("SCERT_WEB_ENABLED=false 未关闭 Web 页面,状态码:%d", response.status)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenRejectsInvalidEnvironmentOverride(t *testing.T) {
|
||||
baseDir := t.TempDir()
|
||||
configPath := filepath.Join(baseDir, "config", "scert.json")
|
||||
if err := defaultConfig(baseDir).Save(configPath); err != nil {
|
||||
t.Fatalf("保存测试配置失败:%v", err)
|
||||
}
|
||||
t.Setenv("SCERT_WEB_ENABLED", "无效")
|
||||
if _, err := Open(configPath, baseDir); err == nil {
|
||||
t.Fatal("无效环境覆盖不应打开桌面核心服务")
|
||||
}
|
||||
}
|
||||
|
||||
@ -3011,3 +3011,17 @@ Linux Ubuntu 22.04 上的 `Scert-admin` 手动启停、无开机自启动、无
|
||||
- `[✓]` 网页端和桌面端前端 `npm.cmd run build` 已通过。
|
||||
- `[✓]` 桌面端 Go `go test ./...` 和 `go vet ./...` 已通过。
|
||||
- `[!]` 真实 ACME、DNS 服务商、远程 SSH、Nginx 反向代理和生产 HTTPS 验收仍需授权后的目标环境测试。
|
||||
|
||||
## 七十六、桌面核心服务环境配置一致性(2026-08-30)
|
||||
|
||||
### 76.1 本轮需求清单
|
||||
|
||||
- `[✓]` 桌面/Wails 核心服务入口统一使用 `LoadWithEnv()` 读取受控环境变量。
|
||||
- `[✓]` 配置文件不存在时,默认配置同样应用环境变量并执行完整校验。
|
||||
- `[✓]` 桌面核心服务支持通过 `SCERT_WEB_ENABLED=false` 关闭 Web 静态页面。
|
||||
- `[✓]` 桌面核心服务拒绝非法环境变量值,避免带错误配置启动。
|
||||
|
||||
### 76.2 验证状态
|
||||
|
||||
- `[✓]` `backend/service` 环境配置专项测试通过。
|
||||
- `[!]` 真实 Wails 桌面打包、Windows Service 和 Linux systemd 实机验收仍需在授权目标环境执行。
|
||||
Loading…
Reference in New Issue
Block a user