platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
104
selective-vpn-api/app/dns_settings_state_upstreams.go
Normal file
104
selective-vpn-api/app/dns_settings_state_upstreams.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package app
|
||||
|
||||
import dnscfgpkg "selective-vpn-api/app/dnscfg"
|
||||
|
||||
func dnscfgPoolItemsFromApp(items []DNSUpstreamPoolItem) []dnscfgpkg.UpstreamPoolItem {
|
||||
out := make([]dnscfgpkg.UpstreamPoolItem, 0, len(items))
|
||||
for _, item := range items {
|
||||
out = append(out, dnscfgpkg.UpstreamPoolItem{
|
||||
Addr: item.Addr,
|
||||
Enabled: item.Enabled,
|
||||
})
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func dnscfgPoolItemsToApp(items []dnscfgpkg.UpstreamPoolItem) []DNSUpstreamPoolItem {
|
||||
out := make([]DNSUpstreamPoolItem, 0, len(items))
|
||||
for _, item := range items {
|
||||
out = append(out, DNSUpstreamPoolItem{
|
||||
Addr: item.Addr,
|
||||
Enabled: item.Enabled,
|
||||
})
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func dnscfgUpstreamsFromApp(cfg DNSUpstreams) dnscfgpkg.Upstreams {
|
||||
return dnscfgpkg.Upstreams{
|
||||
Default1: cfg.Default1,
|
||||
Default2: cfg.Default2,
|
||||
Meta1: cfg.Meta1,
|
||||
Meta2: cfg.Meta2,
|
||||
}
|
||||
}
|
||||
|
||||
func dnscfgUpstreamsToApp(cfg dnscfgpkg.Upstreams) DNSUpstreams {
|
||||
return DNSUpstreams{
|
||||
Default1: cfg.Default1,
|
||||
Default2: cfg.Default2,
|
||||
Meta1: cfg.Meta1,
|
||||
Meta2: cfg.Meta2,
|
||||
}
|
||||
}
|
||||
|
||||
func dnscfgLegacyDefaults() dnscfgpkg.Upstreams {
|
||||
return dnscfgpkg.Upstreams{
|
||||
Default1: defaultDNS1,
|
||||
Default2: defaultDNS2,
|
||||
Meta1: defaultMeta1,
|
||||
Meta2: defaultMeta2,
|
||||
}
|
||||
}
|
||||
|
||||
func normalizeDNSUpstreamPoolItems(items []DNSUpstreamPoolItem) []DNSUpstreamPoolItem {
|
||||
return dnscfgPoolItemsToApp(
|
||||
dnscfgpkg.NormalizeUpstreamPoolItems(dnscfgPoolItemsFromApp(items), normalizeDNSUpstream),
|
||||
)
|
||||
}
|
||||
|
||||
func dnsUpstreamPoolFromLegacy(cfg DNSUpstreams) []DNSUpstreamPoolItem {
|
||||
return dnscfgPoolItemsToApp(
|
||||
dnscfgpkg.UpstreamPoolFromLegacy(dnscfgUpstreamsFromApp(cfg), normalizeDNSUpstream),
|
||||
)
|
||||
}
|
||||
|
||||
func dnsUpstreamPoolToLegacy(items []DNSUpstreamPoolItem) DNSUpstreams {
|
||||
return dnscfgUpstreamsToApp(
|
||||
dnscfgpkg.UpstreamPoolToLegacy(
|
||||
dnscfgPoolItemsFromApp(items),
|
||||
dnscfgLegacyDefaults(),
|
||||
normalizeDNSUpstream,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
func loadEnabledDNSUpstreamPool() []string {
|
||||
items := loadDNSUpstreamPoolState()
|
||||
return uniqueStrings(
|
||||
dnscfgpkg.EnabledPool(dnscfgPoolItemsFromApp(items), normalizeDNSUpstream),
|
||||
)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// EN: `loadDNSUpstreamsConf` loads dns upstreams conf from storage or config.
|
||||
// RU: `loadDNSUpstreamsConf` - загружает dns upstreams conf из хранилища или конфига.
|
||||
// ---------------------------------------------------------------------
|
||||
func loadDNSUpstreamsConf() DNSUpstreams {
|
||||
pool := loadDNSUpstreamPoolState()
|
||||
if len(pool) > 0 {
|
||||
return dnsUpstreamPoolToLegacy(pool)
|
||||
}
|
||||
return loadDNSUpstreamsConfFile()
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// EN: `saveDNSUpstreamsConf` saves dns upstreams conf to persistent storage.
|
||||
// RU: `saveDNSUpstreamsConf` - сохраняет dns upstreams conf в постоянное хранилище.
|
||||
// ---------------------------------------------------------------------
|
||||
func saveDNSUpstreamsConf(cfg DNSUpstreams) error {
|
||||
if err := saveDNSUpstreamsConfFile(cfg); err != nil {
|
||||
return err
|
||||
}
|
||||
return saveDNSUpstreamPoolFile(dnsUpstreamPoolFromLegacy(cfg))
|
||||
}
|
||||
Reference in New Issue
Block a user