diff --git a/internal/params/openvpn.go b/internal/params/openvpn.go index 025e1982..811b1b74 100644 --- a/internal/params/openvpn.go +++ b/internal/params/openvpn.go @@ -20,14 +20,18 @@ func (r *reader) GetUser() (s string, err error) { } // GetPassword obtains the password to use to connect to the VPN servers -func (r *reader) GetPassword() (s string, err error) { +func (r *reader) GetPassword(required bool) (s string, err error) { defer func() { unsetenvErr := r.unsetEnv("PASSWORD") if err == nil { err = unsetenvErr } }() - return r.envParams.GetEnv("PASSWORD", libparams.CaseSensitiveValue(), libparams.Compulsory()) + options := []libparams.GetEnvSetter{libparams.CaseSensitiveValue()} + if required { + options = append(options, libparams.Compulsory()) + } + return r.envParams.GetEnv("PASSWORD", options...) } // GetNetworkProtocol obtains the network protocol to use to connect to the diff --git a/internal/params/params.go b/internal/params/params.go index f682f183..34df0188 100644 --- a/internal/params/params.go +++ b/internal/params/params.go @@ -42,7 +42,7 @@ type Reader interface { // VPN getters GetUser() (s string, err error) - GetPassword() (s string, err error) + GetPassword(required bool) (s string, err error) GetNetworkProtocol() (protocol models.NetworkProtocol, err error) GetOpenVPNVerbosity() (verbosity int, err error) GetOpenVPNRoot() (root bool, err error) diff --git a/internal/settings/openvpn.go b/internal/settings/openvpn.go index 1c6a9e7f..f2e3e4c1 100644 --- a/internal/settings/openvpn.go +++ b/internal/settings/openvpn.go @@ -18,14 +18,14 @@ type OpenVPN struct { } // GetOpenVPNSettings obtains the OpenVPN settings using the params functions -func GetOpenVPNSettings(paramsReader params.Reader) (settings OpenVPN, err error) { +func GetOpenVPNSettings(paramsReader params.Reader, passwordRequired bool) (settings OpenVPN, err error) { settings.User, err = paramsReader.GetUser() if err != nil { return settings, err } // Remove spaces in user ID to simplify user's life, thanks @JeordyR settings.User = strings.ReplaceAll(settings.User, " ", "") - settings.Password, err = paramsReader.GetPassword() + settings.Password, err = paramsReader.GetPassword(passwordRequired) if err != nil { return settings, err } diff --git a/internal/settings/settings.go b/internal/settings/settings.go index a6d53ee3..9e6aa2a0 100644 --- a/internal/settings/settings.go +++ b/internal/settings/settings.go @@ -59,11 +59,12 @@ func GetAllSettings(paramsReader params.Reader) (settings Settings, err error) { if err != nil { return settings, err } - settings.OpenVPN, err = GetOpenVPNSettings(paramsReader) + isMullvad := settings.VPNSP == constants.Mullvad + settings.OpenVPN, err = GetOpenVPNSettings(paramsReader, !isMullvad) if err != nil { return settings, err } - if settings.VPNSP == constants.Mullvad { + if isMullvad { settings.OpenVPN.Password = "m" } settings.DNS, err = GetDNSSettings(paramsReader)