64 lines
2.2 KiB
Go
64 lines
2.2 KiB
Go
package app
|
|
|
|
import dnscfgpkg "selective-vpn-api/app/dnscfg"
|
|
|
|
// ---------------------------------------------------------------------
|
|
// EN: `loadDNSMode` loads dns mode from storage or config.
|
|
// RU: `loadDNSMode` - загружает dns mode из хранилища или конфига.
|
|
// ---------------------------------------------------------------------
|
|
func loadDNSMode() DNSMode {
|
|
st, needPersist := dnscfgpkg.LoadMode(dnscfgModeConfig())
|
|
mode := DNSMode{
|
|
ViaSmartDNS: st.ViaSmartDNS,
|
|
SmartDNSAddr: st.SmartDNSAddr,
|
|
Mode: DNSResolverMode(st.Mode),
|
|
}
|
|
if needPersist {
|
|
_ = saveDNSMode(mode)
|
|
}
|
|
return mode
|
|
}
|
|
|
|
// ---------------------------------------------------------------------
|
|
// EN: `saveDNSMode` saves dns mode to persistent storage.
|
|
// RU: `saveDNSMode` - сохраняет dns mode в постоянное хранилище.
|
|
// ---------------------------------------------------------------------
|
|
func saveDNSMode(mode DNSMode) error {
|
|
return dnscfgpkg.SaveMode(
|
|
dnscfgModeConfig(),
|
|
dnscfgpkg.ModeState{
|
|
ViaSmartDNS: mode.ViaSmartDNS,
|
|
SmartDNSAddr: mode.SmartDNSAddr,
|
|
Mode: string(mode.Mode),
|
|
},
|
|
)
|
|
}
|
|
|
|
func dnscfgModeConfig() dnscfgpkg.ModeConfig {
|
|
return dnscfgpkg.ModeConfig{
|
|
Path: dnsModePath,
|
|
DirectMode: string(DNSModeDirect),
|
|
DefaultSmartDNSAddr: resolveDefaultSmartDNSAddr(),
|
|
NormalizeResolverMode: func(mode string, viaSmartDNS bool) string {
|
|
return string(normalizeDNSResolverMode(DNSResolverMode(mode), viaSmartDNS))
|
|
},
|
|
NormalizeSmartDNSAddr: normalizeSmartDNSAddr,
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------------------------
|
|
// EN: `normalizeDNSResolverMode` normalizes dns resolver mode values.
|
|
// RU: `normalizeDNSResolverMode` - нормализует значения режима dns резолвера.
|
|
// ---------------------------------------------------------------------
|
|
func normalizeDNSResolverMode(mode DNSResolverMode, viaSmartDNS bool) DNSResolverMode {
|
|
return DNSResolverMode(
|
|
dnscfgpkg.NormalizeResolverMode(
|
|
string(mode),
|
|
viaSmartDNS,
|
|
string(DNSModeDirect),
|
|
string(DNSModeSmartDNS),
|
|
string(DNSModeHybridWildcard),
|
|
),
|
|
)
|
|
}
|