Maint: migrate Cyberghost REGION to COUNTRY
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/constants"
|
"github.com/qdm12/gluetun/internal/constants"
|
||||||
|
"github.com/qdm12/golibs/params"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (settings *Provider) readCyberghost(r reader) (err error) {
|
func (settings *Provider) readCyberghost(r reader) (err error) {
|
||||||
@@ -21,9 +22,11 @@ func (settings *Provider) readCyberghost(r reader) (err error) {
|
|||||||
return fmt.Errorf("environment variable CYBERGHOST_GROUP: %w", err)
|
return fmt.Errorf("environment variable CYBERGHOST_GROUP: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.ServerSelection.Regions, err = r.env.CSVInside("REGION", constants.CyberghostRegionChoices(servers))
|
settings.ServerSelection.Countries, err = r.env.CSVInside("COUNTRY",
|
||||||
|
constants.CyberghostCountryChoices(servers),
|
||||||
|
params.RetroKeys([]string{"REGION"}, r.onRetroActive))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("environment variable REGION: %w", err)
|
return fmt.Errorf("environment variable COUNTRY: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.ServerSelection.Hostnames, err = r.env.CSVInside("SERVER_HOSTNAME",
|
settings.ServerSelection.Hostnames, err = r.env.CSVInside("SERVER_HOSTNAME",
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ func Test_Provider_lines(t *testing.T) {
|
|||||||
ServerSelection: ServerSelection{
|
ServerSelection: ServerSelection{
|
||||||
VPN: constants.OpenVPN,
|
VPN: constants.OpenVPN,
|
||||||
Groups: []string{"group"},
|
Groups: []string{"group"},
|
||||||
Regions: []string{"a", "El country"},
|
Countries: []string{"a", "El country"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
lines: []string{
|
lines: []string{
|
||||||
"|--Cyberghost settings:",
|
"|--Cyberghost settings:",
|
||||||
" |--Server groups: group",
|
" |--Server groups: group",
|
||||||
" |--Regions: a, El country",
|
" |--Countries: a, El country",
|
||||||
" |--OpenVPN selection:",
|
" |--OpenVPN selection:",
|
||||||
" |--Protocol: udp",
|
" |--Protocol: udp",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ const (
|
|||||||
CyberghostCertificate = "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"
|
CyberghostCertificate = "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"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CyberghostRegionChoices(servers []models.CyberghostServer) (choices []string) {
|
func CyberghostCountryChoices(servers []models.CyberghostServer) (choices []string) {
|
||||||
choices = make([]string, len(servers))
|
choices = make([]string, len(servers))
|
||||||
for i := range servers {
|
for i := range servers {
|
||||||
choices[i] = servers[i].Region
|
choices[i] = servers[i].Country
|
||||||
}
|
}
|
||||||
return makeUnique(choices)
|
return makeUnique(choices)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ func markdownTableHeading(legendFields ...string) (markdown string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *CyberghostServers) ToMarkdown() (markdown string) {
|
func (s *CyberghostServers) ToMarkdown() (markdown string) {
|
||||||
markdown = markdownTableHeading("Region", "Group", "Hostname")
|
markdown = markdownTableHeading("Country", "Group", "Hostname")
|
||||||
for _, server := range s.Servers {
|
for _, server := range s.Servers {
|
||||||
markdown += server.ToMarkdown() + "\n"
|
markdown += server.ToMarkdown() + "\n"
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ func (s *CyberghostServers) ToMarkdown() (markdown string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s CyberghostServer) ToMarkdown() (markdown string) {
|
func (s CyberghostServer) ToMarkdown() (markdown string) {
|
||||||
return fmt.Sprintf("| %s | %s | `%s` |", s.Region, s.Group, s.Hostname)
|
return fmt.Sprintf("| %s | %s | `%s` |", s.Country, s.Group, s.Hostname)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *FastestvpnServers) ToMarkdown() (markdown string) {
|
func (s *FastestvpnServers) ToMarkdown() (markdown string) {
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ func Test_CyberghostServers_ToMarkdown(t *testing.T) {
|
|||||||
|
|
||||||
servers := CyberghostServers{
|
servers := CyberghostServers{
|
||||||
Servers: []CyberghostServer{
|
Servers: []CyberghostServer{
|
||||||
{Region: "a", Group: "A", Hostname: "xa"},
|
{Country: "a", Group: "A", Hostname: "xa"},
|
||||||
{Region: "b", Group: "A", Hostname: "xb"},
|
{Country: "b", Group: "A", Hostname: "xb"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
markdown := servers.ToMarkdown()
|
markdown := servers.ToMarkdown()
|
||||||
const expected = "| Region | Group | Hostname |\n" +
|
const expected = "| Country | Group | Hostname |\n" +
|
||||||
"| --- | --- | --- |\n" +
|
"| --- | --- | --- |\n" +
|
||||||
"| a | A | `xa` |\n" +
|
"| a | A | `xa` |\n" +
|
||||||
"| b | A | `xb` |\n"
|
"| b | A | `xb` |\n"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type CyberghostServer struct {
|
type CyberghostServer struct {
|
||||||
Region string `json:"region"`
|
Country string `json:"country"`
|
||||||
Group string `json:"group"`
|
Group string `json:"group"`
|
||||||
Hostname string `json:"hostname"`
|
Hostname string `json:"hostname"`
|
||||||
IPs []net.IP `json:"ips"`
|
IPs []net.IP `json:"ips"`
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func (c *Cyberghost) filterServers(selection configuration.ServerSelection) (
|
|||||||
switch {
|
switch {
|
||||||
case
|
case
|
||||||
utils.FilterByPossibilities(server.Group, selection.Groups),
|
utils.FilterByPossibilities(server.Group, selection.Groups),
|
||||||
utils.FilterByPossibilities(server.Region, selection.Regions),
|
utils.FilterByPossibilities(server.Country, selection.Countries),
|
||||||
utils.FilterByPossibilities(server.Hostname, selection.Hostnames):
|
utils.FilterByPossibilities(server.Hostname, selection.Hostnames):
|
||||||
default:
|
default:
|
||||||
servers = append(servers, server)
|
servers = append(servers, server)
|
||||||
|
|||||||
@@ -25,22 +25,22 @@ func Test_Cyberghost_filterServers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"servers without filter defaults to UDP": {
|
"servers without filter defaults to UDP": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium TCP Asia"},
|
{Country: "a", Group: "Premium TCP Asia"},
|
||||||
{Region: "b", Group: "Premium TCP Europe"},
|
{Country: "b", Group: "Premium TCP Europe"},
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
{Region: "d", Group: "Premium UDP Europe"},
|
{Country: "d", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
filteredServers: []models.CyberghostServer{
|
filteredServers: []models.CyberghostServer{
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
{Region: "d", Group: "Premium UDP Europe"},
|
{Country: "d", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"servers with TCP selection": {
|
"servers with TCP selection": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium TCP Asia"},
|
{Country: "a", Group: "Premium TCP Asia"},
|
||||||
{Region: "b", Group: "Premium TCP Europe"},
|
{Country: "b", Group: "Premium TCP Europe"},
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
{Region: "d", Group: "Premium UDP Europe"},
|
{Country: "d", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
selection: configuration.ServerSelection{
|
selection: configuration.ServerSelection{
|
||||||
OpenVPN: configuration.OpenVPNSelection{
|
OpenVPN: configuration.OpenVPNSelection{
|
||||||
@@ -48,46 +48,46 @@ func Test_Cyberghost_filterServers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
filteredServers: []models.CyberghostServer{
|
filteredServers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium TCP Asia"},
|
{Country: "a", Group: "Premium TCP Asia"},
|
||||||
{Region: "b", Group: "Premium TCP Europe"},
|
{Country: "b", Group: "Premium TCP Europe"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"servers with regions filter": {
|
"servers with regions filter": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Asia"},
|
{Country: "a", Group: "Premium UDP Asia"},
|
||||||
{Region: "b", Group: "Premium UDP Asia"},
|
{Country: "b", Group: "Premium UDP Asia"},
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
{Region: "d", Group: "Premium UDP Asia"},
|
{Country: "d", Group: "Premium UDP Asia"},
|
||||||
},
|
},
|
||||||
selection: configuration.ServerSelection{
|
selection: configuration.ServerSelection{
|
||||||
Regions: []string{"a", "c"},
|
Countries: []string{"a", "c"},
|
||||||
},
|
},
|
||||||
filteredServers: []models.CyberghostServer{
|
filteredServers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Asia"},
|
{Country: "a", Group: "Premium UDP Asia"},
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"servers with group filter": {
|
"servers with group filter": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Europe"},
|
{Country: "a", Group: "Premium UDP Europe"},
|
||||||
{Region: "b", Group: "Premium UDP Europe"},
|
{Country: "b", Group: "Premium UDP Europe"},
|
||||||
{Region: "c", Group: "Premium TCP Europe"},
|
{Country: "c", Group: "Premium TCP Europe"},
|
||||||
{Region: "d", Group: "Premium TCP Europe"},
|
{Country: "d", Group: "Premium TCP Europe"},
|
||||||
},
|
},
|
||||||
selection: configuration.ServerSelection{
|
selection: configuration.ServerSelection{
|
||||||
Groups: []string{"Premium UDP Europe"},
|
Groups: []string{"Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
filteredServers: []models.CyberghostServer{
|
filteredServers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Europe"},
|
{Country: "a", Group: "Premium UDP Europe"},
|
||||||
{Region: "b", Group: "Premium UDP Europe"},
|
{Country: "b", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"servers with bad group filter": {
|
"servers with bad group filter": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium TCP Europe"},
|
{Country: "a", Group: "Premium TCP Europe"},
|
||||||
{Region: "b", Group: "Premium TCP Europe"},
|
{Country: "b", Group: "Premium TCP Europe"},
|
||||||
{Region: "c", Group: "Premium UDP Europe"},
|
{Country: "c", Group: "Premium UDP Europe"},
|
||||||
{Region: "d", Group: "Premium UDP Europe"},
|
{Country: "d", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
selection: configuration.ServerSelection{
|
selection: configuration.ServerSelection{
|
||||||
Groups: []string{"Premium TCP Europe"},
|
Groups: []string{"Premium TCP Europe"},
|
||||||
@@ -96,17 +96,17 @@ func Test_Cyberghost_filterServers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"servers with regions and group filter": {
|
"servers with regions and group filter": {
|
||||||
servers: []models.CyberghostServer{
|
servers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Europe"},
|
{Country: "a", Group: "Premium UDP Europe"},
|
||||||
{Region: "b", Group: "Premium TCP Europe"},
|
{Country: "b", Group: "Premium TCP Europe"},
|
||||||
{Region: "c", Group: "Premium UDP Asia"},
|
{Country: "c", Group: "Premium UDP Asia"},
|
||||||
{Region: "d", Group: "Premium TCP Asia"},
|
{Country: "d", Group: "Premium TCP Asia"},
|
||||||
},
|
},
|
||||||
selection: configuration.ServerSelection{
|
selection: configuration.ServerSelection{
|
||||||
Regions: []string{"a", "c"},
|
Countries: []string{"a", "c"},
|
||||||
Groups: []string{"Premium UDP Europe"},
|
Groups: []string{"Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
filteredServers: []models.CyberghostServer{
|
filteredServers: []models.CyberghostServer{
|
||||||
{Region: "a", Group: "Premium UDP Europe"},
|
{Country: "a", Group: "Premium UDP Europe"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"servers with hostnames filter": {
|
"servers with hostnames filter": {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ func Test_versions(t *testing.T) {
|
|||||||
"Cyberghost": {
|
"Cyberghost": {
|
||||||
model: models.CyberghostServer{},
|
model: models.CyberghostServer{},
|
||||||
version: allServers.Cyberghost.Version,
|
version: allServers.Cyberghost.Version,
|
||||||
digest: "229828de",
|
digest: "c2f6f43b",
|
||||||
},
|
},
|
||||||
"Fastestvpn": {
|
"Fastestvpn": {
|
||||||
model: models.FastestvpnServer{},
|
model: models.FastestvpnServer{},
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -21,12 +21,12 @@ func getPossibleServers() (possibleServers hostToServer) {
|
|||||||
possibleServers = make(hostToServer, n) // key is the host
|
possibleServers = make(hostToServer, n) // key is the host
|
||||||
|
|
||||||
for groupID, groupName := range groups {
|
for groupID, groupName := range groups {
|
||||||
for countryCode, region := range possibleCountryCodes {
|
for countryCode, country := range possibleCountryCodes {
|
||||||
const domain = "cg-dialup.net"
|
const domain = "cg-dialup.net"
|
||||||
possibleHost := groupID + "-" + countryCode + "." + domain
|
possibleHost := groupID + "-" + countryCode + "." + domain
|
||||||
possibleServer := models.CyberghostServer{
|
possibleServer := models.CyberghostServer{
|
||||||
Hostname: possibleHost,
|
Hostname: possibleHost,
|
||||||
Region: region,
|
Country: country,
|
||||||
Group: groupName,
|
Group: groupName,
|
||||||
}
|
}
|
||||||
possibleServers[possibleHost] = possibleServer
|
possibleServers[possibleHost] = possibleServer
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ import (
|
|||||||
|
|
||||||
func sortServers(servers []models.CyberghostServer) {
|
func sortServers(servers []models.CyberghostServer) {
|
||||||
sort.Slice(servers, func(i, j int) bool {
|
sort.Slice(servers, func(i, j int) bool {
|
||||||
if servers[i].Region == servers[j].Region {
|
if servers[i].Country == servers[j].Country {
|
||||||
if servers[i].Group == servers[j].Group {
|
if servers[i].Group == servers[j].Group {
|
||||||
return servers[i].Hostname < servers[j].Hostname
|
return servers[i].Hostname < servers[j].Hostname
|
||||||
}
|
}
|
||||||
return servers[i].Group < servers[j].Group
|
return servers[i].Group < servers[j].Group
|
||||||
}
|
}
|
||||||
return servers[i].Region < servers[j].Region
|
return servers[i].Country < servers[j].Country
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
- `PIA_ENCRYPTION`
|
- `PIA_ENCRYPTION`
|
||||||
- `PORT_FORWARDING`
|
- `PORT_FORWARDING`
|
||||||
- `WIREGUARD_PORT`
|
- `WIREGUARD_PORT`
|
||||||
- `REGION` for PIA
|
- `REGION` for PIA, Cyberghost
|
||||||
- `WIREGUARD_ADDRESS`
|
- `WIREGUARD_ADDRESS`
|
||||||
- `VPNSP`
|
- `VPNSP`
|
||||||
- All old location filters such as `REGION`, `COUNTRY`, etc.
|
- All old location filters such as `REGION`, `COUNTRY`, etc.
|
||||||
|
|||||||
Reference in New Issue
Block a user