chore(config): use openvpn protocol string field instead of TCP bool
This commit is contained in:
@@ -1,8 +0,0 @@
|
|||||||
package helpers
|
|
||||||
|
|
||||||
func TCPPtrToString(tcp *bool) string {
|
|
||||||
if *tcp {
|
|
||||||
return "TCP"
|
|
||||||
}
|
|
||||||
return "UDP"
|
|
||||||
}
|
|
||||||
@@ -2,8 +2,10 @@ package settings
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings/helpers"
|
"github.com/qdm12/gluetun/internal/configuration/settings/helpers"
|
||||||
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
"github.com/qdm12/gluetun/internal/constants/providers"
|
"github.com/qdm12/gluetun/internal/constants/providers"
|
||||||
"github.com/qdm12/gluetun/internal/provider/privateinternetaccess/presets"
|
"github.com/qdm12/gluetun/internal/provider/privateinternetaccess/presets"
|
||||||
"github.com/qdm12/gosettings"
|
"github.com/qdm12/gosettings"
|
||||||
@@ -17,10 +19,10 @@ type OpenVPNSelection struct {
|
|||||||
// NOT use a custom configuration file.
|
// NOT use a custom configuration file.
|
||||||
// It cannot be nil in the internal state.
|
// It cannot be nil in the internal state.
|
||||||
ConfFile *string `json:"config_file_path"`
|
ConfFile *string `json:"config_file_path"`
|
||||||
// TCP is true if the OpenVPN protocol is TCP,
|
// Protocol is the OpenVPN network protocol to use,
|
||||||
// and false for UDP.
|
// and can be udp or tcp. It cannot be the empty string
|
||||||
// It cannot be nil in the internal state.
|
// in the internal state.
|
||||||
TCP *bool `json:"tcp"`
|
Protocol string `json:"protocol"`
|
||||||
// CustomPort is the OpenVPN server endpoint port.
|
// CustomPort is the OpenVPN server endpoint port.
|
||||||
// It can be set to 0 to indicate no custom port should
|
// It can be set to 0 to indicate no custom port should
|
||||||
// be used. It cannot be nil in the internal state.
|
// be used. It cannot be nil in the internal state.
|
||||||
@@ -40,8 +42,13 @@ func (o OpenVPNSelection) validate(vpnProvider string) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = validate.IsOneOf(o.Protocol, constants.UDP, constants.TCP)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("network protocol: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Validate TCP
|
// Validate TCP
|
||||||
if *o.TCP && helpers.IsOneOf(vpnProvider,
|
if o.Protocol == constants.TCP && helpers.IsOneOf(vpnProvider,
|
||||||
providers.Ipvanish,
|
providers.Ipvanish,
|
||||||
providers.Perfectprivacy,
|
providers.Perfectprivacy,
|
||||||
providers.Privado,
|
providers.Privado,
|
||||||
@@ -104,7 +111,7 @@ func (o OpenVPNSelection) validate(vpnProvider string) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
allowedPorts := allowedUDP
|
allowedPorts := allowedUDP
|
||||||
if *o.TCP {
|
if o.Protocol == constants.TCP {
|
||||||
allowedPorts = allowedTCP
|
allowedPorts = allowedTCP
|
||||||
}
|
}
|
||||||
err = validate.IsOneOf(*o.CustomPort, allowedPorts...)
|
err = validate.IsOneOf(*o.CustomPort, allowedPorts...)
|
||||||
@@ -133,7 +140,7 @@ func (o OpenVPNSelection) validate(vpnProvider string) (err error) {
|
|||||||
func (o *OpenVPNSelection) copy() (copied OpenVPNSelection) {
|
func (o *OpenVPNSelection) copy() (copied OpenVPNSelection) {
|
||||||
return OpenVPNSelection{
|
return OpenVPNSelection{
|
||||||
ConfFile: gosettings.CopyPointer(o.ConfFile),
|
ConfFile: gosettings.CopyPointer(o.ConfFile),
|
||||||
TCP: gosettings.CopyPointer(o.TCP),
|
Protocol: o.Protocol,
|
||||||
CustomPort: gosettings.CopyPointer(o.CustomPort),
|
CustomPort: gosettings.CopyPointer(o.CustomPort),
|
||||||
PIAEncPreset: gosettings.CopyPointer(o.PIAEncPreset),
|
PIAEncPreset: gosettings.CopyPointer(o.PIAEncPreset),
|
||||||
}
|
}
|
||||||
@@ -141,21 +148,21 @@ func (o *OpenVPNSelection) copy() (copied OpenVPNSelection) {
|
|||||||
|
|
||||||
func (o *OpenVPNSelection) mergeWith(other OpenVPNSelection) {
|
func (o *OpenVPNSelection) mergeWith(other OpenVPNSelection) {
|
||||||
o.ConfFile = gosettings.MergeWithPointer(o.ConfFile, other.ConfFile)
|
o.ConfFile = gosettings.MergeWithPointer(o.ConfFile, other.ConfFile)
|
||||||
o.TCP = gosettings.MergeWithPointer(o.TCP, other.TCP)
|
o.Protocol = gosettings.MergeWithString(o.Protocol, other.Protocol)
|
||||||
o.CustomPort = gosettings.MergeWithPointer(o.CustomPort, other.CustomPort)
|
o.CustomPort = gosettings.MergeWithPointer(o.CustomPort, other.CustomPort)
|
||||||
o.PIAEncPreset = gosettings.MergeWithPointer(o.PIAEncPreset, other.PIAEncPreset)
|
o.PIAEncPreset = gosettings.MergeWithPointer(o.PIAEncPreset, other.PIAEncPreset)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *OpenVPNSelection) overrideWith(other OpenVPNSelection) {
|
func (o *OpenVPNSelection) overrideWith(other OpenVPNSelection) {
|
||||||
o.ConfFile = gosettings.OverrideWithPointer(o.ConfFile, other.ConfFile)
|
o.ConfFile = gosettings.OverrideWithPointer(o.ConfFile, other.ConfFile)
|
||||||
o.TCP = gosettings.OverrideWithPointer(o.TCP, other.TCP)
|
o.Protocol = gosettings.OverrideWithString(o.Protocol, other.Protocol)
|
||||||
o.CustomPort = gosettings.OverrideWithPointer(o.CustomPort, other.CustomPort)
|
o.CustomPort = gosettings.OverrideWithPointer(o.CustomPort, other.CustomPort)
|
||||||
o.PIAEncPreset = gosettings.OverrideWithPointer(o.PIAEncPreset, other.PIAEncPreset)
|
o.PIAEncPreset = gosettings.OverrideWithPointer(o.PIAEncPreset, other.PIAEncPreset)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *OpenVPNSelection) setDefaults(vpnProvider string) {
|
func (o *OpenVPNSelection) setDefaults(vpnProvider string) {
|
||||||
o.ConfFile = gosettings.DefaultPointer(o.ConfFile, "")
|
o.ConfFile = gosettings.DefaultPointer(o.ConfFile, "")
|
||||||
o.TCP = gosettings.DefaultPointer(o.TCP, false)
|
o.Protocol = gosettings.DefaultString(o.Protocol, constants.UDP)
|
||||||
o.CustomPort = gosettings.DefaultPointer(o.CustomPort, 0)
|
o.CustomPort = gosettings.DefaultPointer(o.CustomPort, 0)
|
||||||
|
|
||||||
var defaultEncPreset string
|
var defaultEncPreset string
|
||||||
@@ -171,7 +178,7 @@ func (o OpenVPNSelection) String() string {
|
|||||||
|
|
||||||
func (o OpenVPNSelection) toLinesNode() (node *gotree.Node) {
|
func (o OpenVPNSelection) toLinesNode() (node *gotree.Node) {
|
||||||
node = gotree.New("OpenVPN server selection settings:")
|
node = gotree.New("OpenVPN server selection settings:")
|
||||||
node.Appendf("Protocol: %s", helpers.TCPPtrToString(o.TCP))
|
node.Appendf("Protocol: %s", strings.ToUpper(o.Protocol))
|
||||||
|
|
||||||
if *o.CustomPort != 0 {
|
if *o.CustomPort != 0 {
|
||||||
node.Appendf("Custom port: %d", *o.CustomPort)
|
node.Appendf("Custom port: %d", *o.CustomPort)
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
package env
|
package env
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||||
"github.com/qdm12/gluetun/internal/constants"
|
|
||||||
"github.com/qdm12/gosettings/sources/env"
|
"github.com/qdm12/gosettings/sources/env"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -14,7 +9,7 @@ func (s *Source) readOpenVPNSelection() (
|
|||||||
selection settings.OpenVPNSelection, err error) {
|
selection settings.OpenVPNSelection, err error) {
|
||||||
selection.ConfFile = s.env.Get("OPENVPN_CUSTOM_CONFIG", env.ForceLowercase(false))
|
selection.ConfFile = s.env.Get("OPENVPN_CUSTOM_CONFIG", env.ForceLowercase(false))
|
||||||
|
|
||||||
selection.TCP, err = s.readOpenVPNProtocol()
|
selection.Protocol = s.env.String("OPENVPN_PROTOCOL", env.RetroKeys("PROTOCOL"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return selection, err
|
return selection, err
|
||||||
}
|
}
|
||||||
@@ -29,28 +24,3 @@ func (s *Source) readOpenVPNSelection() (
|
|||||||
|
|
||||||
return selection, nil
|
return selection, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var ErrOpenVPNProtocolNotValid = errors.New("OpenVPN protocol is not valid")
|
|
||||||
|
|
||||||
func (s *Source) readOpenVPNProtocol() (tcp *bool, err error) {
|
|
||||||
const currentKey = "OPENVPN_PROTOCOL"
|
|
||||||
envKey := firstKeySet(s.env, "PROTOCOL", currentKey)
|
|
||||||
switch envKey {
|
|
||||||
case "":
|
|
||||||
return nil, nil //nolint:nilnil
|
|
||||||
case currentKey:
|
|
||||||
default: // Retro compatibility
|
|
||||||
s.handleDeprecatedKey(envKey, currentKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
protocol := s.env.String(envKey)
|
|
||||||
switch strings.ToLower(protocol) {
|
|
||||||
case constants.UDP:
|
|
||||||
return ptrTo(false), nil
|
|
||||||
case constants.TCP:
|
|
||||||
return ptrTo(true), nil
|
|
||||||
default:
|
|
||||||
return nil, fmt.Errorf("environment variable %s: %w: %s",
|
|
||||||
envKey, ErrOpenVPNProtocolNotValid, protocol)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
const provider = providers.Expressvpn
|
const provider = providers.Expressvpn
|
||||||
|
|
||||||
errTest := errors.New("test error")
|
errTest := errors.New("test error")
|
||||||
boolPtr := func(b bool) *bool { return &b }
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
filteredServers []models.Server
|
filteredServers []models.Server
|
||||||
@@ -45,7 +44,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
panicMessage: "no default OpenVPN TCP port is defined!",
|
panicMessage: "no default OpenVPN TCP port is defined!",
|
||||||
@@ -56,7 +55,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
const provider = providers.Ivpn
|
const provider = providers.Ivpn
|
||||||
|
|
||||||
errTest := errors.New("test error")
|
errTest := errors.New("test error")
|
||||||
boolPtr := func(b bool) *bool { return &b }
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
filteredServers []models.Server
|
filteredServers []models.Server
|
||||||
@@ -45,7 +44,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
@@ -61,7 +60,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
const provider = providers.Mullvad
|
const provider = providers.Mullvad
|
||||||
|
|
||||||
errTest := errors.New("test error")
|
errTest := errors.New("test error")
|
||||||
boolPtr := func(b bool) *bool { return &b }
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
filteredServers []models.Server
|
filteredServers []models.Server
|
||||||
@@ -45,7 +44,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
@@ -61,7 +60,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||||
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
"github.com/qdm12/gluetun/internal/constants/providers"
|
"github.com/qdm12/gluetun/internal/constants/providers"
|
||||||
"github.com/qdm12/gluetun/internal/constants/vpn"
|
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||||
"github.com/qdm12/gluetun/internal/models"
|
"github.com/qdm12/gluetun/internal/models"
|
||||||
@@ -50,7 +51,7 @@ func Test_FilterServers(t *testing.T) {
|
|||||||
"filter by network protocol": {
|
"filter by network protocol": {
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(providers.Ivpn),
|
}.WithDefaults(providers.Ivpn),
|
||||||
servers: []models.Server{
|
servers: []models.Server{
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||||
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
"github.com/qdm12/gluetun/internal/constants/vpn"
|
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ func getPort(selection settings.ServerSelection,
|
|||||||
if customPort > 0 {
|
if customPort > 0 {
|
||||||
return customPort
|
return customPort
|
||||||
}
|
}
|
||||||
if *selection.OpenVPN.TCP {
|
if selection.OpenVPN.Protocol == constants.TCP {
|
||||||
checkDefined("OpenVPN TCP", defaultOpenVPNTCP)
|
checkDefined("OpenVPN TCP", defaultOpenVPNTCP)
|
||||||
return defaultOpenVPNTCP
|
return defaultOpenVPNTCP
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||||
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
"github.com/qdm12/gluetun/internal/constants/vpn"
|
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
@@ -40,7 +41,7 @@ func Test_GetPort(t *testing.T) {
|
|||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
CustomPort: uint16Ptr(0),
|
CustomPort: uint16Ptr(0),
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
defaultOpenVPNTCP: defaultOpenVPNTCP,
|
defaultOpenVPNTCP: defaultOpenVPNTCP,
|
||||||
@@ -53,7 +54,7 @@ func Test_GetPort(t *testing.T) {
|
|||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
CustomPort: uint16Ptr(0),
|
CustomPort: uint16Ptr(0),
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
panics: "no default OpenVPN UDP port is defined!",
|
panics: "no default OpenVPN UDP port is defined!",
|
||||||
@@ -63,7 +64,7 @@ func Test_GetPort(t *testing.T) {
|
|||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
CustomPort: uint16Ptr(0),
|
CustomPort: uint16Ptr(0),
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
defaultOpenVPNTCP: defaultOpenVPNTCP,
|
defaultOpenVPNTCP: defaultOpenVPNTCP,
|
||||||
@@ -74,7 +75,7 @@ func Test_GetPort(t *testing.T) {
|
|||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
CustomPort: uint16Ptr(0),
|
CustomPort: uint16Ptr(0),
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
panics: "no default OpenVPN TCP port is defined!",
|
panics: "no default OpenVPN TCP port is defined!",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func getProtocol(selection settings.ServerSelection) (protocol string) {
|
func getProtocol(selection settings.ServerSelection) (protocol string) {
|
||||||
if selection.VPN == vpn.OpenVPN && *selection.OpenVPN.TCP {
|
if selection.VPN == vpn.OpenVPN && selection.OpenVPN.Protocol == constants.TCP {
|
||||||
return constants.TCP
|
return constants.TCP
|
||||||
}
|
}
|
||||||
return constants.UDP
|
return constants.UDP
|
||||||
@@ -19,7 +19,7 @@ func filterByProtocol(selection settings.ServerSelection,
|
|||||||
case vpn.Wireguard:
|
case vpn.Wireguard:
|
||||||
return !serverUDP
|
return !serverUDP
|
||||||
default: // OpenVPN
|
default: // OpenVPN
|
||||||
wantTCP := *selection.OpenVPN.TCP
|
wantTCP := selection.OpenVPN.Protocol == constants.TCP
|
||||||
wantUDP := !wantTCP
|
wantUDP := !wantTCP
|
||||||
return (wantTCP && !serverTCP) || (wantUDP && !serverUDP)
|
return (wantTCP && !serverTCP) || (wantUDP && !serverUDP)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ func Test_getProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
protocol: constants.UDP,
|
protocol: constants.UDP,
|
||||||
@@ -32,7 +32,7 @@ func Test_getProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
protocol: constants.TCP,
|
protocol: constants.TCP,
|
||||||
@@ -84,7 +84,7 @@ func Test_filterByProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serverUDP: true,
|
serverUDP: true,
|
||||||
@@ -94,7 +94,7 @@ func Test_filterByProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serverUDP: false,
|
serverUDP: false,
|
||||||
@@ -104,7 +104,7 @@ func Test_filterByProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serverTCP: true,
|
serverTCP: true,
|
||||||
@@ -114,7 +114,7 @@ func Test_filterByProtocol(t *testing.T) {
|
|||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
VPN: vpn.OpenVPN,
|
VPN: vpn.OpenVPN,
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serverTCP: false,
|
serverTCP: false,
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
const provider = providers.Wevpn
|
const provider = providers.Wevpn
|
||||||
|
|
||||||
errTest := errors.New("test error")
|
errTest := errors.New("test error")
|
||||||
boolPtr := func(b bool) *bool { return &b }
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
filteredServers []models.Server
|
filteredServers []models.Server
|
||||||
@@ -45,7 +44,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
@@ -61,7 +60,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
const provider = providers.Windscribe
|
const provider = providers.Windscribe
|
||||||
|
|
||||||
errTest := errors.New("test error")
|
errTest := errors.New("test error")
|
||||||
boolPtr := func(b bool) *bool { return &b }
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
filteredServers []models.Server
|
filteredServers []models.Server
|
||||||
@@ -46,7 +45,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(true),
|
Protocol: constants.TCP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
@@ -62,7 +61,7 @@ func Test_Provider_GetConnection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
selection: settings.ServerSelection{
|
selection: settings.ServerSelection{
|
||||||
OpenVPN: settings.OpenVPNSelection{
|
OpenVPN: settings.OpenVPNSelection{
|
||||||
TCP: boolPtr(false),
|
Protocol: constants.UDP,
|
||||||
},
|
},
|
||||||
}.WithDefaults(provider),
|
}.WithDefaults(provider),
|
||||||
connection: models.Connection{
|
connection: models.Connection{
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||||
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
"github.com/qdm12/gluetun/internal/constants/providers"
|
"github.com/qdm12/gluetun/internal/constants/providers"
|
||||||
"github.com/qdm12/gluetun/internal/constants/vpn"
|
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||||
"github.com/qdm12/gluetun/internal/models"
|
"github.com/qdm12/gluetun/internal/models"
|
||||||
@@ -147,7 +148,7 @@ func filterByProtocol(selection settings.ServerSelection,
|
|||||||
case vpn.Wireguard:
|
case vpn.Wireguard:
|
||||||
return !serverUDP
|
return !serverUDP
|
||||||
default: // OpenVPN
|
default: // OpenVPN
|
||||||
wantTCP := *selection.OpenVPN.TCP
|
wantTCP := selection.OpenVPN.Protocol == constants.TCP
|
||||||
wantUDP := !wantTCP
|
wantUDP := !wantTCP
|
||||||
return (wantTCP && !serverTCP) || (wantUDP && !serverUDP)
|
return (wantTCP && !serverTCP) || (wantUDP && !serverUDP)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func noServerFoundError(selection settings.ServerSelection) (err error) {
|
|||||||
messageParts = append(messageParts, "VPN "+selection.VPN)
|
messageParts = append(messageParts, "VPN "+selection.VPN)
|
||||||
|
|
||||||
protocol := constants.UDP
|
protocol := constants.UDP
|
||||||
if *selection.OpenVPN.TCP {
|
if selection.OpenVPN.Protocol == constants.TCP {
|
||||||
protocol = constants.TCP
|
protocol = constants.TCP
|
||||||
}
|
}
|
||||||
messageParts = append(messageParts, "protocol "+protocol)
|
messageParts = append(messageParts, "protocol "+protocol)
|
||||||
|
|||||||
Reference in New Issue
Block a user