From c40c8413b5d09c6c0e31711695f6bfe6857d8a2a Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Fri, 7 Jan 2022 09:23:29 +0000 Subject: [PATCH] fix(custom): settings parsing for custom VPNSP --- .../configuration/settings/serverselection.go | 21 +++++++++++-------- .../configuration/sources/env/provider.go | 8 +++++-- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/internal/configuration/settings/serverselection.go b/internal/configuration/settings/serverselection.go index 17348c6d..ee78949f 100644 --- a/internal/configuration/settings/serverselection.go +++ b/internal/configuration/settings/serverselection.go @@ -68,6 +68,7 @@ func (ss *ServerSelection) validate(vpnServiceProvider string, var countryChoices, regionChoices, cityChoices, ispChoices, nameChoices, hostnameChoices []string switch vpnServiceProvider { + case constants.Custom: case constants.Cyberghost: servers := allServers.GetCyberghost() countryChoices = constants.CyberghostCountryChoices(servers) @@ -177,7 +178,7 @@ func (ss *ServerSelection) validate(vpnServiceProvider string, cityChoices = constants.WindscribeCityChoices(servers) hostnameChoices = constants.WindscribeHostnameChoices(servers) default: - return fmt.Errorf("%w: %s", ErrVPNProviderNameNotValid, ss.VPN) + return fmt.Errorf("%w: %s", ErrVPNProviderNameNotValid, vpnServiceProvider) } err = validateServerFilters(*ss, countryChoices, regionChoices, cityChoices, @@ -186,14 +187,16 @@ func (ss *ServerSelection) validate(vpnServiceProvider string, return err // already wrapped error } - err = ss.OpenVPN.validate(vpnServiceProvider) - if err != nil { - return fmt.Errorf("OpenVPN server selection settings validation failed: %w", err) - } - - err = ss.Wireguard.validate(vpnServiceProvider) - if err != nil { - return fmt.Errorf("Wireguard server selection settings validation failed: %w", err) + if ss.VPN == constants.OpenVPN { + err = ss.OpenVPN.validate(vpnServiceProvider) + if err != nil { + return fmt.Errorf("OpenVPN server selection settings validation failed: %w", err) + } + } else { + err = ss.Wireguard.validate(vpnServiceProvider) + if err != nil { + return fmt.Errorf("Wireguard server selection settings validation failed: %w", err) + } } return nil diff --git a/internal/configuration/sources/env/provider.go b/internal/configuration/sources/env/provider.go index e0e12348..c4b46ffe 100644 --- a/internal/configuration/sources/env/provider.go +++ b/internal/configuration/sources/env/provider.go @@ -11,8 +11,12 @@ import ( func (r *Reader) readProvider(vpnType string) (provider settings.Provider, err error) { provider.Name = readVPNServiceProvider(vpnType) + var providerName string + if provider.Name != nil { + providerName = *provider.Name + } - provider.ServerSelection, err = r.readServerSelection(*provider.Name, vpnType) + provider.ServerSelection, err = r.readServerSelection(providerName, vpnType) if err != nil { return provider, fmt.Errorf("cannot read server selection settings: %w", err) } @@ -28,7 +32,7 @@ func (r *Reader) readProvider(vpnType string) (provider settings.Provider, err e func readVPNServiceProvider(vpnType string) (vpnProviderPtr *string) { s := strings.ToLower(os.Getenv("VPNSP")) switch { - case vpnType == constants.OpenVPN && + case vpnType != constants.Wireguard && os.Getenv("OPENVPN_CUSTOM_CONFIG") != "": // retro compatibility return stringPtr(constants.Custom) case s == "":