fix(custom): settings parsing for custom VPNSP

This commit is contained in:
Quentin McGaw
2022-01-07 09:23:29 +00:00
parent ae074dfb2b
commit c40c8413b5
2 changed files with 18 additions and 11 deletions

View File

@@ -68,6 +68,7 @@ func (ss *ServerSelection) validate(vpnServiceProvider string,
var countryChoices, regionChoices, cityChoices, var countryChoices, regionChoices, cityChoices,
ispChoices, nameChoices, hostnameChoices []string ispChoices, nameChoices, hostnameChoices []string
switch vpnServiceProvider { switch vpnServiceProvider {
case constants.Custom:
case constants.Cyberghost: case constants.Cyberghost:
servers := allServers.GetCyberghost() servers := allServers.GetCyberghost()
countryChoices = constants.CyberghostCountryChoices(servers) countryChoices = constants.CyberghostCountryChoices(servers)
@@ -177,7 +178,7 @@ func (ss *ServerSelection) validate(vpnServiceProvider string,
cityChoices = constants.WindscribeCityChoices(servers) cityChoices = constants.WindscribeCityChoices(servers)
hostnameChoices = constants.WindscribeHostnameChoices(servers) hostnameChoices = constants.WindscribeHostnameChoices(servers)
default: default:
return fmt.Errorf("%w: %s", ErrVPNProviderNameNotValid, ss.VPN) return fmt.Errorf("%w: %s", ErrVPNProviderNameNotValid, vpnServiceProvider)
} }
err = validateServerFilters(*ss, countryChoices, regionChoices, cityChoices, err = validateServerFilters(*ss, countryChoices, regionChoices, cityChoices,
@@ -186,14 +187,16 @@ func (ss *ServerSelection) validate(vpnServiceProvider string,
return err // already wrapped error return err // already wrapped error
} }
err = ss.OpenVPN.validate(vpnServiceProvider) if ss.VPN == constants.OpenVPN {
if err != nil { err = ss.OpenVPN.validate(vpnServiceProvider)
return fmt.Errorf("OpenVPN server selection settings validation failed: %w", err) if err != nil {
} return fmt.Errorf("OpenVPN server selection settings validation failed: %w", err)
}
err = ss.Wireguard.validate(vpnServiceProvider) } else {
if err != nil { err = ss.Wireguard.validate(vpnServiceProvider)
return fmt.Errorf("Wireguard server selection settings validation failed: %w", err) if err != nil {
return fmt.Errorf("Wireguard server selection settings validation failed: %w", err)
}
} }
return nil return nil

View File

@@ -11,8 +11,12 @@ import (
func (r *Reader) readProvider(vpnType string) (provider settings.Provider, err error) { func (r *Reader) readProvider(vpnType string) (provider settings.Provider, err error) {
provider.Name = readVPNServiceProvider(vpnType) 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 { if err != nil {
return provider, fmt.Errorf("cannot read server selection settings: %w", err) 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) { func readVPNServiceProvider(vpnType string) (vpnProviderPtr *string) {
s := strings.ToLower(os.Getenv("VPNSP")) s := strings.ToLower(os.Getenv("VPNSP"))
switch { switch {
case vpnType == constants.OpenVPN && case vpnType != constants.Wireguard &&
os.Getenv("OPENVPN_CUSTOM_CONFIG") != "": // retro compatibility os.Getenv("OPENVPN_CUSTOM_CONFIG") != "": // retro compatibility
return stringPtr(constants.Custom) return stringPtr(constants.Custom)
case s == "": case s == "":