Files
elmprodvpn/selective-vpn-api/app/dns_settings_state_mode.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),
),
)
}