Maint: utils.FilterByProtocol function

This commit is contained in:
Quentin McGaw (desktop)
2021-08-23 20:16:29 +00:00
parent f1a82d9d9c
commit f1a6594474
13 changed files with 101 additions and 22 deletions

View File

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

View File

@@ -14,8 +14,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

@@ -14,8 +14,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

@@ -16,8 +16,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

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

View File

@@ -14,8 +14,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

@@ -15,8 +15,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

@@ -15,8 +15,7 @@ func (s *Surfshark) filterServers(selection configuration.ServerSelection) (
utils.FilterByPossibilities(server.Country, selection.Countries),
utils.FilterByPossibilities(server.City, selection.Cities),
utils.FilterByPossibilities(server.Hostname, selection.Hostnames),
selection.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP,
utils.FilterByProtocol(selection, server.TCP, server.UDP),
selection.MultiHopOnly && !server.MultiHop:
default:
servers = append(servers, server)

View File

@@ -14,8 +14,7 @@ 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.OpenVPN.TCP && !server.TCP,
!selection.OpenVPN.TCP && !server.UDP:
utils.FilterByProtocol(selection, server.TCP, server.UDP):
default:
servers = append(servers, server)
}

View File

@@ -11,3 +11,15 @@ func GetProtocol(selection configuration.ServerSelection) (protocol string) {
}
return constants.UDP
}
func FilterByProtocol(selection configuration.ServerSelection,
serverTCP, serverUDP bool) (filtered bool) {
switch selection.VPN {
case constants.Wireguard:
return !serverUDP
default: // OpenVPN
wantTCP := selection.OpenVPN.TCP
wantUDP := !wantTCP
return (wantTCP && !serverTCP) || (wantUDP && !serverUDP)
}
}

View File

@@ -52,3 +52,81 @@ func Test_GetProtocol(t *testing.T) {
})
}
}
func Test_FilterByProtocol(t *testing.T) {
t.Parallel()
testCases := map[string]struct {
selection configuration.ServerSelection
serverTCP bool
serverUDP bool
filtered bool
}{
"Wireguard and server has UDP": {
selection: configuration.ServerSelection{
VPN: constants.Wireguard,
},
serverUDP: true,
filtered: false,
},
"Wireguard and server has not UDP": {
selection: configuration.ServerSelection{
VPN: constants.Wireguard,
},
serverUDP: false,
filtered: true,
},
"OpenVPN UDP and server has UDP": {
selection: configuration.ServerSelection{
VPN: constants.OpenVPN,
OpenVPN: configuration.OpenVPNSelection{
TCP: false,
},
},
serverUDP: true,
filtered: false,
},
"OpenVPN UDP and server has not UDP": {
selection: configuration.ServerSelection{
VPN: constants.OpenVPN,
OpenVPN: configuration.OpenVPNSelection{
TCP: false,
},
},
serverUDP: false,
filtered: true,
},
"OpenVPN TCP and server has TCP": {
selection: configuration.ServerSelection{
VPN: constants.OpenVPN,
OpenVPN: configuration.OpenVPNSelection{
TCP: true,
},
},
serverTCP: true,
filtered: false,
},
"OpenVPN TCP and server has not TCP": {
selection: configuration.ServerSelection{
VPN: constants.OpenVPN,
OpenVPN: configuration.OpenVPNSelection{
TCP: true,
},
},
serverTCP: false,
filtered: true,
},
}
for name, testCase := range testCases {
testCase := testCase
t.Run(name, func(t *testing.T) {
t.Parallel()
filtered := FilterByProtocol(testCase.selection,
testCase.serverTCP, testCase.serverUDP)
assert.Equal(t, testCase.filtered, filtered)
})
}
}

View File

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

View File

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