platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
dnscfgpkg "selective-vpn-api/app/dnscfg"
|
||||
)
|
||||
|
||||
func loadDNSUpstreamsConfFile() DNSUpstreams {
|
||||
data, err := os.ReadFile(dnsUpstreamsConf)
|
||||
if err != nil {
|
||||
return dnscfgUpstreamsToApp(dnscfgLegacyDefaults())
|
||||
}
|
||||
pkgCfg := dnscfgpkg.ParseUpstreamsConf(string(data), dnscfgLegacyDefaults(), normalizeDNSUpstream)
|
||||
return dnscfgUpstreamsToApp(pkgCfg)
|
||||
}
|
||||
|
||||
func saveDNSUpstreamsConfFile(cfg DNSUpstreams) error {
|
||||
pkgCfg := dnscfgpkg.NormalizeUpstreams(dnscfgUpstreamsFromApp(cfg), dnscfgLegacyDefaults(), normalizeDNSUpstream)
|
||||
cfg = dnscfgUpstreamsToApp(pkgCfg)
|
||||
content := dnscfgpkg.RenderUpstreamsConf(pkgCfg)
|
||||
|
||||
if err := os.MkdirAll(filepath.Dir(dnsUpstreamsConf), 0o755); err != nil {
|
||||
return err
|
||||
}
|
||||
tmp := dnsUpstreamsConf + ".tmp"
|
||||
if err := os.WriteFile(tmp, []byte(content), 0o644); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Rename(tmp, dnsUpstreamsConf); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Legacy JSON mirror for backward compatibility with older UI/runtime bits.
|
||||
_ = os.MkdirAll(stateDir, 0o755)
|
||||
if b, err := json.MarshalIndent(cfg, "", " "); err == nil {
|
||||
_ = os.WriteFile(dnsUpstreamsPath, b, 0o644)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user