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), ), ) }