Maint: configuration Openvpn selection structure

- Move network protocol from ServerSelection to OpenVPNSelection child
- Move PIA encryption preset from ServerSelection to OpenVPNSelection child
- Move custom port from ServerSelection to OpenVPNSelection child
This commit is contained in:
Quentin McGaw (desktop)
2021-08-17 16:54:22 +00:00
parent cc2235653a
commit 9105b33e9f
57 changed files with 321 additions and 282 deletions

View File

@@ -11,7 +11,7 @@ func (c *Cyberghost) GetOpenVPNConnection(selection configuration.ServerSelectio
connection models.OpenVPNConnection, err error) {
const port = 443
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}

View File

@@ -16,7 +16,7 @@ var ErrGroupMismatchesProtocol = errors.New("server group does not match protoco
func (c *Cyberghost) filterServers(selection configuration.ServerSelection) (
servers []models.CyberghostServer, err error) {
if len(selection.Groups) == 0 {
if selection.TCP {
if selection.OpenVPN.TCP {
selection.Groups = tcpGroupChoices()
} else {
selection.Groups = udpGroupChoices()
@@ -25,7 +25,7 @@ func (c *Cyberghost) filterServers(selection configuration.ServerSelection) (
// Check each group match the protocol
groupsCheckFn := groupsAreAllUDP
if selection.TCP {
if selection.OpenVPN.TCP {
groupsCheckFn = groupsAreAllTCP
}
if err := groupsCheckFn(selection.Groups); err != nil {

View File

@@ -41,7 +41,9 @@ func Test_Cyberghost_filterServers(t *testing.T) {
{Region: "d", Group: "Premium UDP Europe"},
},
selection: configuration.ServerSelection{
TCP: true,
OpenVPN: configuration.OpenVPNSelection{
TCP: true,
},
},
filteredServers: []models.CyberghostServer{
{Region: "a", Group: "Premium TCP Asia"},

View File

@@ -11,7 +11,7 @@ func (f *Fastestvpn) GetOpenVPNConnection(selection configuration.ServerSelectio
connection models.OpenVPNConnection, err error) {
const port = 4443
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}

View File

@@ -13,8 +13,8 @@ func (f *Fastestvpn) filterServers(selection configuration.ServerSelection) (
case
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -11,13 +11,13 @@ func (h *HideMyAss) GetOpenVPNConnection(selection configuration.ServerSelection
connection models.OpenVPNConnection, err error) {
var port uint16 = 553
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
port = 8080
}
if selection.CustomPort > 0 {
port = selection.CustomPort
if selection.OpenVPN.CustomPort > 0 {
port = selection.OpenVPN.CustomPort
}
servers, err := h.filterServers(selection)

View File

@@ -14,8 +14,8 @@ func (h *HideMyAss) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -15,7 +15,7 @@ func (i *Ipvanish) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
const port = 443
const protocol = constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
return connection, ErrProtocolUnsupported
}

View File

@@ -14,8 +14,8 @@ func (i *Ipvanish) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -15,7 +15,7 @@ func (i *Ivpn) GetOpenVPNConnection(selection configuration.ServerSelection) (
connection models.OpenVPNConnection, err error) {
const port = 2049
const protocol = constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
return connection, ErrProtocolUnsupported
}

View File

@@ -14,8 +14,8 @@ func (i *Ivpn) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -11,13 +11,13 @@ func (m *Mullvad) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
var port uint16 = 1194
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
port = 443
protocol = constants.TCP
}
if selection.CustomPort > 0 {
port = selection.CustomPort
if selection.OpenVPN.CustomPort > 0 {
port = selection.OpenVPN.CustomPort
}
servers, err := m.filterServers(selection)

View File

@@ -11,7 +11,7 @@ func (n *Nordvpn) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
var port uint16 = 1194
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
port = 443
protocol = constants.TCP
}

View File

@@ -23,8 +23,8 @@ func (n *Nordvpn) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
utils.FilterByPossibilities(server.Name, selection.Names),
utils.FilterByPossibilities(serverNumber, selectedNumbers),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -16,7 +16,7 @@ func (p *Privado) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
const port = 1194
const protocol = constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
return connection, fmt.Errorf("%w: TCP for provider Privado", ErrProtocolUnsupported)
}

View File

@@ -10,11 +10,11 @@ import (
func (p *PIA) GetOpenVPNConnection(selection configuration.ServerSelection) (
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}
port, err := getPort(selection.TCP, selection.EncryptionPreset, selection.CustomPort)
port, err := getPort(selection.OpenVPN)
if err != nil {
return connection, err
}

View File

@@ -14,8 +14,8 @@ func (p *PIA) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Region, selection.Regions),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
utils.FilterByPossibilities(server.ServerName, selection.Names),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -4,20 +4,21 @@ import (
"errors"
"fmt"
"github.com/qdm12/gluetun/internal/configuration"
"github.com/qdm12/gluetun/internal/constants"
)
func getPort(tcp bool, encryptionPreset string, customPort uint16) (
func getPort(openvpnSelection configuration.OpenVPNSelection) (
port uint16, err error) {
if customPort == 0 {
return getDefaultPort(tcp, encryptionPreset), nil
if openvpnSelection.CustomPort == 0 {
return getDefaultPort(openvpnSelection.TCP, openvpnSelection.EncPreset), nil
}
if err := checkPort(customPort, tcp); err != nil {
if err := checkPort(openvpnSelection.CustomPort, openvpnSelection.TCP); err != nil {
return 0, err
}
return customPort, nil
return openvpnSelection.CustomPort, nil
}
func getDefaultPort(tcp bool, encryptionPreset string) (port uint16) {

View File

@@ -11,7 +11,7 @@ func (p *Privatevpn) GetOpenVPNConnection(selection configuration.ServerSelectio
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
var port uint16 = 1194
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
port = 443
}

View File

@@ -10,11 +10,11 @@ import (
func (p *Protonvpn) GetOpenVPNConnection(selection configuration.ServerSelection) (
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}
port, err := getPort(selection.TCP, selection.CustomPort)
port, err := getPort(selection.OpenVPN.TCP, selection.OpenVPN.CustomPort)
if err != nil {
return connection, err
}

View File

@@ -11,7 +11,7 @@ func (p *Purevpn) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
var port uint16 = 53
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
port = 80
}

View File

@@ -15,8 +15,8 @@ func (p *Purevpn) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -11,7 +11,7 @@ func (s *Surfshark) GetOpenVPNConnection(selection configuration.ServerSelection
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
var port uint16 = 1194
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
port = 1443
}

View File

@@ -13,8 +13,8 @@ func (s *Surfshark) filterServers(selection configuration.ServerSelection) (
case
utils.FilterByPossibilities(server.Region, selection.Regions),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -10,13 +10,13 @@ import (
func (t *Torguard) GetOpenVPNConnection(selection configuration.ServerSelection) (
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}
var port uint16 = 1912
if selection.CustomPort > 0 {
port = selection.CustomPort
if selection.OpenVPN.CustomPort > 0 {
port = selection.OpenVPN.CustomPort
}
servers, err := t.filterServers(selection)

View File

@@ -14,8 +14,8 @@ func (t *Torguard) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -20,7 +20,7 @@ func NoServerFoundError(selection configuration.ServerSelection) (err error) {
var messageParts []string
protocol := constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
}
messageParts = append(messageParts, "protocol "+protocol)
@@ -113,8 +113,8 @@ func NoServerFoundError(selection configuration.ServerSelection) (err error) {
messageParts = append(messageParts, part)
}
if selection.EncryptionPreset != "" {
part := "encryption preset " + selection.EncryptionPreset
if selection.OpenVPN.EncPreset != "" {
part := "encryption preset " + selection.OpenVPN.EncPreset
messageParts = append(messageParts, part)
}

View File

@@ -15,7 +15,7 @@ func (p *Provider) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
const port = 1194
const protocol = constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
return connection, ErrProtocolUnsupported
}

View File

@@ -16,8 +16,8 @@ func (p *Provider) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.FreeOnly && !server.Free,
selection.StreamOnly && !server.Stream,
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -16,7 +16,7 @@ func (v *Vyprvpn) GetOpenVPNConnection(selection configuration.ServerSelection)
connection models.OpenVPNConnection, err error) {
const port = 443
const protocol = constants.UDP
if selection.TCP {
if selection.OpenVPN.TCP {
return connection, fmt.Errorf("%w: TCP for provider VyprVPN", ErrProtocolUnsupported)
}

View File

@@ -13,8 +13,8 @@ func (v *Vyprvpn) filterServers(selection configuration.ServerSelection) (
case
utils.FilterByPossibilities(server.Region, selection.Regions),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.TCP && !server.TCP,
!selection.TCP && !server.UDP:
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
default:
servers = append(servers, server)
}

View File

@@ -11,13 +11,13 @@ func (w *Windscribe) GetOpenVPNConnection(selection configuration.ServerSelectio
connection models.OpenVPNConnection, err error) {
protocol := constants.UDP
var port uint16 = 443
if selection.TCP {
if selection.OpenVPN.TCP {
protocol = constants.TCP
port = 1194
}
if selection.CustomPort > 0 {
port = selection.CustomPort
if selection.OpenVPN.CustomPort > 0 {
port = selection.OpenVPN.CustomPort
}
servers, err := w.filterServers(selection)