From 5d75bbc86904d58924a400ea98faf38625ccdc4f Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Wed, 31 Jul 2024 14:49:33 +0000 Subject: [PATCH] feat(config): only use port forwarding servers when port forwarding is enabled for ProtonVPN and PIA --- internal/configuration/settings/provider.go | 2 +- internal/configuration/settings/serverselection.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/configuration/settings/provider.go b/internal/configuration/settings/provider.go index b2fb9a7a..15bb1c10 100644 --- a/internal/configuration/settings/provider.go +++ b/internal/configuration/settings/provider.go @@ -76,8 +76,8 @@ func (p *Provider) overrideWith(other Provider) { func (p *Provider) setDefaults() { p.Name = gosettings.DefaultComparable(p.Name, providers.PrivateInternetAccess) - p.ServerSelection.setDefaults(p.Name) p.PortForwarding.setDefaults() + p.ServerSelection.setDefaults(p.Name, *p.PortForwarding.Enabled) } func (p Provider) String() string { diff --git a/internal/configuration/settings/serverselection.go b/internal/configuration/settings/serverselection.go index 4765785c..ed254f2f 100644 --- a/internal/configuration/settings/serverselection.go +++ b/internal/configuration/settings/serverselection.go @@ -294,7 +294,7 @@ func (ss *ServerSelection) overrideWith(other ServerSelection) { ss.Wireguard.overrideWith(other.Wireguard) } -func (ss *ServerSelection) setDefaults(vpnProvider string) { +func (ss *ServerSelection) setDefaults(vpnProvider string, portForwardingEnabled bool) { ss.VPN = gosettings.DefaultComparable(ss.VPN, vpn.OpenVPN) ss.TargetIP = gosettings.DefaultValidator(ss.TargetIP, netip.IPv4Unspecified()) ss.OwnedOnly = gosettings.DefaultPointer(ss.OwnedOnly, false) @@ -304,7 +304,12 @@ func (ss *ServerSelection) setDefaults(vpnProvider string) { ss.SecureCoreOnly = gosettings.DefaultPointer(ss.SecureCoreOnly, false) ss.TorOnly = gosettings.DefaultPointer(ss.TorOnly, false) ss.MultiHopOnly = gosettings.DefaultPointer(ss.MultiHopOnly, false) - ss.PortForwardOnly = gosettings.DefaultPointer(ss.PortForwardOnly, false) + defaultPortForwardOnly := false + if portForwardingEnabled && helpers.IsOneOf(vpnProvider, + providers.PrivateInternetAccess, providers.Protonvpn) { + defaultPortForwardOnly = true + } + ss.PortForwardOnly = gosettings.DefaultPointer(ss.PortForwardOnly, defaultPortForwardOnly) ss.OpenVPN.setDefaults(vpnProvider) ss.Wireguard.setDefaults() } @@ -399,7 +404,8 @@ func (ss ServerSelection) toLinesNode() (node *gotree.Node) { // WithDefaults is a shorthand using setDefaults. // It's used in unit tests in other packages. func (ss ServerSelection) WithDefaults(provider string) ServerSelection { - ss.setDefaults(provider) + const portForwardingEnabled = false + ss.setDefaults(provider, portForwardingEnabled) return ss }