baseline: api+gui traffic mode + candidates picker
Snapshot before app-launcher (cgroup/mark) work; ignore binaries/backups.
This commit is contained in:
47
selective-vpn-api/app/seeds.go
Normal file
47
selective-vpn-api/app/seeds.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"os"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// seed-файлы и bootstrap
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
// EN: Bootstrap seed files on first run so the API can start with sane defaults
|
||||
// EN: even when runtime configuration files do not exist yet.
|
||||
// RU: Инициализация seed-файлов при первом запуске, чтобы API стартовал
|
||||
// RU: с корректными значениями по умолчанию при отсутствии runtime-конфигов.
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// seed initializer
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
func ensureSeeds() {
|
||||
_ = os.MkdirAll(domainDir, 0o755)
|
||||
_ = os.MkdirAll("/etc/selective-vpn", 0o755)
|
||||
_ = os.MkdirAll(stateDir, 0o755)
|
||||
|
||||
seedFile := func(name string, path string) {
|
||||
if _, err := os.Stat(path); err == nil {
|
||||
return
|
||||
}
|
||||
data, err := fs.ReadFile(embeddedDomains, "assets/domains/"+name)
|
||||
if err != nil {
|
||||
data = []byte{}
|
||||
}
|
||||
_ = os.WriteFile(path, data, 0o644)
|
||||
}
|
||||
|
||||
seedFile("bases.txt", domainDir+"/bases.txt")
|
||||
seedFile("subs.txt", domainDir+"/subs.txt")
|
||||
seedFile("meta-special.txt", domainDir+"/meta-special.txt")
|
||||
seedFile("static-ips.txt", staticIPsFile)
|
||||
|
||||
if _, err := os.Stat(dnsUpstreamsConf); err != nil {
|
||||
content := fmt.Sprintf("default %s %s\nmeta %s %s\n", defaultDNS1, defaultDNS2, defaultMeta1, defaultMeta2)
|
||||
_ = os.WriteFile(dnsUpstreamsConf, []byte(content), 0o644)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user