Refactor (#174)
- Goal was to simplify main.go complexity - Use common structures and interfaces for all vpn providers - Moved files around - Removed some alias models
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
*Lightweight swiss-knife-like VPN client to tunnel to Private Internet Access, Mullvad, Windscribe, Surfshark and Cyberghost VPN servers, using Go, OpenVPN, iptables, DNS over TLS, ShadowSocks and Tinyproxy*
|
||||
|
||||
**ANNOUNCEMENT**: *New wiki available [here](https://github.com/qdm12/private-internet-access-docker/wiki)*
|
||||
**ANNOUNCEMENT**: *Rather big code refactoring so things may break but I'll fix anything super quickly*
|
||||
|
||||
<img height="250" src="https://raw.githubusercontent.com/qdm12/private-internet-access-docker/master/title.svg?sanitize=true">
|
||||
|
||||
|
||||
@@ -18,23 +18,19 @@ import (
|
||||
"github.com/qdm12/private-internet-access-docker/internal/alpine"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/cli"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/cyberghost"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/dns"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/firewall"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/mullvad"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/openvpn"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/pia"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/provider"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/publicip"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/routing"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/server"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/settings"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/shadowsocks"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/splash"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/surfshark"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/tinyproxy"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/windscribe"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -77,11 +73,6 @@ func _main(background context.Context, args []string) int {
|
||||
dnsConf := dns.NewConfigurator(logger, client, fileManager)
|
||||
firewallConf := firewall.NewConfigurator(logger)
|
||||
routingConf := routing.NewRouting(logger, fileManager)
|
||||
piaConf := pia.NewConfigurator(client, fileManager, firewallConf)
|
||||
mullvadConf := mullvad.NewConfigurator(fileManager, logger)
|
||||
windscribeConf := windscribe.NewConfigurator(fileManager)
|
||||
surfsharkConf := surfshark.NewConfigurator(fileManager)
|
||||
cyberghostConf := cyberghost.NewConfigurator(fileManager)
|
||||
tinyProxyConf := tinyproxy.NewConfigurator(fileManager, logger)
|
||||
shadowsocksConf := shadowsocks.NewConfigurator(fileManager, logger)
|
||||
streamMerger := command.NewStreamMerger()
|
||||
@@ -98,6 +89,8 @@ func _main(background context.Context, args []string) int {
|
||||
fatalOnError(err)
|
||||
logger.Info(allSettings.String())
|
||||
|
||||
providerConf := provider.New(allSettings.VPNSP, logger, client, fileManager, firewallConf)
|
||||
|
||||
if !allSettings.Firewall.Enabled {
|
||||
firewallConf.Disable()
|
||||
}
|
||||
@@ -115,25 +108,11 @@ func _main(background context.Context, args []string) int {
|
||||
fatalOnError(err)
|
||||
}
|
||||
|
||||
var openVPNUser, openVPNPassword string
|
||||
switch allSettings.VPNSP {
|
||||
case constants.PrivateInternetAccess:
|
||||
openVPNUser = allSettings.PIA.User
|
||||
openVPNPassword = allSettings.PIA.Password
|
||||
case constants.Mullvad:
|
||||
openVPNUser = allSettings.Mullvad.User
|
||||
openVPNPassword = "m"
|
||||
case constants.Windscribe:
|
||||
openVPNUser = allSettings.Windscribe.User
|
||||
openVPNPassword = allSettings.Windscribe.Password
|
||||
case constants.Surfshark:
|
||||
openVPNUser = allSettings.Surfshark.User
|
||||
openVPNPassword = allSettings.Surfshark.Password
|
||||
case constants.Cyberghost:
|
||||
openVPNUser = allSettings.Cyberghost.User
|
||||
openVPNPassword = allSettings.Cyberghost.Password
|
||||
}
|
||||
err = ovpnConf.WriteAuthFile(openVPNUser, openVPNPassword, allSettings.System.UID, allSettings.System.GID)
|
||||
err = ovpnConf.WriteAuthFile(
|
||||
allSettings.OpenVPN.User,
|
||||
allSettings.OpenVPN.Password,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID)
|
||||
fatalOnError(err)
|
||||
|
||||
defaultInterface, defaultGateway, defaultSubnet, err := routingConf.DefaultRoute()
|
||||
@@ -156,96 +135,18 @@ func _main(background context.Context, args []string) int {
|
||||
|
||||
waiter := command.NewWaiter()
|
||||
|
||||
var connections []models.OpenVPNConnection
|
||||
switch allSettings.VPNSP {
|
||||
case constants.PrivateInternetAccess:
|
||||
connections, err = piaConf.GetOpenVPNConnections(
|
||||
allSettings.PIA.Region,
|
||||
allSettings.OpenVPN.NetworkProtocol,
|
||||
allSettings.PIA.Encryption,
|
||||
allSettings.OpenVPN.TargetIP)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
err = piaConf.BuildConf(
|
||||
connections,
|
||||
allSettings.PIA.Encryption,
|
||||
allSettings.OpenVPN.Verbosity,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID,
|
||||
allSettings.OpenVPN.Root,
|
||||
allSettings.OpenVPN.Cipher,
|
||||
allSettings.OpenVPN.Auth)
|
||||
case constants.Mullvad:
|
||||
connections, err = mullvadConf.GetOpenVPNConnections(
|
||||
allSettings.Mullvad.Country,
|
||||
allSettings.Mullvad.City,
|
||||
allSettings.Mullvad.ISP,
|
||||
allSettings.OpenVPN.NetworkProtocol,
|
||||
allSettings.Mullvad.Port,
|
||||
allSettings.OpenVPN.TargetIP)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
err = mullvadConf.BuildConf(
|
||||
connections,
|
||||
allSettings.OpenVPN.Verbosity,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID,
|
||||
allSettings.OpenVPN.Root,
|
||||
allSettings.OpenVPN.Cipher)
|
||||
case constants.Windscribe:
|
||||
connections, err = windscribeConf.GetOpenVPNConnections(
|
||||
allSettings.Windscribe.Region,
|
||||
allSettings.OpenVPN.NetworkProtocol,
|
||||
allSettings.Windscribe.Port,
|
||||
allSettings.OpenVPN.TargetIP)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
err = windscribeConf.BuildConf(
|
||||
connections, err := providerConf.GetOpenVPNConnections(allSettings.Provider.ServerSelection)
|
||||
fatalOnError(err)
|
||||
err = providerConf.BuildConf(
|
||||
connections,
|
||||
allSettings.OpenVPN.Verbosity,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID,
|
||||
allSettings.OpenVPN.Root,
|
||||
allSettings.OpenVPN.Cipher,
|
||||
allSettings.OpenVPN.Auth)
|
||||
case constants.Surfshark:
|
||||
connections, err = surfsharkConf.GetOpenVPNConnections(
|
||||
allSettings.Surfshark.Region,
|
||||
allSettings.OpenVPN.NetworkProtocol,
|
||||
allSettings.OpenVPN.TargetIP)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
err = surfsharkConf.BuildConf(
|
||||
connections,
|
||||
allSettings.OpenVPN.Verbosity,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID,
|
||||
allSettings.OpenVPN.Root,
|
||||
allSettings.OpenVPN.Cipher,
|
||||
allSettings.OpenVPN.Auth)
|
||||
case constants.Cyberghost:
|
||||
connections, err = cyberghostConf.GetOpenVPNConnections(
|
||||
allSettings.Cyberghost.Group,
|
||||
allSettings.Cyberghost.Region,
|
||||
allSettings.OpenVPN.NetworkProtocol,
|
||||
allSettings.OpenVPN.TargetIP)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
err = cyberghostConf.BuildConf(
|
||||
connections,
|
||||
allSettings.Cyberghost.ClientKey,
|
||||
allSettings.OpenVPN.Verbosity,
|
||||
allSettings.System.UID,
|
||||
allSettings.System.GID,
|
||||
allSettings.OpenVPN.Root,
|
||||
allSettings.OpenVPN.Cipher,
|
||||
allSettings.OpenVPN.Auth)
|
||||
}
|
||||
allSettings.OpenVPN.Auth,
|
||||
allSettings.Provider.ExtraConfigOptions,
|
||||
)
|
||||
fatalOnError(err)
|
||||
|
||||
err = routingConf.AddRoutesVia(ctx, allSettings.Firewall.AllowedSubnets, defaultGateway, defaultInterface)
|
||||
@@ -328,7 +229,7 @@ func _main(background context.Context, args []string) int {
|
||||
return
|
||||
case <-connectedCh: // blocks until openvpn is connected
|
||||
onConnected(ctx, allSettings, logger, dnsConf, fileManager, waiter,
|
||||
streamMerger, httpServer, routingConf, defaultInterface, piaConf, firstRun)
|
||||
streamMerger, httpServer, routingConf, defaultInterface, providerConf, firstRun)
|
||||
firstRun = false
|
||||
}
|
||||
}
|
||||
@@ -354,9 +255,9 @@ func _main(background context.Context, args []string) int {
|
||||
logger.Error(err)
|
||||
exitStatus = 1
|
||||
}
|
||||
if allSettings.PIA.PortForwarding.Enabled {
|
||||
logger.Info("Clearing forwarded port status file %s", allSettings.PIA.PortForwarding.Filepath)
|
||||
if err := fileManager.Remove(string(allSettings.PIA.PortForwarding.Filepath)); err != nil {
|
||||
if allSettings.Provider.PortForwarding.Enabled {
|
||||
logger.Info("Clearing forwarded port status file %s", allSettings.Provider.PortForwarding.Filepath)
|
||||
if err := fileManager.Remove(string(allSettings.Provider.PortForwarding.Filepath)); err != nil {
|
||||
logger.Error(err)
|
||||
exitStatus = 1
|
||||
}
|
||||
@@ -469,11 +370,11 @@ func onConnected(ctx context.Context, allSettings settings.Settings,
|
||||
logger logging.Logger, dnsConf dns.Configurator, fileManager files.FileManager,
|
||||
waiter command.Waiter, streamMerger command.StreamMerger, httpServer server.Server,
|
||||
routingConf routing.Routing, defaultInterface string,
|
||||
piaConf pia.Configurator, firstRun bool,
|
||||
providerConf provider.Provider, firstRun bool,
|
||||
) {
|
||||
if allSettings.PIA.PortForwarding.Enabled {
|
||||
if allSettings.Provider.PortForwarding.Enabled {
|
||||
time.AfterFunc(5*time.Second, func() {
|
||||
setupPortForwarding(logger, piaConf, allSettings.PIA, allSettings.System.UID, allSettings.System.GID)
|
||||
setupPortForwarding(logger, providerConf, allSettings.Provider.PortForwarding.Filepath, allSettings.System.UID, allSettings.System.GID)
|
||||
})
|
||||
}
|
||||
if allSettings.DNS.Enabled && firstRun {
|
||||
@@ -616,12 +517,12 @@ func unboundRunLoop(ctx context.Context, logger logging.Logger, dnsConf dns.Conf
|
||||
}
|
||||
}
|
||||
|
||||
func setupPortForwarding(logger logging.Logger, piaConf pia.Configurator, settings settings.PIA, uid, gid int) {
|
||||
func setupPortForwarding(logger logging.Logger, providerConf provider.Provider, filepath models.Filepath, uid, gid int) {
|
||||
pfLogger := logger.WithPrefix("port forwarding: ")
|
||||
var port uint16
|
||||
var err error
|
||||
for {
|
||||
port, err = piaConf.GetPortForward()
|
||||
port, err = providerConf.GetPortForward()
|
||||
if err != nil {
|
||||
pfLogger.Error(err)
|
||||
pfLogger.Info("retrying in 5 seconds...")
|
||||
@@ -631,13 +532,13 @@ func setupPortForwarding(logger logging.Logger, piaConf pia.Configurator, settin
|
||||
break
|
||||
}
|
||||
}
|
||||
pfLogger.Info("writing forwarded port to %s", settings.PortForwarding.Filepath)
|
||||
if err := piaConf.WritePortForward(settings.PortForwarding.Filepath, port, uid, gid); err != nil {
|
||||
pfLogger.Info("writing forwarded port to %s", filepath)
|
||||
if err := providerConf.WritePortForward(filepath, port, uid, gid); err != nil {
|
||||
pfLogger.Error(err)
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
defer cancel()
|
||||
if err := piaConf.AllowPortForwardFirewall(ctx, constants.TUN, port); err != nil {
|
||||
if err := providerConf.AllowPortForwardFirewall(ctx, constants.TUN, port); err != nil {
|
||||
pfLogger.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
6
go.mod
6
go.mod
@@ -5,8 +5,8 @@ go 1.14
|
||||
require (
|
||||
github.com/fatih/color v1.9.0
|
||||
github.com/golang/mock v1.4.3
|
||||
github.com/kyokomi/emoji v2.2.2+incompatible
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible
|
||||
github.com/qdm12/golibs v0.0.0-20200528010515-765b7cd4f0db
|
||||
github.com/stretchr/testify v1.5.1
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121
|
||||
github.com/stretchr/testify v1.6.1
|
||||
golang.org/x/sys v0.0.0-20200610111108-226ff32320da
|
||||
)
|
||||
|
||||
8
go.sum
8
go.sum
@@ -52,6 +52,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kyokomi/emoji v2.2.2+incompatible h1:gaQFbK2+uSxOR4iGZprJAbpmtqTrHhSdgOyIMD6Oidc=
|
||||
github.com/kyokomi/emoji v2.2.2+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA=
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible h1:np0woGKwx9LiHAQmwZx79Oc0rHpNw3o+3evou4BEPv4=
|
||||
github.com/kyokomi/emoji v2.2.4+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA=
|
||||
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 h1:2gxZ0XQIU/5z3Z3bUBu+FXuk2pFbkN6tcwi/pjyaDic=
|
||||
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
|
||||
@@ -81,6 +83,8 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY=
|
||||
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc=
|
||||
@@ -108,6 +112,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o=
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200610111108-226ff32320da h1:bGb80FudwxpeucJUjPYJXuJ8Hk91vNtfvrymzwiei38=
|
||||
golang.org/x/sys v0.0.0-20200610111108-226ff32320da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -126,6 +132,8 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
|
||||
@@ -15,7 +15,7 @@ const (
|
||||
func CyberghostRegionChoices() (choices []string) {
|
||||
uniqueChoices := map[string]struct{}{}
|
||||
for _, server := range CyberghostServers() {
|
||||
uniqueChoices[string(server.Region)] = struct{}{}
|
||||
uniqueChoices[server.Region] = struct{}{}
|
||||
}
|
||||
for choice := range uniqueChoices {
|
||||
choices = append(choices, choice)
|
||||
@@ -29,7 +29,7 @@ func CyberghostRegionChoices() (choices []string) {
|
||||
func CyberghostGroupChoices() (choices []string) {
|
||||
uniqueChoices := map[string]struct{}{}
|
||||
for _, server := range CyberghostServers() {
|
||||
uniqueChoices[string(server.Group)] = struct{}{}
|
||||
uniqueChoices[server.Group] = struct{}{}
|
||||
}
|
||||
for choice := range uniqueChoices {
|
||||
choices = append(choices, choice)
|
||||
@@ -42,189 +42,189 @@ func CyberghostGroupChoices() (choices []string) {
|
||||
|
||||
func CyberghostServers() []models.CyberghostServer {
|
||||
return []models.CyberghostServer{
|
||||
{Region: models.CyberghostRegion("Albania"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{31, 171, 152, 99}, {31, 171, 152, 100}, {31, 171, 152, 102}, {31, 171, 152, 105}, {31, 171, 152, 107}, {31, 171, 152, 109}, {31, 171, 152, 133}, {31, 171, 152, 135}, {31, 171, 152, 136}, {31, 171, 152, 139}}},
|
||||
{Region: models.CyberghostRegion("Albania"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{31, 171, 152, 99}, {31, 171, 152, 101}, {31, 171, 152, 103}, {31, 171, 152, 105}, {31, 171, 152, 106}, {31, 171, 152, 133}, {31, 171, 152, 135}, {31, 171, 152, 137}, {31, 171, 152, 138}, {31, 171, 152, 139}}},
|
||||
{Region: models.CyberghostRegion("Algeria"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 133, 91, 7}, {45, 133, 91, 9}, {45, 133, 91, 12}, {45, 133, 91, 15}, {45, 133, 91, 17}, {45, 133, 91, 18}, {45, 133, 91, 20}, {45, 133, 91, 23}, {45, 133, 91, 24}, {45, 133, 91, 26}}},
|
||||
{Region: models.CyberghostRegion("Algeria"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 133, 91, 7}, {45, 133, 91, 10}, {45, 133, 91, 11}, {45, 133, 91, 15}, {45, 133, 91, 17}, {45, 133, 91, 18}, {45, 133, 91, 21}, {45, 133, 91, 25}, {45, 133, 91, 26}, {45, 133, 91, 29}}},
|
||||
{Region: models.CyberghostRegion("Andorra"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 139, 49, 10}, {45, 139, 49, 14}, {45, 139, 49, 15}, {45, 139, 49, 16}, {45, 139, 49, 17}, {45, 139, 49, 18}, {45, 139, 49, 19}, {45, 139, 49, 23}, {45, 139, 49, 25}, {45, 139, 49, 28}}},
|
||||
{Region: models.CyberghostRegion("Andorra"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 139, 49, 7}, {45, 139, 49, 9}, {45, 139, 49, 10}, {45, 139, 49, 12}, {45, 139, 49, 15}, {45, 139, 49, 16}, {45, 139, 49, 17}, {45, 139, 49, 25}, {45, 139, 49, 27}, {45, 139, 49, 28}}},
|
||||
{Region: models.CyberghostRegion("Argentina"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{190, 106, 130, 16}, {190, 106, 130, 17}, {190, 106, 130, 20}, {190, 106, 130, 22}, {190, 106, 130, 23}, {190, 106, 130, 34}, {190, 106, 130, 37}, {190, 106, 130, 38}, {190, 106, 130, 44}, {190, 106, 130, 45}}},
|
||||
{Region: models.CyberghostRegion("Argentina"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{190, 106, 130, 15}, {190, 106, 130, 16}, {190, 106, 130, 18}, {190, 106, 130, 19}, {190, 106, 130, 20}, {190, 106, 130, 34}, {190, 106, 130, 36}, {190, 106, 130, 37}, {190, 106, 130, 43}, {190, 106, 130, 52}}},
|
||||
{Region: models.CyberghostRegion("Armenia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 139, 50, 10}, {45, 139, 50, 12}, {45, 139, 50, 14}, {45, 139, 50, 18}, {45, 139, 50, 19}, {45, 139, 50, 20}, {45, 139, 50, 21}, {45, 139, 50, 26}, {45, 139, 50, 27}, {45, 139, 50, 29}}},
|
||||
{Region: models.CyberghostRegion("Armenia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 139, 50, 8}, {45, 139, 50, 10}, {45, 139, 50, 11}, {45, 139, 50, 14}, {45, 139, 50, 18}, {45, 139, 50, 20}, {45, 139, 50, 24}, {45, 139, 50, 26}, {45, 139, 50, 27}, {45, 139, 50, 29}}},
|
||||
{Region: models.CyberghostRegion("Australia"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{27, 50, 79, 3}, {27, 50, 79, 4}, {27, 50, 79, 5}, {27, 50, 79, 6}, {27, 50, 79, 9}, {27, 50, 79, 12}, {27, 50, 79, 14}, {103, 13, 101, 171}, {202, 130, 33, 114}, {202, 130, 33, 118}}},
|
||||
{Region: models.CyberghostRegion("Australia"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{27, 50, 79, 3}, {27, 50, 79, 6}, {27, 50, 79, 9}, {27, 50, 79, 10}, {27, 50, 79, 11}, {27, 50, 79, 13}, {103, 13, 101, 174}, {202, 130, 33, 114}, {202, 130, 33, 117}, {202, 130, 33, 118}}},
|
||||
{Region: models.CyberghostRegion("Austria"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{89, 187, 168, 133}, {89, 187, 168, 144}, {89, 187, 168, 150}, {89, 187, 168, 151}, {89, 187, 168, 162}, {89, 187, 168, 163}, {89, 187, 168, 164}, {89, 187, 168, 167}, {89, 187, 168, 178}, {89, 187, 168, 182}}},
|
||||
{Region: models.CyberghostRegion("Austria"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{89, 187, 168, 138}, {89, 187, 168, 139}, {89, 187, 168, 149}, {89, 187, 168, 150}, {89, 187, 168, 161}, {89, 187, 168, 165}, {89, 187, 168, 167}, {89, 187, 168, 168}, {89, 187, 168, 174}, {89, 187, 168, 182}}},
|
||||
{Region: models.CyberghostRegion("Bahamas"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{45, 132, 143, 8}, {45, 132, 143, 10}, {45, 132, 143, 11}, {45, 132, 143, 19}, {45, 132, 143, 24}, {45, 132, 143, 28}, {45, 132, 143, 31}, {45, 132, 143, 42}, {45, 132, 143, 43}, {45, 132, 143, 44}}},
|
||||
{Region: models.CyberghostRegion("Bahamas"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{45, 132, 143, 1}, {45, 132, 143, 2}, {45, 132, 143, 3}, {45, 132, 143, 5}, {45, 132, 143, 7}, {45, 132, 143, 18}, {45, 132, 143, 23}, {45, 132, 143, 30}, {45, 132, 143, 32}, {45, 132, 143, 48}}},
|
||||
{Region: models.CyberghostRegion("Bangladesh"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 132, 142, 3}, {45, 132, 142, 8}, {45, 132, 142, 12}, {45, 132, 142, 20}, {45, 132, 142, 22}, {45, 132, 142, 26}, {45, 132, 142, 27}, {45, 132, 142, 37}, {45, 132, 142, 39}, {45, 132, 142, 42}}},
|
||||
{Region: models.CyberghostRegion("Bangladesh"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 132, 142, 6}, {45, 132, 142, 8}, {45, 132, 142, 13}, {45, 132, 142, 18}, {45, 132, 142, 33}, {45, 132, 142, 35}, {45, 132, 142, 38}, {45, 132, 142, 41}, {45, 132, 142, 42}, {45, 132, 142, 45}}},
|
||||
{Region: models.CyberghostRegion("Belarus"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 194, 3}, {45, 132, 194, 4}, {45, 132, 194, 26}, {45, 132, 194, 28}, {45, 132, 194, 34}, {45, 132, 194, 38}, {45, 132, 194, 39}, {45, 132, 194, 42}, {45, 132, 194, 44}, {45, 132, 194, 48}}},
|
||||
{Region: models.CyberghostRegion("Belarus"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 194, 4}, {45, 132, 194, 5}, {45, 132, 194, 9}, {45, 132, 194, 10}, {45, 132, 194, 20}, {45, 132, 194, 25}, {45, 132, 194, 29}, {45, 132, 194, 31}, {45, 132, 194, 40}, {45, 132, 194, 45}}},
|
||||
{Region: models.CyberghostRegion("Belgium"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 143, 52}, {37, 120, 143, 55}, {37, 120, 143, 58}, {185, 210, 217, 10}, {185, 210, 217, 54}, {185, 210, 217, 244}, {185, 210, 217, 251}, {185, 232, 21, 119}, {193, 9, 114, 228}, {193, 9, 114, 230}}},
|
||||
{Region: models.CyberghostRegion("Belgium"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{5, 253, 205, 22}, {5, 253, 205, 23}, {37, 120, 143, 165}, {185, 210, 217, 14}, {185, 210, 217, 248}, {185, 210, 217, 254}, {193, 9, 114, 212}, {193, 9, 114, 213}, {193, 9, 114, 219}, {193, 9, 114, 228}}},
|
||||
{Region: models.CyberghostRegion("Bosnia and Herzegovina"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{185, 99, 3, 57}, {185, 99, 3, 58}, {185, 99, 3, 72}, {185, 99, 3, 73}, {185, 99, 3, 74}, {185, 99, 3, 130}, {185, 99, 3, 131}, {185, 99, 3, 134}, {185, 99, 3, 135}, {185, 99, 3, 136}}},
|
||||
{Region: models.CyberghostRegion("Bosnia and Herzegovina"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{185, 99, 3, 57}, {185, 99, 3, 58}, {185, 99, 3, 72}, {185, 99, 3, 73}, {185, 99, 3, 74}, {185, 99, 3, 130}, {185, 99, 3, 131}, {185, 99, 3, 134}, {185, 99, 3, 135}, {185, 99, 3, 136}}},
|
||||
{Region: models.CyberghostRegion("Brazil"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{45, 231, 207, 65}, {45, 231, 207, 67}, {45, 231, 207, 68}, {45, 231, 207, 69}, {45, 231, 207, 75}, {177, 67, 81, 170}, {181, 41, 203, 98}, {181, 41, 203, 100}, {181, 41, 203, 102}, {181, 41, 203, 110}}},
|
||||
{Region: models.CyberghostRegion("Brazil"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{45, 231, 207, 77}, {177, 67, 81, 163}, {177, 67, 81, 164}, {177, 67, 81, 165}, {177, 67, 81, 167}, {177, 67, 81, 170}, {177, 67, 81, 173}, {177, 67, 81, 174}, {181, 41, 203, 103}, {181, 41, 203, 104}}},
|
||||
{Region: models.CyberghostRegion("Bulgaria"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 152, 99}, {37, 120, 152, 102}, {37, 120, 152, 103}, {37, 120, 152, 104}, {37, 120, 152, 105}, {37, 120, 152, 106}, {37, 120, 152, 107}, {37, 120, 152, 108}, {37, 120, 152, 109}, {37, 120, 152, 110}}},
|
||||
{Region: models.CyberghostRegion("Bulgaria"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 152, 99}, {37, 120, 152, 100}, {37, 120, 152, 101}, {37, 120, 152, 103}, {37, 120, 152, 104}, {37, 120, 152, 105}, {37, 120, 152, 107}, {37, 120, 152, 108}, {37, 120, 152, 109}, {37, 120, 152, 110}}},
|
||||
{Region: models.CyberghostRegion("Cambodia"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{188, 215, 235, 36}, {188, 215, 235, 38}, {188, 215, 235, 39}, {188, 215, 235, 40}, {188, 215, 235, 43}, {188, 215, 235, 46}, {188, 215, 235, 47}, {188, 215, 235, 48}, {188, 215, 235, 51}, {188, 215, 235, 54}}},
|
||||
{Region: models.CyberghostRegion("Cambodia"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{188, 215, 235, 35}, {188, 215, 235, 36}, {188, 215, 235, 37}, {188, 215, 235, 38}, {188, 215, 235, 45}, {188, 215, 235, 46}, {188, 215, 235, 52}, {188, 215, 235, 53}, {188, 215, 235, 55}, {188, 215, 235, 58}}},
|
||||
{Region: models.CyberghostRegion("Canada"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{37, 120, 205, 8}, {37, 120, 205, 28}, {104, 245, 145, 163}, {104, 245, 146, 38}, {104, 245, 146, 101}, {176, 113, 74, 44}, {176, 113, 74, 52}, {176, 113, 74, 67}, {176, 113, 74, 126}, {176, 113, 74, 217}}},
|
||||
{Region: models.CyberghostRegion("Canada"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{37, 120, 205, 40}, {54, 39, 11, 194}, {104, 245, 145, 164}, {104, 245, 146, 41}, {139, 28, 218, 86}, {139, 28, 218, 87}, {176, 113, 74, 19}, {176, 113, 74, 25}, {176, 113, 74, 30}, {176, 113, 74, 195}}},
|
||||
{Region: models.CyberghostRegion("Chile"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{190, 105, 239, 129}, {190, 105, 239, 130}, {190, 105, 239, 131}, {190, 105, 239, 132}, {190, 105, 239, 133}, {190, 105, 239, 134}, {190, 105, 239, 135}, {190, 105, 239, 136}, {190, 105, 239, 137}, {190, 105, 239, 138}}},
|
||||
{Region: models.CyberghostRegion("Chile"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{190, 105, 239, 129}, {190, 105, 239, 130}, {190, 105, 239, 131}, {190, 105, 239, 132}, {190, 105, 239, 133}, {190, 105, 239, 134}, {190, 105, 239, 135}, {190, 105, 239, 136}, {190, 105, 239, 137}, {190, 105, 239, 138}}},
|
||||
{Region: models.CyberghostRegion("China"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 132, 193, 2}, {45, 132, 193, 3}, {45, 132, 193, 9}, {45, 132, 193, 10}, {45, 132, 193, 12}, {45, 132, 193, 13}, {45, 132, 193, 32}, {45, 132, 193, 36}, {45, 132, 193, 43}, {45, 132, 193, 45}}},
|
||||
{Region: models.CyberghostRegion("China"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 132, 193, 2}, {45, 132, 193, 3}, {45, 132, 193, 4}, {45, 132, 193, 14}, {45, 132, 193, 19}, {45, 132, 193, 22}, {45, 132, 193, 30}, {45, 132, 193, 35}, {45, 132, 193, 36}, {45, 132, 193, 42}}},
|
||||
{Region: models.CyberghostRegion("Colombia"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{190, 105, 229, 19}, {190, 105, 229, 20}, {190, 105, 229, 21}, {190, 105, 229, 22}}},
|
||||
{Region: models.CyberghostRegion("Colombia"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{190, 105, 229, 19}, {190, 105, 229, 20}, {190, 105, 229, 21}, {190, 105, 229, 22}}},
|
||||
{Region: models.CyberghostRegion("Costa Rica"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{143, 202, 160, 67}, {143, 202, 160, 69}, {143, 202, 160, 70}, {143, 202, 160, 72}, {143, 202, 160, 73}, {143, 202, 160, 74}, {143, 202, 160, 75}, {143, 202, 160, 76}, {143, 202, 160, 77}, {143, 202, 160, 78}}},
|
||||
{Region: models.CyberghostRegion("Costa Rica"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{143, 202, 160, 67}, {143, 202, 160, 68}, {143, 202, 160, 69}, {143, 202, 160, 70}, {143, 202, 160, 71}, {143, 202, 160, 73}, {143, 202, 160, 74}, {143, 202, 160, 75}, {143, 202, 160, 76}, {143, 202, 160, 78}}},
|
||||
{Region: models.CyberghostRegion("Cyprus"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 137, 8}, {45, 132, 137, 11}, {45, 132, 137, 12}, {45, 132, 137, 15}, {45, 132, 137, 17}, {45, 132, 137, 18}, {45, 132, 137, 19}, {45, 132, 137, 23}, {45, 132, 137, 26}, {45, 132, 137, 28}}},
|
||||
{Region: models.CyberghostRegion("Cyprus"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 137, 8}, {45, 132, 137, 10}, {45, 132, 137, 16}, {45, 132, 137, 19}, {45, 132, 137, 20}, {45, 132, 137, 21}, {45, 132, 137, 22}, {45, 132, 137, 23}, {45, 132, 137, 25}, {45, 132, 137, 28}}},
|
||||
{Region: models.CyberghostRegion("Czech Republic"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{195, 181, 160, 66}, {195, 181, 160, 72}, {195, 181, 161, 7}, {195, 181, 161, 9}, {195, 181, 161, 10}, {195, 181, 161, 11}, {195, 181, 161, 14}, {195, 181, 161, 17}, {195, 181, 161, 23}, {195, 181, 161, 25}}},
|
||||
{Region: models.CyberghostRegion("Czech Republic"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{185, 216, 35, 231}, {185, 216, 35, 232}, {185, 216, 35, 235}, {195, 181, 160, 75}, {195, 181, 161, 2}, {195, 181, 161, 8}, {195, 181, 161, 15}, {195, 181, 161, 16}, {195, 181, 161, 23}, {195, 181, 161, 25}}},
|
||||
{Region: models.CyberghostRegion("Denmark"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 145, 93}, {37, 120, 194, 39}, {37, 120, 194, 41}, {37, 120, 194, 53}, {95, 174, 65, 166}, {95, 174, 65, 167}, {95, 174, 65, 174}, {185, 206, 224, 230}, {185, 206, 224, 235}, {185, 206, 224, 253}}},
|
||||
{Region: models.CyberghostRegion("Denmark"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 145, 84}, {37, 120, 145, 88}, {37, 120, 194, 38}, {37, 120, 194, 58}, {95, 174, 65, 163}, {95, 174, 65, 165}, {185, 206, 224, 227}, {185, 206, 224, 243}, {185, 206, 224, 245}, {185, 206, 224, 253}}},
|
||||
{Region: models.CyberghostRegion("Egypt"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 139, 7}, {45, 132, 139, 22}, {45, 132, 139, 24}, {45, 132, 139, 27}, {45, 132, 139, 28}, {45, 132, 139, 29}, {188, 214, 122, 36}, {188, 214, 122, 41}, {188, 214, 122, 52}, {188, 214, 122, 56}}},
|
||||
{Region: models.CyberghostRegion("Egypt"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 139, 7}, {45, 132, 139, 17}, {45, 132, 139, 18}, {45, 132, 139, 22}, {45, 132, 139, 23}, {188, 214, 122, 41}, {188, 214, 122, 48}, {188, 214, 122, 49}, {188, 214, 122, 51}, {188, 214, 122, 61}}},
|
||||
{Region: models.CyberghostRegion("Estonia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{77, 247, 111, 6}, {77, 247, 111, 11}, {77, 247, 111, 52}, {77, 247, 111, 53}, {77, 247, 111, 55}, {77, 247, 111, 56}, {77, 247, 111, 57}, {77, 247, 111, 60}, {77, 247, 111, 61}, {77, 247, 111, 62}}},
|
||||
{Region: models.CyberghostRegion("Estonia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{77, 247, 111, 3}, {77, 247, 111, 4}, {77, 247, 111, 5}, {77, 247, 111, 7}, {77, 247, 111, 11}, {77, 247, 111, 12}, {77, 247, 111, 52}, {77, 247, 111, 53}, {77, 247, 111, 55}, {77, 247, 111, 59}}},
|
||||
{Region: models.CyberghostRegion("Finland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{194, 34, 133, 171}, {194, 34, 133, 172}, {194, 34, 133, 176}, {194, 34, 133, 179}, {194, 34, 133, 180}, {194, 34, 133, 195}, {194, 34, 133, 196}, {194, 34, 133, 204}, {194, 34, 133, 207}, {194, 34, 133, 208}}},
|
||||
{Region: models.CyberghostRegion("Finland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{194, 34, 133, 163}, {194, 34, 133, 164}, {194, 34, 133, 167}, {194, 34, 133, 178}, {194, 34, 133, 192}, {194, 34, 133, 201}, {194, 34, 133, 205}, {194, 34, 133, 206}, {194, 34, 133, 208}, {194, 34, 133, 214}}},
|
||||
{Region: models.CyberghostRegion("France"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{84, 17, 60, 21}, {84, 17, 60, 33}, {84, 17, 60, 89}, {84, 17, 60, 92}, {84, 17, 60, 114}, {84, 17, 61, 23}, {84, 17, 61, 43}, {84, 17, 61, 111}, {84, 17, 61, 235}, {151, 106, 8, 36}}},
|
||||
{Region: models.CyberghostRegion("France"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{84, 17, 60, 8}, {84, 17, 60, 54}, {84, 17, 60, 161}, {84, 17, 60, 188}, {84, 17, 61, 32}, {84, 17, 61, 101}, {84, 17, 61, 163}, {84, 17, 61, 187}, {84, 17, 61, 213}, {151, 106, 8, 46}}},
|
||||
{Region: models.CyberghostRegion("Georgia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 138, 7}, {45, 132, 138, 8}, {45, 132, 138, 9}, {45, 132, 138, 12}, {45, 132, 138, 14}, {45, 132, 138, 18}, {45, 132, 138, 19}, {45, 132, 138, 20}, {45, 132, 138, 23}, {45, 132, 138, 27}}},
|
||||
{Region: models.CyberghostRegion("Georgia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 138, 7}, {45, 132, 138, 8}, {45, 132, 138, 9}, {45, 132, 138, 10}, {45, 132, 138, 17}, {45, 132, 138, 18}, {45, 132, 138, 25}, {45, 132, 138, 26}, {45, 132, 138, 27}, {45, 132, 138, 28}}},
|
||||
{Region: models.CyberghostRegion("Germany"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 217, 110}, {84, 17, 48, 75}, {84, 17, 48, 100}, {84, 17, 48, 182}, {84, 17, 49, 129}, {154, 28, 188, 50}, {154, 28, 188, 128}, {178, 162, 208, 155}, {178, 162, 209, 72}, {178, 162, 216, 49}}},
|
||||
{Region: models.CyberghostRegion("Germany"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 217, 5}, {37, 120, 217, 27}, {84, 17, 48, 20}, {84, 17, 48, 64}, {84, 17, 48, 68}, {84, 17, 48, 182}, {84, 17, 49, 141}, {84, 17, 49, 144}, {154, 28, 188, 90}, {154, 28, 188, 143}}},
|
||||
{Region: models.CyberghostRegion("Greece"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{154, 57, 3, 130}, {154, 57, 3, 132}, {154, 57, 3, 135}, {154, 57, 3, 138}, {154, 57, 3, 140}, {188, 123, 126, 168}, {188, 123, 126, 170}, {188, 123, 126, 176}, {188, 123, 126, 177}, {188, 123, 126, 178}}},
|
||||
{Region: models.CyberghostRegion("Greece"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{154, 57, 3, 130}, {154, 57, 3, 132}, {154, 57, 3, 133}, {154, 57, 3, 137}, {188, 123, 126, 167}, {188, 123, 126, 170}, {188, 123, 126, 172}, {188, 123, 126, 173}, {188, 123, 126, 174}, {188, 123, 126, 177}}},
|
||||
{Region: models.CyberghostRegion("Greenland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 209, 8}, {45, 131, 209, 9}, {45, 131, 209, 12}, {45, 131, 209, 16}, {45, 131, 209, 18}, {45, 131, 209, 20}, {45, 131, 209, 22}, {45, 131, 209, 23}, {45, 131, 209, 26}, {45, 131, 209, 27}}},
|
||||
{Region: models.CyberghostRegion("Greenland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 209, 6}, {45, 131, 209, 11}, {45, 131, 209, 19}, {45, 131, 209, 20}, {45, 131, 209, 21}, {45, 131, 209, 23}, {45, 131, 209, 26}, {45, 131, 209, 27}, {45, 131, 209, 28}, {45, 131, 209, 29}}},
|
||||
{Region: models.CyberghostRegion("Hong Kong"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{84, 17, 56, 130}, {84, 17, 56, 136}, {84, 17, 56, 148}, {84, 17, 56, 149}, {84, 17, 56, 152}, {84, 17, 56, 172}, {84, 17, 56, 173}, {84, 17, 56, 175}, {84, 17, 56, 176}, {84, 17, 56, 181}}},
|
||||
{Region: models.CyberghostRegion("Hong Kong"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{84, 17, 56, 133}, {84, 17, 56, 140}, {84, 17, 56, 146}, {84, 17, 56, 151}, {84, 17, 56, 162}, {84, 17, 56, 166}, {84, 17, 56, 172}, {84, 17, 56, 174}, {84, 17, 56, 176}, {84, 17, 56, 182}}},
|
||||
{Region: models.CyberghostRegion("Hungary"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{185, 104, 187, 83}, {185, 104, 187, 85}, {185, 104, 187, 86}, {185, 104, 187, 92}, {185, 189, 114, 116}, {185, 189, 114, 119}, {185, 189, 114, 120}, {185, 189, 114, 121}, {185, 189, 114, 124}, {185, 189, 114, 125}}},
|
||||
{Region: models.CyberghostRegion("Hungary"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{185, 104, 187, 83}, {185, 104, 187, 85}, {185, 104, 187, 93}, {185, 189, 114, 115}, {185, 189, 114, 118}, {185, 189, 114, 119}, {185, 189, 114, 120}, {185, 189, 114, 121}, {185, 189, 114, 123}, {185, 189, 114, 125}}},
|
||||
{Region: models.CyberghostRegion("Iceland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{213, 167, 139, 19}, {213, 167, 139, 20}, {213, 167, 139, 21}, {213, 167, 139, 22}, {213, 167, 139, 23}, {213, 167, 139, 24}, {213, 167, 139, 25}, {213, 167, 139, 26}, {213, 167, 139, 28}, {213, 167, 139, 30}}},
|
||||
{Region: models.CyberghostRegion("Iceland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{213, 167, 139, 19}, {213, 167, 139, 21}, {213, 167, 139, 22}, {213, 167, 139, 24}, {213, 167, 139, 25}, {213, 167, 139, 26}, {213, 167, 139, 27}, {213, 167, 139, 28}, {213, 167, 139, 29}, {213, 167, 139, 30}}},
|
||||
{Region: models.CyberghostRegion("India"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{43, 241, 71, 115}, {43, 241, 71, 118}, {43, 241, 71, 120}, {43, 241, 71, 122}, {43, 241, 71, 125}, {43, 241, 71, 147}, {43, 241, 71, 148}, {43, 241, 71, 149}, {43, 241, 71, 154}, {43, 241, 71, 156}}},
|
||||
{Region: models.CyberghostRegion("India"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{43, 241, 71, 116}, {43, 241, 71, 117}, {43, 241, 71, 118}, {43, 241, 71, 122}, {43, 241, 71, 125}, {43, 241, 71, 147}, {43, 241, 71, 148}, {43, 241, 71, 153}, {43, 241, 71, 155}, {43, 241, 71, 156}}},
|
||||
{Region: models.CyberghostRegion("Indonesia"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{113, 20, 29, 243}, {113, 20, 29, 244}, {113, 20, 29, 246}, {113, 20, 29, 247}, {113, 20, 29, 248}, {113, 20, 29, 249}, {113, 20, 29, 250}, {113, 20, 29, 251}, {113, 20, 29, 252}, {113, 20, 29, 254}}},
|
||||
{Region: models.CyberghostRegion("Indonesia"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{113, 20, 29, 243}, {113, 20, 29, 245}, {113, 20, 29, 246}, {113, 20, 29, 247}, {113, 20, 29, 248}, {113, 20, 29, 249}, {113, 20, 29, 250}, {113, 20, 29, 251}, {113, 20, 29, 252}, {113, 20, 29, 253}}},
|
||||
{Region: models.CyberghostRegion("Iran"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 4, 10}, {45, 131, 4, 16}, {45, 131, 4, 17}, {45, 131, 4, 18}, {45, 131, 4, 20}, {45, 131, 4, 21}, {45, 131, 4, 22}, {45, 131, 4, 24}, {45, 131, 4, 25}, {45, 131, 4, 28}}},
|
||||
{Region: models.CyberghostRegion("Iran"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 4, 6}, {45, 131, 4, 8}, {45, 131, 4, 12}, {45, 131, 4, 14}, {45, 131, 4, 15}, {45, 131, 4, 20}, {45, 131, 4, 23}, {45, 131, 4, 24}, {45, 131, 4, 27}, {45, 131, 4, 28}}},
|
||||
{Region: models.CyberghostRegion("Ireland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{84, 247, 48, 3}, {84, 247, 48, 4}, {84, 247, 48, 5}, {84, 247, 48, 8}, {84, 247, 48, 9}, {84, 247, 48, 10}, {84, 247, 48, 11}, {84, 247, 48, 12}, {84, 247, 48, 19}, {84, 247, 48, 21}}},
|
||||
{Region: models.CyberghostRegion("Ireland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{84, 247, 48, 3}, {84, 247, 48, 13}, {84, 247, 48, 14}, {84, 247, 48, 20}, {84, 247, 48, 21}, {84, 247, 48, 23}, {84, 247, 48, 24}, {84, 247, 48, 25}, {84, 247, 48, 26}, {84, 247, 48, 27}}},
|
||||
{Region: models.CyberghostRegion("Isle of Man"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 140, 7}, {45, 132, 140, 8}, {45, 132, 140, 10}, {45, 132, 140, 11}, {45, 132, 140, 15}, {45, 132, 140, 17}, {45, 132, 140, 18}, {45, 132, 140, 19}, {45, 132, 140, 27}, {45, 132, 140, 28}}},
|
||||
{Region: models.CyberghostRegion("Isle of Man"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 140, 7}, {45, 132, 140, 9}, {45, 132, 140, 10}, {45, 132, 140, 16}, {45, 132, 140, 19}, {45, 132, 140, 20}, {45, 132, 140, 21}, {45, 132, 140, 25}, {45, 132, 140, 26}, {45, 132, 140, 28}}},
|
||||
{Region: models.CyberghostRegion("Israel"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{160, 116, 0, 163}, {160, 116, 0, 164}, {160, 116, 0, 166}, {160, 116, 0, 167}, {160, 116, 0, 169}, {160, 116, 0, 170}, {160, 116, 0, 171}, {160, 116, 0, 172}, {160, 116, 0, 173}, {160, 116, 0, 174}}},
|
||||
{Region: models.CyberghostRegion("Israel"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{160, 116, 0, 163}, {160, 116, 0, 165}, {160, 116, 0, 166}, {160, 116, 0, 167}, {160, 116, 0, 168}, {160, 116, 0, 169}, {160, 116, 0, 170}, {160, 116, 0, 172}, {160, 116, 0, 173}, {160, 116, 0, 174}}},
|
||||
{Region: models.CyberghostRegion("Italy"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{84, 17, 58, 11}, {84, 17, 58, 19}, {87, 101, 94, 70}, {87, 101, 94, 116}, {185, 217, 71, 133}, {185, 217, 71, 137}, {212, 102, 55, 100}, {212, 102, 55, 123}, {212, 102, 55, 139}, {212, 102, 55, 184}}},
|
||||
{Region: models.CyberghostRegion("Italy"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{84, 17, 58, 7}, {84, 17, 58, 100}, {84, 17, 58, 103}, {84, 17, 58, 104}, {87, 101, 94, 116}, {87, 101, 94, 124}, {185, 217, 71, 132}, {185, 217, 71, 134}, {212, 102, 55, 156}, {212, 102, 55, 167}}},
|
||||
{Region: models.CyberghostRegion("Japan"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{156, 146, 35, 5}, {156, 146, 35, 8}, {156, 146, 35, 9}, {156, 146, 35, 17}, {156, 146, 35, 20}, {156, 146, 35, 33}, {156, 146, 35, 36}, {156, 146, 35, 42}, {156, 146, 35, 45}, {156, 146, 35, 50}}},
|
||||
{Region: models.CyberghostRegion("Japan"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{156, 146, 35, 6}, {156, 146, 35, 8}, {156, 146, 35, 19}, {156, 146, 35, 22}, {156, 146, 35, 27}, {156, 146, 35, 32}, {156, 146, 35, 35}, {156, 146, 35, 37}, {156, 146, 35, 41}, {156, 146, 35, 47}}},
|
||||
{Region: models.CyberghostRegion("Kazakhstan"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 133, 88, 7}, {45, 133, 88, 11}, {45, 133, 88, 12}, {45, 133, 88, 13}, {45, 133, 88, 14}, {45, 133, 88, 20}, {45, 133, 88, 23}, {45, 133, 88, 24}, {45, 133, 88, 26}, {45, 133, 88, 28}}},
|
||||
{Region: models.CyberghostRegion("Kazakhstan"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 133, 88, 8}, {45, 133, 88, 12}, {45, 133, 88, 13}, {45, 133, 88, 15}, {45, 133, 88, 19}, {45, 133, 88, 20}, {45, 133, 88, 24}, {45, 133, 88, 25}, {45, 133, 88, 26}, {45, 133, 88, 28}}},
|
||||
{Region: models.CyberghostRegion("Kenya"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{62, 12, 118, 195}, {62, 12, 118, 196}, {62, 12, 118, 197}, {62, 12, 118, 198}, {62, 12, 118, 199}, {62, 12, 118, 200}, {62, 12, 118, 201}, {62, 12, 118, 202}, {62, 12, 118, 203}, {62, 12, 118, 204}}},
|
||||
{Region: models.CyberghostRegion("Kenya"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{62, 12, 118, 195}, {62, 12, 118, 196}, {62, 12, 118, 197}, {62, 12, 118, 198}, {62, 12, 118, 199}, {62, 12, 118, 200}, {62, 12, 118, 201}, {62, 12, 118, 202}, {62, 12, 118, 203}, {62, 12, 118, 204}}},
|
||||
{Region: models.CyberghostRegion("Korea"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{27, 255, 75, 227}, {27, 255, 75, 229}, {27, 255, 75, 233}, {27, 255, 75, 234}, {27, 255, 75, 235}, {27, 255, 75, 236}, {27, 255, 75, 248}, {27, 255, 75, 249}, {27, 255, 75, 251}, {27, 255, 75, 254}}},
|
||||
{Region: models.CyberghostRegion("Korea"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{27, 255, 75, 228}, {27, 255, 75, 229}, {27, 255, 75, 230}, {27, 255, 75, 231}, {27, 255, 75, 234}, {27, 255, 75, 235}, {27, 255, 75, 244}, {27, 255, 75, 245}, {27, 255, 75, 246}, {27, 255, 75, 247}}},
|
||||
{Region: models.CyberghostRegion("Latvia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{109, 248, 148, 244}, {109, 248, 148, 251}, {109, 248, 148, 252}, {109, 248, 148, 253}, {109, 248, 149, 19}, {109, 248, 149, 20}, {109, 248, 149, 21}, {109, 248, 149, 22}, {109, 248, 149, 24}, {109, 248, 149, 27}}},
|
||||
{Region: models.CyberghostRegion("Latvia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{109, 248, 148, 248}, {109, 248, 148, 252}, {109, 248, 148, 253}, {109, 248, 148, 254}, {109, 248, 149, 19}, {109, 248, 149, 20}, {109, 248, 149, 21}, {109, 248, 149, 24}, {109, 248, 149, 28}, {109, 248, 149, 29}}},
|
||||
{Region: models.CyberghostRegion("Liechtenstein"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 139, 48, 6}, {45, 139, 48, 7}, {45, 139, 48, 9}, {45, 139, 48, 16}, {45, 139, 48, 17}, {45, 139, 48, 19}, {45, 139, 48, 20}, {45, 139, 48, 22}, {45, 139, 48, 23}, {45, 139, 48, 27}}},
|
||||
{Region: models.CyberghostRegion("Liechtenstein"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 139, 48, 9}, {45, 139, 48, 12}, {45, 139, 48, 15}, {45, 139, 48, 16}, {45, 139, 48, 17}, {45, 139, 48, 18}, {45, 139, 48, 24}, {45, 139, 48, 26}, {45, 139, 48, 28}, {45, 139, 48, 29}}},
|
||||
{Region: models.CyberghostRegion("Lithuania"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{85, 206, 162, 211}, {85, 206, 162, 213}, {85, 206, 162, 214}, {85, 206, 162, 216}, {85, 206, 162, 219}, {85, 206, 162, 220}, {85, 206, 165, 18}, {85, 206, 165, 20}, {85, 206, 165, 24}, {85, 206, 165, 25}}},
|
||||
{Region: models.CyberghostRegion("Lithuania"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{85, 206, 162, 210}, {85, 206, 162, 211}, {85, 206, 162, 214}, {85, 206, 162, 215}, {85, 206, 162, 220}, {85, 206, 162, 221}, {85, 206, 162, 222}, {85, 206, 165, 18}, {85, 206, 165, 25}, {85, 206, 165, 26}}},
|
||||
{Region: models.CyberghostRegion("Luxembourg"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{5, 253, 204, 5}, {5, 253, 204, 6}, {5, 253, 204, 9}, {5, 253, 204, 10}, {5, 253, 204, 12}, {5, 253, 204, 14}, {5, 253, 204, 20}, {5, 253, 204, 23}, {5, 253, 204, 29}, {5, 253, 204, 30}}},
|
||||
{Region: models.CyberghostRegion("Luxembourg"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{5, 253, 204, 7}, {5, 253, 204, 11}, {5, 253, 204, 20}, {5, 253, 204, 22}, {5, 253, 204, 23}, {5, 253, 204, 26}, {5, 253, 204, 27}, {5, 253, 204, 28}, {5, 253, 204, 29}, {5, 253, 204, 30}}},
|
||||
{Region: models.CyberghostRegion("Macao"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 137, 197, 8}, {45, 137, 197, 9}, {45, 137, 197, 12}, {45, 137, 197, 14}, {45, 137, 197, 17}, {45, 137, 197, 33}, {45, 137, 197, 35}, {45, 137, 197, 42}, {45, 137, 197, 45}, {45, 137, 197, 47}}},
|
||||
{Region: models.CyberghostRegion("Macao"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 137, 197, 2}, {45, 137, 197, 7}, {45, 137, 197, 18}, {45, 137, 197, 19}, {45, 137, 197, 28}, {45, 137, 197, 30}, {45, 137, 197, 33}, {45, 137, 197, 35}, {45, 137, 197, 44}, {45, 137, 197, 47}}},
|
||||
{Region: models.CyberghostRegion("Macedonia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{185, 225, 28, 3}, {185, 225, 28, 4}, {185, 225, 28, 5}, {185, 225, 28, 6}, {185, 225, 28, 7}, {185, 225, 28, 8}, {185, 225, 28, 9}, {185, 225, 28, 10}, {185, 225, 28, 11}, {185, 225, 28, 12}}},
|
||||
{Region: models.CyberghostRegion("Macedonia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{185, 225, 28, 3}, {185, 225, 28, 4}, {185, 225, 28, 5}, {185, 225, 28, 6}, {185, 225, 28, 7}, {185, 225, 28, 8}, {185, 225, 28, 9}, {185, 225, 28, 10}, {185, 225, 28, 11}, {185, 225, 28, 12}}},
|
||||
{Region: models.CyberghostRegion("Malaysia"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{139, 5, 177, 69}, {139, 5, 177, 70}, {139, 5, 177, 71}, {139, 5, 177, 72}, {139, 5, 177, 73}, {139, 5, 177, 74}, {139, 5, 177, 75}, {139, 5, 177, 76}, {139, 5, 177, 77}, {139, 5, 177, 78}}},
|
||||
{Region: models.CyberghostRegion("Malaysia"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{139, 5, 177, 69}, {139, 5, 177, 70}, {139, 5, 177, 71}, {139, 5, 177, 72}, {139, 5, 177, 73}, {139, 5, 177, 74}, {139, 5, 177, 75}, {139, 5, 177, 76}, {139, 5, 177, 77}, {139, 5, 177, 78}}},
|
||||
{Region: models.CyberghostRegion("Malta"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 137, 198, 6}, {45, 137, 198, 8}, {45, 137, 198, 9}, {45, 137, 198, 11}, {45, 137, 198, 16}, {45, 137, 198, 18}, {45, 137, 198, 22}, {45, 137, 198, 23}, {45, 137, 198, 25}, {45, 137, 198, 27}}},
|
||||
{Region: models.CyberghostRegion("Malta"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 137, 198, 8}, {45, 137, 198, 10}, {45, 137, 198, 12}, {45, 137, 198, 13}, {45, 137, 198, 16}, {45, 137, 198, 17}, {45, 137, 198, 21}, {45, 137, 198, 23}, {45, 137, 198, 26}, {45, 137, 198, 28}}},
|
||||
{Region: models.CyberghostRegion("Mexico"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{45, 133, 180, 99}, {45, 133, 180, 106}, {45, 133, 180, 107}, {45, 133, 180, 108}, {45, 133, 180, 115}, {45, 133, 180, 118}, {45, 133, 180, 119}, {45, 133, 180, 121}, {45, 133, 180, 122}, {45, 133, 180, 123}}},
|
||||
{Region: models.CyberghostRegion("Mexico"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{45, 133, 180, 99}, {45, 133, 180, 101}, {45, 133, 180, 104}, {45, 133, 180, 105}, {45, 133, 180, 106}, {45, 133, 180, 115}, {45, 133, 180, 117}, {45, 133, 180, 118}, {45, 133, 180, 120}, {45, 133, 180, 121}}},
|
||||
{Region: models.CyberghostRegion("Moldova"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{178, 175, 130, 243}, {178, 175, 130, 245}, {178, 175, 130, 250}, {178, 175, 130, 251}, {178, 175, 130, 253}, {178, 175, 130, 254}, {178, 175, 142, 131}, {178, 175, 142, 132}, {178, 175, 142, 133}, {178, 175, 142, 134}}},
|
||||
{Region: models.CyberghostRegion("Moldova"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{178, 175, 130, 243}, {178, 175, 130, 244}, {178, 175, 130, 245}, {178, 175, 130, 246}, {178, 175, 130, 250}, {178, 175, 130, 251}, {178, 175, 130, 253}, {178, 175, 130, 254}, {178, 175, 142, 132}, {178, 175, 142, 133}}},
|
||||
{Region: models.CyberghostRegion("Monaco"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 137, 199, 7}, {45, 137, 199, 9}, {45, 137, 199, 11}, {45, 137, 199, 12}, {45, 137, 199, 14}, {45, 137, 199, 16}, {45, 137, 199, 20}, {45, 137, 199, 24}, {45, 137, 199, 25}, {45, 137, 199, 29}}},
|
||||
{Region: models.CyberghostRegion("Monaco"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 137, 199, 6}, {45, 137, 199, 7}, {45, 137, 199, 10}, {45, 137, 199, 16}, {45, 137, 199, 18}, {45, 137, 199, 22}, {45, 137, 199, 23}, {45, 137, 199, 24}, {45, 137, 199, 25}, {45, 137, 199, 27}}},
|
||||
{Region: models.CyberghostRegion("Mongolia"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 139, 51, 4}, {45, 139, 51, 13}, {45, 139, 51, 14}, {45, 139, 51, 17}, {45, 139, 51, 18}, {45, 139, 51, 22}, {45, 139, 51, 23}, {45, 139, 51, 32}, {45, 139, 51, 44}, {45, 139, 51, 48}}},
|
||||
{Region: models.CyberghostRegion("Mongolia"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 139, 51, 3}, {45, 139, 51, 6}, {45, 139, 51, 11}, {45, 139, 51, 12}, {45, 139, 51, 17}, {45, 139, 51, 20}, {45, 139, 51, 28}, {45, 139, 51, 30}, {45, 139, 51, 37}, {45, 139, 51, 41}}},
|
||||
{Region: models.CyberghostRegion("Montenegro"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 208, 6}, {45, 131, 208, 7}, {45, 131, 208, 8}, {45, 131, 208, 9}, {45, 131, 208, 10}, {45, 131, 208, 13}, {45, 131, 208, 14}, {45, 131, 208, 20}, {45, 131, 208, 24}, {45, 131, 208, 28}}},
|
||||
{Region: models.CyberghostRegion("Montenegro"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 208, 6}, {45, 131, 208, 8}, {45, 131, 208, 9}, {45, 131, 208, 12}, {45, 131, 208, 16}, {45, 131, 208, 20}, {45, 131, 208, 22}, {45, 131, 208, 24}, {45, 131, 208, 26}, {45, 131, 208, 28}}},
|
||||
{Region: models.CyberghostRegion("Morocco"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 211, 6}, {45, 131, 211, 9}, {45, 131, 211, 11}, {45, 131, 211, 13}, {45, 131, 211, 18}, {45, 131, 211, 21}, {45, 131, 211, 22}, {45, 131, 211, 23}, {45, 131, 211, 28}, {45, 131, 211, 29}}},
|
||||
{Region: models.CyberghostRegion("Morocco"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 211, 9}, {45, 131, 211, 10}, {45, 131, 211, 13}, {45, 131, 211, 18}, {45, 131, 211, 20}, {45, 131, 211, 21}, {45, 131, 211, 25}, {45, 131, 211, 26}, {45, 131, 211, 28}, {45, 131, 211, 29}}},
|
||||
{Region: models.CyberghostRegion("Netherlands"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{84, 17, 47, 3}, {84, 17, 47, 20}, {84, 17, 47, 39}, {84, 17, 47, 42}, {84, 17, 47, 74}, {84, 17, 47, 111}, {139, 28, 217, 199}, {185, 132, 177, 136}, {190, 2, 149, 196}, {195, 181, 172, 69}}},
|
||||
{Region: models.CyberghostRegion("Netherlands"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{84, 17, 47, 4}, {84, 17, 47, 8}, {84, 17, 47, 12}, {84, 17, 47, 38}, {84, 17, 47, 68}, {185, 132, 177, 235}, {190, 2, 149, 28}, {190, 2, 149, 30}, {190, 2, 149, 208}, {195, 181, 172, 79}}},
|
||||
{Region: models.CyberghostRegion("New Zealand"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{103, 231, 91, 131}, {103, 231, 91, 132}, {103, 231, 91, 133}, {103, 231, 91, 134}, {103, 231, 91, 135}, {103, 231, 91, 136}, {103, 231, 91, 137}, {103, 231, 91, 138}, {103, 231, 91, 139}, {103, 231, 91, 140}}},
|
||||
{Region: models.CyberghostRegion("New Zealand"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{103, 231, 91, 131}, {103, 231, 91, 132}, {103, 231, 91, 133}, {103, 231, 91, 134}, {103, 231, 91, 135}, {103, 231, 91, 136}, {103, 231, 91, 137}, {103, 231, 91, 138}, {103, 231, 91, 139}, {103, 231, 91, 140}}},
|
||||
{Region: models.CyberghostRegion("Nigeria"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 137, 196, 6}, {45, 137, 196, 10}, {45, 137, 196, 12}, {45, 137, 196, 13}, {45, 137, 196, 15}, {45, 137, 196, 16}, {45, 137, 196, 17}, {45, 137, 196, 20}, {45, 137, 196, 24}, {45, 137, 196, 29}}},
|
||||
{Region: models.CyberghostRegion("Nigeria"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 137, 196, 6}, {45, 137, 196, 7}, {45, 137, 196, 8}, {45, 137, 196, 9}, {45, 137, 196, 12}, {45, 137, 196, 13}, {45, 137, 196, 14}, {45, 137, 196, 20}, {45, 137, 196, 28}, {45, 137, 196, 29}}},
|
||||
{Region: models.CyberghostRegion("Norway"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 12, 223, 131}, {45, 12, 223, 135}, {45, 12, 223, 136}, {45, 12, 223, 138}, {185, 206, 225, 231}, {185, 206, 225, 233}, {185, 253, 97, 235}, {185, 253, 97, 236}, {185, 253, 97, 247}, {185, 253, 97, 253}}},
|
||||
{Region: models.CyberghostRegion("Norway"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 12, 223, 132}, {45, 12, 223, 137}, {45, 12, 223, 138}, {45, 12, 223, 141}, {185, 206, 225, 27}, {185, 206, 225, 30}, {185, 253, 97, 245}, {185, 253, 97, 246}, {185, 253, 97, 248}, {185, 253, 97, 249}}},
|
||||
{Region: models.CyberghostRegion("Pakistan"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{103, 76, 3, 244}, {103, 76, 3, 245}, {103, 76, 3, 246}, {103, 76, 3, 247}, {103, 76, 3, 248}, {103, 76, 3, 249}, {103, 76, 3, 250}, {103, 76, 3, 251}, {103, 76, 3, 252}, {103, 76, 3, 253}}},
|
||||
{Region: models.CyberghostRegion("Pakistan"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{103, 76, 3, 244}, {103, 76, 3, 245}, {103, 76, 3, 246}, {103, 76, 3, 247}, {103, 76, 3, 248}, {103, 76, 3, 249}, {103, 76, 3, 250}, {103, 76, 3, 251}, {103, 76, 3, 252}, {103, 76, 3, 253}}},
|
||||
{Region: models.CyberghostRegion("Panama"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 210, 9}, {45, 131, 210, 10}, {45, 131, 210, 14}, {45, 131, 210, 15}, {45, 131, 210, 16}, {45, 131, 210, 21}, {45, 131, 210, 22}, {45, 131, 210, 23}, {45, 131, 210, 24}, {45, 131, 210, 26}}},
|
||||
{Region: models.CyberghostRegion("Panama"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 210, 6}, {45, 131, 210, 8}, {45, 131, 210, 9}, {45, 131, 210, 12}, {45, 131, 210, 14}, {45, 131, 210, 18}, {45, 131, 210, 19}, {45, 131, 210, 25}, {45, 131, 210, 28}, {45, 131, 210, 29}}},
|
||||
{Region: models.CyberghostRegion("Philippines"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{188, 214, 125, 39}, {188, 214, 125, 45}, {188, 214, 125, 47}, {188, 214, 125, 49}, {188, 214, 125, 50}, {188, 214, 125, 51}, {188, 214, 125, 53}, {188, 214, 125, 57}, {188, 214, 125, 58}, {188, 214, 125, 61}}},
|
||||
{Region: models.CyberghostRegion("Philippines"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{188, 214, 125, 35}, {188, 214, 125, 36}, {188, 214, 125, 37}, {188, 214, 125, 48}, {188, 214, 125, 55}, {188, 214, 125, 56}, {188, 214, 125, 57}, {188, 214, 125, 58}, {188, 214, 125, 59}, {188, 214, 125, 62}}},
|
||||
{Region: models.CyberghostRegion("Poland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 156, 11}, {37, 120, 156, 17}, {37, 120, 156, 23}, {37, 120, 156, 25}, {37, 120, 156, 26}, {51, 75, 56, 35}, {51, 75, 56, 37}, {51, 75, 56, 41}, {54, 37, 238, 36}, {54, 37, 238, 43}}},
|
||||
{Region: models.CyberghostRegion("Poland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 156, 8}, {37, 120, 156, 10}, {37, 120, 156, 12}, {37, 120, 156, 18}, {37, 120, 156, 19}, {37, 120, 156, 24}, {51, 75, 56, 33}, {51, 75, 56, 40}, {51, 75, 56, 41}, {54, 37, 238, 33}}},
|
||||
{Region: models.CyberghostRegion("Portugal"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{89, 26, 243, 47}, {89, 26, 243, 48}, {89, 26, 243, 50}, {89, 26, 243, 51}, {89, 26, 243, 54}, {89, 26, 243, 58}, {89, 26, 243, 60}, {185, 90, 57, 172}, {185, 90, 57, 176}, {185, 90, 57, 179}}},
|
||||
{Region: models.CyberghostRegion("Portugal"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{89, 26, 243, 47}, {89, 26, 243, 50}, {89, 26, 243, 51}, {89, 26, 243, 53}, {89, 26, 243, 58}, {185, 90, 57, 173}, {185, 90, 57, 175}, {185, 90, 57, 176}, {185, 90, 57, 178}, {185, 90, 57, 179}}},
|
||||
{Region: models.CyberghostRegion("Qatar"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 7, 6}, {45, 131, 7, 9}, {45, 131, 7, 10}, {45, 131, 7, 13}, {45, 131, 7, 16}, {45, 131, 7, 17}, {45, 131, 7, 20}, {45, 131, 7, 22}, {45, 131, 7, 23}, {45, 131, 7, 28}}},
|
||||
{Region: models.CyberghostRegion("Qatar"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 7, 8}, {45, 131, 7, 9}, {45, 131, 7, 14}, {45, 131, 7, 15}, {45, 131, 7, 16}, {45, 131, 7, 17}, {45, 131, 7, 23}, {45, 131, 7, 27}, {45, 131, 7, 28}, {45, 131, 7, 29}}},
|
||||
{Region: models.CyberghostRegion("Romania"), Group: models.CyberghostGroup("NoSpy TCP Europe"), IPs: []net.IP{{85, 9, 20, 134}, {85, 9, 20, 135}, {85, 9, 20, 137}, {85, 9, 20, 138}, {85, 9, 20, 139}, {85, 9, 20, 147}, {85, 9, 20, 149}, {85, 9, 20, 154}, {85, 9, 20, 248}, {85, 9, 20, 249}}},
|
||||
{Region: models.CyberghostRegion("Romania"), Group: models.CyberghostGroup("NoSpy UDP Europe"), IPs: []net.IP{{85, 9, 20, 134}, {85, 9, 20, 138}, {85, 9, 20, 139}, {85, 9, 20, 144}, {85, 9, 20, 145}, {85, 9, 20, 147}, {85, 9, 20, 148}, {85, 9, 20, 151}, {85, 9, 20, 248}, {85, 9, 20, 249}}},
|
||||
{Region: models.CyberghostRegion("Romania"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{193, 176, 84, 44}, {193, 176, 84, 49}, {193, 176, 84, 51}, {193, 176, 84, 52}, {193, 176, 84, 88}, {193, 176, 84, 121}, {193, 176, 84, 126}, {193, 176, 85, 72}, {193, 176, 85, 74}, {193, 176, 85, 101}}},
|
||||
{Region: models.CyberghostRegion("Romania"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{193, 176, 84, 46}, {193, 176, 84, 47}, {193, 176, 84, 48}, {193, 176, 84, 49}, {193, 176, 84, 90}, {193, 176, 84, 125}, {193, 176, 85, 68}, {193, 176, 85, 72}, {193, 176, 85, 78}, {193, 176, 85, 91}}},
|
||||
{Region: models.CyberghostRegion("Russian Federation"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 192, 42}, {45, 132, 192, 43}, {45, 132, 192, 49}, {45, 132, 192, 60}, {45, 132, 192, 63}, {45, 132, 192, 66}, {45, 132, 192, 78}, {45, 132, 192, 80}, {45, 132, 192, 85}, {45, 132, 192, 96}}},
|
||||
{Region: models.CyberghostRegion("Russian Federation"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 192, 11}, {45, 132, 192, 15}, {45, 132, 192, 24}, {45, 132, 192, 32}, {45, 132, 192, 43}, {45, 132, 192, 49}, {45, 132, 192, 55}, {45, 132, 192, 63}, {45, 132, 192, 65}, {45, 132, 192, 95}}},
|
||||
{Region: models.CyberghostRegion("Saudi Arabia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 6, 7}, {45, 131, 6, 10}, {45, 131, 6, 12}, {45, 131, 6, 13}, {45, 131, 6, 21}, {45, 131, 6, 23}, {45, 131, 6, 24}, {45, 131, 6, 25}, {45, 131, 6, 26}, {45, 131, 6, 28}}},
|
||||
{Region: models.CyberghostRegion("Saudi Arabia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 6, 7}, {45, 131, 6, 9}, {45, 131, 6, 14}, {45, 131, 6, 15}, {45, 131, 6, 18}, {45, 131, 6, 19}, {45, 131, 6, 22}, {45, 131, 6, 24}, {45, 131, 6, 28}, {45, 131, 6, 29}}},
|
||||
{Region: models.CyberghostRegion("Serbia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 193, 179}, {37, 120, 193, 181}, {37, 120, 193, 182}, {37, 120, 193, 183}, {37, 120, 193, 184}, {37, 120, 193, 186}, {37, 120, 193, 190}, {141, 98, 103, 37}, {141, 98, 103, 43}, {141, 98, 103, 46}}},
|
||||
{Region: models.CyberghostRegion("Serbia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 193, 179}, {37, 120, 193, 182}, {37, 120, 193, 183}, {37, 120, 193, 188}, {37, 120, 193, 189}, {37, 120, 193, 190}, {141, 98, 103, 35}, {141, 98, 103, 40}, {141, 98, 103, 42}, {141, 98, 103, 46}}},
|
||||
{Region: models.CyberghostRegion("Singapore"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{37, 120, 151, 55}, {37, 120, 151, 60}, {37, 120, 151, 131}, {37, 120, 151, 139}, {84, 17, 39, 168}, {84, 17, 39, 175}, {84, 17, 39, 176}, {84, 17, 39, 179}, {84, 17, 39, 182}, {84, 17, 39, 185}}},
|
||||
{Region: models.CyberghostRegion("Singapore"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{37, 120, 151, 51}, {37, 120, 151, 57}, {37, 120, 151, 131}, {37, 120, 151, 132}, {37, 120, 151, 140}, {37, 120, 151, 141}, {84, 17, 39, 165}, {84, 17, 39, 169}, {84, 17, 39, 171}, {84, 17, 39, 180}}},
|
||||
{Region: models.CyberghostRegion("Slovakia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{185, 245, 85, 227}, {185, 245, 85, 228}, {185, 245, 85, 229}, {185, 245, 85, 230}, {185, 245, 85, 231}, {185, 245, 85, 232}, {185, 245, 85, 233}, {185, 245, 85, 234}, {185, 245, 85, 235}, {185, 245, 85, 236}}},
|
||||
{Region: models.CyberghostRegion("Slovakia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{185, 245, 85, 227}, {185, 245, 85, 228}, {185, 245, 85, 229}, {185, 245, 85, 230}, {185, 245, 85, 231}, {185, 245, 85, 232}, {185, 245, 85, 233}, {185, 245, 85, 234}, {185, 245, 85, 235}, {185, 245, 85, 236}}},
|
||||
{Region: models.CyberghostRegion("Slovenia"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{146, 247, 25, 79}, {146, 247, 25, 80}, {146, 247, 25, 81}, {146, 247, 25, 83}, {146, 247, 25, 84}, {146, 247, 25, 85}, {146, 247, 25, 86}, {146, 247, 25, 87}, {146, 247, 25, 88}, {146, 247, 25, 90}}},
|
||||
{Region: models.CyberghostRegion("Slovenia"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{146, 247, 25, 80}, {146, 247, 25, 81}, {146, 247, 25, 82}, {146, 247, 25, 83}, {146, 247, 25, 84}, {146, 247, 25, 85}, {146, 247, 25, 86}, {146, 247, 25, 87}, {146, 247, 25, 88}, {146, 247, 25, 89}}},
|
||||
{Region: models.CyberghostRegion("South Africa"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{165, 73, 248, 211}, {165, 73, 248, 214}, {165, 73, 248, 222}, {165, 73, 248, 227}, {165, 73, 248, 229}, {165, 73, 248, 230}, {165, 73, 248, 231}, {165, 73, 248, 234}, {165, 73, 248, 236}, {165, 73, 248, 237}}},
|
||||
{Region: models.CyberghostRegion("South Africa"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{197, 85, 7, 26}, {197, 85, 7, 27}, {197, 85, 7, 28}, {197, 85, 7, 29}, {197, 85, 7, 30}, {197, 85, 7, 31}, {197, 85, 7, 131}, {197, 85, 7, 132}, {197, 85, 7, 133}, {197, 85, 7, 134}}},
|
||||
{Region: models.CyberghostRegion("South Africa"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{165, 73, 248, 212}, {165, 73, 248, 215}, {165, 73, 248, 217}, {165, 73, 248, 218}, {165, 73, 248, 219}, {165, 73, 248, 222}, {165, 73, 248, 227}, {165, 73, 248, 230}, {165, 73, 248, 234}, {165, 73, 248, 237}}},
|
||||
{Region: models.CyberghostRegion("South Africa"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{197, 85, 7, 26}, {197, 85, 7, 27}, {197, 85, 7, 28}, {197, 85, 7, 29}, {197, 85, 7, 30}, {197, 85, 7, 31}, {197, 85, 7, 131}, {197, 85, 7, 132}, {197, 85, 7, 133}, {197, 85, 7, 134}}},
|
||||
{Region: models.CyberghostRegion("Spain"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 142, 163}, {37, 120, 142, 166}, {37, 120, 142, 167}, {84, 17, 62, 138}, {84, 17, 62, 141}, {84, 17, 62, 145}, {84, 17, 62, 147}, {84, 17, 62, 152}, {185, 93, 3, 113}, {185, 93, 182, 139}}},
|
||||
{Region: models.CyberghostRegion("Spain"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 142, 150}, {37, 120, 142, 157}, {37, 120, 142, 165}, {84, 17, 62, 139}, {84, 17, 62, 142}, {185, 93, 3, 109}, {185, 93, 3, 111}, {185, 93, 3, 113}, {185, 93, 182, 136}, {185, 93, 182, 138}}},
|
||||
{Region: models.CyberghostRegion("Sri Lanka"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 132, 136, 6}, {45, 132, 136, 7}, {45, 132, 136, 8}, {45, 132, 136, 12}, {45, 132, 136, 13}, {45, 132, 136, 17}, {45, 132, 136, 21}, {45, 132, 136, 22}, {45, 132, 136, 26}, {45, 132, 136, 27}}},
|
||||
{Region: models.CyberghostRegion("Sri Lanka"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 132, 136, 7}, {45, 132, 136, 9}, {45, 132, 136, 10}, {45, 132, 136, 11}, {45, 132, 136, 12}, {45, 132, 136, 15}, {45, 132, 136, 20}, {45, 132, 136, 21}, {45, 132, 136, 27}, {45, 132, 136, 29}}},
|
||||
{Region: models.CyberghostRegion("Sweden"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{46, 246, 65, 151}, {46, 246, 65, 156}, {46, 246, 65, 157}, {46, 246, 65, 167}, {46, 246, 65, 203}, {46, 246, 65, 221}, {91, 132, 138, 51}, {188, 126, 64, 101}, {188, 126, 66, 3}, {188, 126, 66, 8}}},
|
||||
{Region: models.CyberghostRegion("Sweden"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{46, 246, 65, 167}, {46, 246, 65, 170}, {46, 246, 65, 172}, {46, 246, 65, 181}, {46, 246, 65, 214}, {46, 246, 65, 215}, {91, 132, 138, 57}, {188, 126, 66, 8}, {188, 126, 66, 24}, {188, 126, 66, 29}}},
|
||||
{Region: models.CyberghostRegion("Switzerland"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{84, 17, 52, 14}, {84, 17, 52, 39}, {84, 17, 52, 68}, {84, 17, 52, 73}, {84, 17, 52, 84}, {89, 187, 165, 131}, {185, 32, 222, 8}, {185, 32, 222, 105}, {195, 225, 118, 38}, {195, 225, 118, 56}}},
|
||||
{Region: models.CyberghostRegion("Switzerland"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{84, 17, 52, 15}, {84, 17, 52, 20}, {84, 17, 52, 36}, {84, 17, 52, 52}, {84, 17, 52, 62}, {84, 17, 52, 75}, {91, 132, 136, 174}, {91, 132, 136, 205}, {91, 132, 136, 206}, {185, 32, 222, 113}}},
|
||||
{Region: models.CyberghostRegion("Taiwan"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 133, 181, 102}, {45, 133, 181, 105}, {45, 133, 181, 106}, {45, 133, 181, 108}, {45, 133, 181, 110}, {45, 133, 181, 112}, {45, 133, 181, 114}, {45, 133, 181, 117}, {45, 133, 181, 120}, {45, 133, 181, 124}}},
|
||||
{Region: models.CyberghostRegion("Taiwan"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 133, 181, 102}, {45, 133, 181, 103}, {45, 133, 181, 110}, {45, 133, 181, 111}, {45, 133, 181, 112}, {45, 133, 181, 114}, {45, 133, 181, 118}, {45, 133, 181, 120}, {45, 133, 181, 125}, {45, 133, 181, 126}}},
|
||||
{Region: models.CyberghostRegion("Thailand"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{119, 59, 98, 238}, {119, 59, 98, 239}, {119, 59, 98, 243}, {119, 59, 98, 244}, {119, 59, 98, 248}, {119, 59, 98, 249}, {119, 59, 121, 165}, {119, 59, 121, 166}, {119, 59, 121, 171}, {119, 59, 121, 173}}},
|
||||
{Region: models.CyberghostRegion("Thailand"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{119, 59, 98, 214}, {119, 59, 98, 238}, {119, 59, 98, 244}, {119, 59, 98, 247}, {119, 59, 121, 163}, {119, 59, 121, 165}, {119, 59, 121, 166}, {119, 59, 121, 167}, {119, 59, 121, 173}, {119, 59, 121, 175}}},
|
||||
{Region: models.CyberghostRegion("Turkey"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{188, 213, 34, 9}, {188, 213, 34, 22}, {188, 213, 34, 24}, {188, 213, 34, 27}, {188, 213, 34, 28}, {188, 213, 34, 35}, {188, 213, 34, 41}, {188, 213, 34, 44}, {188, 213, 34, 45}, {188, 213, 34, 46}}},
|
||||
{Region: models.CyberghostRegion("Turkey"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{188, 213, 34, 3}, {188, 213, 34, 13}, {188, 213, 34, 18}, {188, 213, 34, 25}, {188, 213, 34, 27}, {188, 213, 34, 30}, {188, 213, 34, 35}, {188, 213, 34, 37}, {188, 213, 34, 38}, {188, 213, 34, 44}}},
|
||||
{Region: models.CyberghostRegion("Ukraine"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{31, 28, 161, 21}, {31, 28, 163, 34}, {31, 28, 163, 35}, {31, 28, 163, 38}, {31, 28, 163, 50}, {62, 149, 7, 164}, {62, 149, 7, 167}, {62, 149, 29, 50}, {62, 149, 29, 53}, {62, 149, 29, 56}}},
|
||||
{Region: models.CyberghostRegion("Ukraine"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{31, 28, 161, 20}, {31, 28, 161, 28}, {31, 28, 161, 30}, {31, 28, 163, 37}, {31, 28, 163, 45}, {31, 28, 163, 53}, {31, 28, 163, 56}, {31, 28, 163, 59}, {62, 149, 7, 168}, {62, 149, 29, 56}}},
|
||||
{Region: models.CyberghostRegion("United Arab Emirates"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 131, 5, 6}, {45, 131, 5, 9}, {45, 131, 5, 12}, {45, 131, 5, 14}, {45, 131, 5, 16}, {45, 131, 5, 17}, {45, 131, 5, 18}, {45, 131, 5, 27}, {45, 131, 5, 28}, {45, 131, 5, 29}}},
|
||||
{Region: models.CyberghostRegion("United Arab Emirates"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 131, 5, 8}, {45, 131, 5, 14}, {45, 131, 5, 15}, {45, 131, 5, 20}, {45, 131, 5, 22}, {45, 131, 5, 23}, {45, 131, 5, 24}, {45, 131, 5, 26}, {45, 131, 5, 28}, {45, 131, 5, 29}}},
|
||||
{Region: models.CyberghostRegion("United Kingdom"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{37, 120, 133, 134}, {37, 120, 133, 140}, {84, 17, 51, 32}, {84, 17, 51, 75}, {89, 238, 138, 243}, {89, 238, 183, 230}, {95, 154, 200, 144}, {95, 154, 200, 186}, {141, 98, 100, 56}, {141, 98, 100, 61}}},
|
||||
{Region: models.CyberghostRegion("United Kingdom"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{37, 120, 133, 134}, {37, 120, 159, 35}, {81, 92, 206, 172}, {84, 17, 51, 34}, {84, 17, 51, 110}, {84, 17, 51, 115}, {89, 238, 135, 59}, {95, 154, 200, 147}, {95, 154, 200, 149}, {141, 98, 100, 58}}},
|
||||
{Region: models.CyberghostRegion("United States"), Group: models.CyberghostGroup("Premium TCP USA"), IPs: []net.IP{{23, 105, 160, 184}, {38, 131, 126, 150}, {84, 17, 35, 32}, {89, 187, 182, 7}, {89, 187, 182, 31}, {176, 113, 72, 153}, {176, 113, 72, 167}, {192, 96, 203, 150}, {199, 115, 119, 238}, {212, 102, 41, 4}}},
|
||||
{Region: models.CyberghostRegion("United States"), Group: models.CyberghostGroup("Premium UDP USA"), IPs: []net.IP{{23, 19, 68, 56}, {23, 82, 78, 29}, {23, 105, 191, 36}, {23, 105, 191, 51}, {84, 17, 35, 8}, {89, 187, 171, 138}, {108, 62, 96, 33}, {176, 113, 72, 151}, {192, 96, 203, 154}, {199, 115, 117, 70}}},
|
||||
{Region: models.CyberghostRegion("Venezuela"), Group: models.CyberghostGroup("Premium TCP Europe"), IPs: []net.IP{{45, 133, 89, 6}, {45, 133, 89, 9}, {45, 133, 89, 11}, {45, 133, 89, 15}, {45, 133, 89, 17}, {45, 133, 89, 18}, {45, 133, 89, 22}, {45, 133, 89, 24}, {45, 133, 89, 26}, {45, 133, 89, 29}}},
|
||||
{Region: models.CyberghostRegion("Venezuela"), Group: models.CyberghostGroup("Premium UDP Europe"), IPs: []net.IP{{45, 133, 89, 8}, {45, 133, 89, 9}, {45, 133, 89, 15}, {45, 133, 89, 17}, {45, 133, 89, 21}, {45, 133, 89, 22}, {45, 133, 89, 25}, {45, 133, 89, 26}, {45, 133, 89, 27}, {45, 133, 89, 29}}},
|
||||
{Region: models.CyberghostRegion("Vietnam"), Group: models.CyberghostGroup("Premium TCP Asia"), IPs: []net.IP{{45, 117, 79, 118}, {45, 117, 79, 123}, {45, 117, 79, 124}, {45, 117, 79, 125}, {103, 238, 214, 131}, {103, 238, 214, 134}, {103, 238, 214, 135}, {103, 238, 214, 136}, {103, 238, 214, 137}, {103, 238, 214, 140}}},
|
||||
{Region: models.CyberghostRegion("Vietnam"), Group: models.CyberghostGroup("Premium UDP Asia"), IPs: []net.IP{{45, 117, 79, 114}, {45, 117, 79, 116}, {45, 117, 79, 117}, {45, 117, 79, 118}, {45, 117, 79, 123}, {103, 238, 214, 134}, {103, 238, 214, 135}, {103, 238, 214, 136}, {103, 238, 214, 137}, {103, 238, 214, 140}}},
|
||||
{Region: "Albania", Group: "Premium TCP Europe", IPs: []net.IP{{31, 171, 152, 99}, {31, 171, 152, 100}, {31, 171, 152, 102}, {31, 171, 152, 105}, {31, 171, 152, 107}, {31, 171, 152, 109}, {31, 171, 152, 133}, {31, 171, 152, 135}, {31, 171, 152, 136}, {31, 171, 152, 139}}},
|
||||
{Region: "Albania", Group: "Premium UDP Europe", IPs: []net.IP{{31, 171, 152, 99}, {31, 171, 152, 101}, {31, 171, 152, 103}, {31, 171, 152, 105}, {31, 171, 152, 106}, {31, 171, 152, 133}, {31, 171, 152, 135}, {31, 171, 152, 137}, {31, 171, 152, 138}, {31, 171, 152, 139}}},
|
||||
{Region: "Algeria", Group: "Premium TCP Europe", IPs: []net.IP{{45, 133, 91, 7}, {45, 133, 91, 9}, {45, 133, 91, 12}, {45, 133, 91, 15}, {45, 133, 91, 17}, {45, 133, 91, 18}, {45, 133, 91, 20}, {45, 133, 91, 23}, {45, 133, 91, 24}, {45, 133, 91, 26}}},
|
||||
{Region: "Algeria", Group: "Premium UDP Europe", IPs: []net.IP{{45, 133, 91, 7}, {45, 133, 91, 10}, {45, 133, 91, 11}, {45, 133, 91, 15}, {45, 133, 91, 17}, {45, 133, 91, 18}, {45, 133, 91, 21}, {45, 133, 91, 25}, {45, 133, 91, 26}, {45, 133, 91, 29}}},
|
||||
{Region: "Andorra", Group: "Premium TCP Europe", IPs: []net.IP{{45, 139, 49, 10}, {45, 139, 49, 14}, {45, 139, 49, 15}, {45, 139, 49, 16}, {45, 139, 49, 17}, {45, 139, 49, 18}, {45, 139, 49, 19}, {45, 139, 49, 23}, {45, 139, 49, 25}, {45, 139, 49, 28}}},
|
||||
{Region: "Andorra", Group: "Premium UDP Europe", IPs: []net.IP{{45, 139, 49, 7}, {45, 139, 49, 9}, {45, 139, 49, 10}, {45, 139, 49, 12}, {45, 139, 49, 15}, {45, 139, 49, 16}, {45, 139, 49, 17}, {45, 139, 49, 25}, {45, 139, 49, 27}, {45, 139, 49, 28}}},
|
||||
{Region: "Argentina", Group: "Premium TCP USA", IPs: []net.IP{{190, 106, 130, 16}, {190, 106, 130, 17}, {190, 106, 130, 20}, {190, 106, 130, 22}, {190, 106, 130, 23}, {190, 106, 130, 34}, {190, 106, 130, 37}, {190, 106, 130, 38}, {190, 106, 130, 44}, {190, 106, 130, 45}}},
|
||||
{Region: "Argentina", Group: "Premium UDP USA", IPs: []net.IP{{190, 106, 130, 15}, {190, 106, 130, 16}, {190, 106, 130, 18}, {190, 106, 130, 19}, {190, 106, 130, 20}, {190, 106, 130, 34}, {190, 106, 130, 36}, {190, 106, 130, 37}, {190, 106, 130, 43}, {190, 106, 130, 52}}},
|
||||
{Region: "Armenia", Group: "Premium TCP Europe", IPs: []net.IP{{45, 139, 50, 10}, {45, 139, 50, 12}, {45, 139, 50, 14}, {45, 139, 50, 18}, {45, 139, 50, 19}, {45, 139, 50, 20}, {45, 139, 50, 21}, {45, 139, 50, 26}, {45, 139, 50, 27}, {45, 139, 50, 29}}},
|
||||
{Region: "Armenia", Group: "Premium UDP Europe", IPs: []net.IP{{45, 139, 50, 8}, {45, 139, 50, 10}, {45, 139, 50, 11}, {45, 139, 50, 14}, {45, 139, 50, 18}, {45, 139, 50, 20}, {45, 139, 50, 24}, {45, 139, 50, 26}, {45, 139, 50, 27}, {45, 139, 50, 29}}},
|
||||
{Region: "Australia", Group: "Premium TCP Asia", IPs: []net.IP{{27, 50, 79, 3}, {27, 50, 79, 4}, {27, 50, 79, 5}, {27, 50, 79, 6}, {27, 50, 79, 9}, {27, 50, 79, 12}, {27, 50, 79, 14}, {103, 13, 101, 171}, {202, 130, 33, 114}, {202, 130, 33, 118}}},
|
||||
{Region: "Australia", Group: "Premium UDP Asia", IPs: []net.IP{{27, 50, 79, 3}, {27, 50, 79, 6}, {27, 50, 79, 9}, {27, 50, 79, 10}, {27, 50, 79, 11}, {27, 50, 79, 13}, {103, 13, 101, 174}, {202, 130, 33, 114}, {202, 130, 33, 117}, {202, 130, 33, 118}}},
|
||||
{Region: "Austria", Group: "Premium TCP Europe", IPs: []net.IP{{89, 187, 168, 133}, {89, 187, 168, 144}, {89, 187, 168, 150}, {89, 187, 168, 151}, {89, 187, 168, 162}, {89, 187, 168, 163}, {89, 187, 168, 164}, {89, 187, 168, 167}, {89, 187, 168, 178}, {89, 187, 168, 182}}},
|
||||
{Region: "Austria", Group: "Premium UDP Europe", IPs: []net.IP{{89, 187, 168, 138}, {89, 187, 168, 139}, {89, 187, 168, 149}, {89, 187, 168, 150}, {89, 187, 168, 161}, {89, 187, 168, 165}, {89, 187, 168, 167}, {89, 187, 168, 168}, {89, 187, 168, 174}, {89, 187, 168, 182}}},
|
||||
{Region: "Bahamas", Group: "Premium TCP USA", IPs: []net.IP{{45, 132, 143, 8}, {45, 132, 143, 10}, {45, 132, 143, 11}, {45, 132, 143, 19}, {45, 132, 143, 24}, {45, 132, 143, 28}, {45, 132, 143, 31}, {45, 132, 143, 42}, {45, 132, 143, 43}, {45, 132, 143, 44}}},
|
||||
{Region: "Bahamas", Group: "Premium UDP USA", IPs: []net.IP{{45, 132, 143, 1}, {45, 132, 143, 2}, {45, 132, 143, 3}, {45, 132, 143, 5}, {45, 132, 143, 7}, {45, 132, 143, 18}, {45, 132, 143, 23}, {45, 132, 143, 30}, {45, 132, 143, 32}, {45, 132, 143, 48}}},
|
||||
{Region: "Bangladesh", Group: "Premium TCP Asia", IPs: []net.IP{{45, 132, 142, 3}, {45, 132, 142, 8}, {45, 132, 142, 12}, {45, 132, 142, 20}, {45, 132, 142, 22}, {45, 132, 142, 26}, {45, 132, 142, 27}, {45, 132, 142, 37}, {45, 132, 142, 39}, {45, 132, 142, 42}}},
|
||||
{Region: "Bangladesh", Group: "Premium UDP Asia", IPs: []net.IP{{45, 132, 142, 6}, {45, 132, 142, 8}, {45, 132, 142, 13}, {45, 132, 142, 18}, {45, 132, 142, 33}, {45, 132, 142, 35}, {45, 132, 142, 38}, {45, 132, 142, 41}, {45, 132, 142, 42}, {45, 132, 142, 45}}},
|
||||
{Region: "Belarus", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 194, 3}, {45, 132, 194, 4}, {45, 132, 194, 26}, {45, 132, 194, 28}, {45, 132, 194, 34}, {45, 132, 194, 38}, {45, 132, 194, 39}, {45, 132, 194, 42}, {45, 132, 194, 44}, {45, 132, 194, 48}}},
|
||||
{Region: "Belarus", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 194, 4}, {45, 132, 194, 5}, {45, 132, 194, 9}, {45, 132, 194, 10}, {45, 132, 194, 20}, {45, 132, 194, 25}, {45, 132, 194, 29}, {45, 132, 194, 31}, {45, 132, 194, 40}, {45, 132, 194, 45}}},
|
||||
{Region: "Belgium", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 143, 52}, {37, 120, 143, 55}, {37, 120, 143, 58}, {185, 210, 217, 10}, {185, 210, 217, 54}, {185, 210, 217, 244}, {185, 210, 217, 251}, {185, 232, 21, 119}, {193, 9, 114, 228}, {193, 9, 114, 230}}},
|
||||
{Region: "Belgium", Group: "Premium UDP Europe", IPs: []net.IP{{5, 253, 205, 22}, {5, 253, 205, 23}, {37, 120, 143, 165}, {185, 210, 217, 14}, {185, 210, 217, 248}, {185, 210, 217, 254}, {193, 9, 114, 212}, {193, 9, 114, 213}, {193, 9, 114, 219}, {193, 9, 114, 228}}},
|
||||
{Region: "Bosnia and Herzegovina", Group: "Premium TCP Europe", IPs: []net.IP{{185, 99, 3, 57}, {185, 99, 3, 58}, {185, 99, 3, 72}, {185, 99, 3, 73}, {185, 99, 3, 74}, {185, 99, 3, 130}, {185, 99, 3, 131}, {185, 99, 3, 134}, {185, 99, 3, 135}, {185, 99, 3, 136}}},
|
||||
{Region: "Bosnia and Herzegovina", Group: "Premium UDP Europe", IPs: []net.IP{{185, 99, 3, 57}, {185, 99, 3, 58}, {185, 99, 3, 72}, {185, 99, 3, 73}, {185, 99, 3, 74}, {185, 99, 3, 130}, {185, 99, 3, 131}, {185, 99, 3, 134}, {185, 99, 3, 135}, {185, 99, 3, 136}}},
|
||||
{Region: "Brazil", Group: "Premium TCP USA", IPs: []net.IP{{45, 231, 207, 65}, {45, 231, 207, 67}, {45, 231, 207, 68}, {45, 231, 207, 69}, {45, 231, 207, 75}, {177, 67, 81, 170}, {181, 41, 203, 98}, {181, 41, 203, 100}, {181, 41, 203, 102}, {181, 41, 203, 110}}},
|
||||
{Region: "Brazil", Group: "Premium UDP USA", IPs: []net.IP{{45, 231, 207, 77}, {177, 67, 81, 163}, {177, 67, 81, 164}, {177, 67, 81, 165}, {177, 67, 81, 167}, {177, 67, 81, 170}, {177, 67, 81, 173}, {177, 67, 81, 174}, {181, 41, 203, 103}, {181, 41, 203, 104}}},
|
||||
{Region: "Bulgaria", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 152, 99}, {37, 120, 152, 102}, {37, 120, 152, 103}, {37, 120, 152, 104}, {37, 120, 152, 105}, {37, 120, 152, 106}, {37, 120, 152, 107}, {37, 120, 152, 108}, {37, 120, 152, 109}, {37, 120, 152, 110}}},
|
||||
{Region: "Bulgaria", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 152, 99}, {37, 120, 152, 100}, {37, 120, 152, 101}, {37, 120, 152, 103}, {37, 120, 152, 104}, {37, 120, 152, 105}, {37, 120, 152, 107}, {37, 120, 152, 108}, {37, 120, 152, 109}, {37, 120, 152, 110}}},
|
||||
{Region: "Cambodia", Group: "Premium TCP Asia", IPs: []net.IP{{188, 215, 235, 36}, {188, 215, 235, 38}, {188, 215, 235, 39}, {188, 215, 235, 40}, {188, 215, 235, 43}, {188, 215, 235, 46}, {188, 215, 235, 47}, {188, 215, 235, 48}, {188, 215, 235, 51}, {188, 215, 235, 54}}},
|
||||
{Region: "Cambodia", Group: "Premium UDP Asia", IPs: []net.IP{{188, 215, 235, 35}, {188, 215, 235, 36}, {188, 215, 235, 37}, {188, 215, 235, 38}, {188, 215, 235, 45}, {188, 215, 235, 46}, {188, 215, 235, 52}, {188, 215, 235, 53}, {188, 215, 235, 55}, {188, 215, 235, 58}}},
|
||||
{Region: "Canada", Group: "Premium TCP USA", IPs: []net.IP{{37, 120, 205, 8}, {37, 120, 205, 28}, {104, 245, 145, 163}, {104, 245, 146, 38}, {104, 245, 146, 101}, {176, 113, 74, 44}, {176, 113, 74, 52}, {176, 113, 74, 67}, {176, 113, 74, 126}, {176, 113, 74, 217}}},
|
||||
{Region: "Canada", Group: "Premium UDP USA", IPs: []net.IP{{37, 120, 205, 40}, {54, 39, 11, 194}, {104, 245, 145, 164}, {104, 245, 146, 41}, {139, 28, 218, 86}, {139, 28, 218, 87}, {176, 113, 74, 19}, {176, 113, 74, 25}, {176, 113, 74, 30}, {176, 113, 74, 195}}},
|
||||
{Region: "Chile", Group: "Premium TCP USA", IPs: []net.IP{{190, 105, 239, 129}, {190, 105, 239, 130}, {190, 105, 239, 131}, {190, 105, 239, 132}, {190, 105, 239, 133}, {190, 105, 239, 134}, {190, 105, 239, 135}, {190, 105, 239, 136}, {190, 105, 239, 137}, {190, 105, 239, 138}}},
|
||||
{Region: "Chile", Group: "Premium UDP USA", IPs: []net.IP{{190, 105, 239, 129}, {190, 105, 239, 130}, {190, 105, 239, 131}, {190, 105, 239, 132}, {190, 105, 239, 133}, {190, 105, 239, 134}, {190, 105, 239, 135}, {190, 105, 239, 136}, {190, 105, 239, 137}, {190, 105, 239, 138}}},
|
||||
{Region: "China", Group: "Premium TCP Asia", IPs: []net.IP{{45, 132, 193, 2}, {45, 132, 193, 3}, {45, 132, 193, 9}, {45, 132, 193, 10}, {45, 132, 193, 12}, {45, 132, 193, 13}, {45, 132, 193, 32}, {45, 132, 193, 36}, {45, 132, 193, 43}, {45, 132, 193, 45}}},
|
||||
{Region: "China", Group: "Premium UDP Asia", IPs: []net.IP{{45, 132, 193, 2}, {45, 132, 193, 3}, {45, 132, 193, 4}, {45, 132, 193, 14}, {45, 132, 193, 19}, {45, 132, 193, 22}, {45, 132, 193, 30}, {45, 132, 193, 35}, {45, 132, 193, 36}, {45, 132, 193, 42}}},
|
||||
{Region: "Colombia", Group: "Premium TCP USA", IPs: []net.IP{{190, 105, 229, 19}, {190, 105, 229, 20}, {190, 105, 229, 21}, {190, 105, 229, 22}}},
|
||||
{Region: "Colombia", Group: "Premium UDP USA", IPs: []net.IP{{190, 105, 229, 19}, {190, 105, 229, 20}, {190, 105, 229, 21}, {190, 105, 229, 22}}},
|
||||
{Region: "Costa Rica", Group: "Premium TCP USA", IPs: []net.IP{{143, 202, 160, 67}, {143, 202, 160, 69}, {143, 202, 160, 70}, {143, 202, 160, 72}, {143, 202, 160, 73}, {143, 202, 160, 74}, {143, 202, 160, 75}, {143, 202, 160, 76}, {143, 202, 160, 77}, {143, 202, 160, 78}}},
|
||||
{Region: "Costa Rica", Group: "Premium UDP USA", IPs: []net.IP{{143, 202, 160, 67}, {143, 202, 160, 68}, {143, 202, 160, 69}, {143, 202, 160, 70}, {143, 202, 160, 71}, {143, 202, 160, 73}, {143, 202, 160, 74}, {143, 202, 160, 75}, {143, 202, 160, 76}, {143, 202, 160, 78}}},
|
||||
{Region: "Cyprus", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 137, 8}, {45, 132, 137, 11}, {45, 132, 137, 12}, {45, 132, 137, 15}, {45, 132, 137, 17}, {45, 132, 137, 18}, {45, 132, 137, 19}, {45, 132, 137, 23}, {45, 132, 137, 26}, {45, 132, 137, 28}}},
|
||||
{Region: "Cyprus", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 137, 8}, {45, 132, 137, 10}, {45, 132, 137, 16}, {45, 132, 137, 19}, {45, 132, 137, 20}, {45, 132, 137, 21}, {45, 132, 137, 22}, {45, 132, 137, 23}, {45, 132, 137, 25}, {45, 132, 137, 28}}},
|
||||
{Region: "Czech Republic", Group: "Premium TCP Europe", IPs: []net.IP{{195, 181, 160, 66}, {195, 181, 160, 72}, {195, 181, 161, 7}, {195, 181, 161, 9}, {195, 181, 161, 10}, {195, 181, 161, 11}, {195, 181, 161, 14}, {195, 181, 161, 17}, {195, 181, 161, 23}, {195, 181, 161, 25}}},
|
||||
{Region: "Czech Republic", Group: "Premium UDP Europe", IPs: []net.IP{{185, 216, 35, 231}, {185, 216, 35, 232}, {185, 216, 35, 235}, {195, 181, 160, 75}, {195, 181, 161, 2}, {195, 181, 161, 8}, {195, 181, 161, 15}, {195, 181, 161, 16}, {195, 181, 161, 23}, {195, 181, 161, 25}}},
|
||||
{Region: "Denmark", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 145, 93}, {37, 120, 194, 39}, {37, 120, 194, 41}, {37, 120, 194, 53}, {95, 174, 65, 166}, {95, 174, 65, 167}, {95, 174, 65, 174}, {185, 206, 224, 230}, {185, 206, 224, 235}, {185, 206, 224, 253}}},
|
||||
{Region: "Denmark", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 145, 84}, {37, 120, 145, 88}, {37, 120, 194, 38}, {37, 120, 194, 58}, {95, 174, 65, 163}, {95, 174, 65, 165}, {185, 206, 224, 227}, {185, 206, 224, 243}, {185, 206, 224, 245}, {185, 206, 224, 253}}},
|
||||
{Region: "Egypt", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 139, 7}, {45, 132, 139, 22}, {45, 132, 139, 24}, {45, 132, 139, 27}, {45, 132, 139, 28}, {45, 132, 139, 29}, {188, 214, 122, 36}, {188, 214, 122, 41}, {188, 214, 122, 52}, {188, 214, 122, 56}}},
|
||||
{Region: "Egypt", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 139, 7}, {45, 132, 139, 17}, {45, 132, 139, 18}, {45, 132, 139, 22}, {45, 132, 139, 23}, {188, 214, 122, 41}, {188, 214, 122, 48}, {188, 214, 122, 49}, {188, 214, 122, 51}, {188, 214, 122, 61}}},
|
||||
{Region: "Estonia", Group: "Premium TCP Europe", IPs: []net.IP{{77, 247, 111, 6}, {77, 247, 111, 11}, {77, 247, 111, 52}, {77, 247, 111, 53}, {77, 247, 111, 55}, {77, 247, 111, 56}, {77, 247, 111, 57}, {77, 247, 111, 60}, {77, 247, 111, 61}, {77, 247, 111, 62}}},
|
||||
{Region: "Estonia", Group: "Premium UDP Europe", IPs: []net.IP{{77, 247, 111, 3}, {77, 247, 111, 4}, {77, 247, 111, 5}, {77, 247, 111, 7}, {77, 247, 111, 11}, {77, 247, 111, 12}, {77, 247, 111, 52}, {77, 247, 111, 53}, {77, 247, 111, 55}, {77, 247, 111, 59}}},
|
||||
{Region: "Finland", Group: "Premium TCP Europe", IPs: []net.IP{{194, 34, 133, 171}, {194, 34, 133, 172}, {194, 34, 133, 176}, {194, 34, 133, 179}, {194, 34, 133, 180}, {194, 34, 133, 195}, {194, 34, 133, 196}, {194, 34, 133, 204}, {194, 34, 133, 207}, {194, 34, 133, 208}}},
|
||||
{Region: "Finland", Group: "Premium UDP Europe", IPs: []net.IP{{194, 34, 133, 163}, {194, 34, 133, 164}, {194, 34, 133, 167}, {194, 34, 133, 178}, {194, 34, 133, 192}, {194, 34, 133, 201}, {194, 34, 133, 205}, {194, 34, 133, 206}, {194, 34, 133, 208}, {194, 34, 133, 214}}},
|
||||
{Region: "France", Group: "Premium TCP Europe", IPs: []net.IP{{84, 17, 60, 21}, {84, 17, 60, 33}, {84, 17, 60, 89}, {84, 17, 60, 92}, {84, 17, 60, 114}, {84, 17, 61, 23}, {84, 17, 61, 43}, {84, 17, 61, 111}, {84, 17, 61, 235}, {151, 106, 8, 36}}},
|
||||
{Region: "France", Group: "Premium UDP Europe", IPs: []net.IP{{84, 17, 60, 8}, {84, 17, 60, 54}, {84, 17, 60, 161}, {84, 17, 60, 188}, {84, 17, 61, 32}, {84, 17, 61, 101}, {84, 17, 61, 163}, {84, 17, 61, 187}, {84, 17, 61, 213}, {151, 106, 8, 46}}},
|
||||
{Region: "Georgia", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 138, 7}, {45, 132, 138, 8}, {45, 132, 138, 9}, {45, 132, 138, 12}, {45, 132, 138, 14}, {45, 132, 138, 18}, {45, 132, 138, 19}, {45, 132, 138, 20}, {45, 132, 138, 23}, {45, 132, 138, 27}}},
|
||||
{Region: "Georgia", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 138, 7}, {45, 132, 138, 8}, {45, 132, 138, 9}, {45, 132, 138, 10}, {45, 132, 138, 17}, {45, 132, 138, 18}, {45, 132, 138, 25}, {45, 132, 138, 26}, {45, 132, 138, 27}, {45, 132, 138, 28}}},
|
||||
{Region: "Germany", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 217, 110}, {84, 17, 48, 75}, {84, 17, 48, 100}, {84, 17, 48, 182}, {84, 17, 49, 129}, {154, 28, 188, 50}, {154, 28, 188, 128}, {178, 162, 208, 155}, {178, 162, 209, 72}, {178, 162, 216, 49}}},
|
||||
{Region: "Germany", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 217, 5}, {37, 120, 217, 27}, {84, 17, 48, 20}, {84, 17, 48, 64}, {84, 17, 48, 68}, {84, 17, 48, 182}, {84, 17, 49, 141}, {84, 17, 49, 144}, {154, 28, 188, 90}, {154, 28, 188, 143}}},
|
||||
{Region: "Greece", Group: "Premium TCP Europe", IPs: []net.IP{{154, 57, 3, 130}, {154, 57, 3, 132}, {154, 57, 3, 135}, {154, 57, 3, 138}, {154, 57, 3, 140}, {188, 123, 126, 168}, {188, 123, 126, 170}, {188, 123, 126, 176}, {188, 123, 126, 177}, {188, 123, 126, 178}}},
|
||||
{Region: "Greece", Group: "Premium UDP Europe", IPs: []net.IP{{154, 57, 3, 130}, {154, 57, 3, 132}, {154, 57, 3, 133}, {154, 57, 3, 137}, {188, 123, 126, 167}, {188, 123, 126, 170}, {188, 123, 126, 172}, {188, 123, 126, 173}, {188, 123, 126, 174}, {188, 123, 126, 177}}},
|
||||
{Region: "Greenland", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 209, 8}, {45, 131, 209, 9}, {45, 131, 209, 12}, {45, 131, 209, 16}, {45, 131, 209, 18}, {45, 131, 209, 20}, {45, 131, 209, 22}, {45, 131, 209, 23}, {45, 131, 209, 26}, {45, 131, 209, 27}}},
|
||||
{Region: "Greenland", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 209, 6}, {45, 131, 209, 11}, {45, 131, 209, 19}, {45, 131, 209, 20}, {45, 131, 209, 21}, {45, 131, 209, 23}, {45, 131, 209, 26}, {45, 131, 209, 27}, {45, 131, 209, 28}, {45, 131, 209, 29}}},
|
||||
{Region: "Hong Kong", Group: "Premium TCP Asia", IPs: []net.IP{{84, 17, 56, 130}, {84, 17, 56, 136}, {84, 17, 56, 148}, {84, 17, 56, 149}, {84, 17, 56, 152}, {84, 17, 56, 172}, {84, 17, 56, 173}, {84, 17, 56, 175}, {84, 17, 56, 176}, {84, 17, 56, 181}}},
|
||||
{Region: "Hong Kong", Group: "Premium UDP Asia", IPs: []net.IP{{84, 17, 56, 133}, {84, 17, 56, 140}, {84, 17, 56, 146}, {84, 17, 56, 151}, {84, 17, 56, 162}, {84, 17, 56, 166}, {84, 17, 56, 172}, {84, 17, 56, 174}, {84, 17, 56, 176}, {84, 17, 56, 182}}},
|
||||
{Region: "Hungary", Group: "Premium TCP Europe", IPs: []net.IP{{185, 104, 187, 83}, {185, 104, 187, 85}, {185, 104, 187, 86}, {185, 104, 187, 92}, {185, 189, 114, 116}, {185, 189, 114, 119}, {185, 189, 114, 120}, {185, 189, 114, 121}, {185, 189, 114, 124}, {185, 189, 114, 125}}},
|
||||
{Region: "Hungary", Group: "Premium UDP Europe", IPs: []net.IP{{185, 104, 187, 83}, {185, 104, 187, 85}, {185, 104, 187, 93}, {185, 189, 114, 115}, {185, 189, 114, 118}, {185, 189, 114, 119}, {185, 189, 114, 120}, {185, 189, 114, 121}, {185, 189, 114, 123}, {185, 189, 114, 125}}},
|
||||
{Region: "Iceland", Group: "Premium TCP Europe", IPs: []net.IP{{213, 167, 139, 19}, {213, 167, 139, 20}, {213, 167, 139, 21}, {213, 167, 139, 22}, {213, 167, 139, 23}, {213, 167, 139, 24}, {213, 167, 139, 25}, {213, 167, 139, 26}, {213, 167, 139, 28}, {213, 167, 139, 30}}},
|
||||
{Region: "Iceland", Group: "Premium UDP Europe", IPs: []net.IP{{213, 167, 139, 19}, {213, 167, 139, 21}, {213, 167, 139, 22}, {213, 167, 139, 24}, {213, 167, 139, 25}, {213, 167, 139, 26}, {213, 167, 139, 27}, {213, 167, 139, 28}, {213, 167, 139, 29}, {213, 167, 139, 30}}},
|
||||
{Region: "India", Group: "Premium TCP Europe", IPs: []net.IP{{43, 241, 71, 115}, {43, 241, 71, 118}, {43, 241, 71, 120}, {43, 241, 71, 122}, {43, 241, 71, 125}, {43, 241, 71, 147}, {43, 241, 71, 148}, {43, 241, 71, 149}, {43, 241, 71, 154}, {43, 241, 71, 156}}},
|
||||
{Region: "India", Group: "Premium UDP Europe", IPs: []net.IP{{43, 241, 71, 116}, {43, 241, 71, 117}, {43, 241, 71, 118}, {43, 241, 71, 122}, {43, 241, 71, 125}, {43, 241, 71, 147}, {43, 241, 71, 148}, {43, 241, 71, 153}, {43, 241, 71, 155}, {43, 241, 71, 156}}},
|
||||
{Region: "Indonesia", Group: "Premium TCP Asia", IPs: []net.IP{{113, 20, 29, 243}, {113, 20, 29, 244}, {113, 20, 29, 246}, {113, 20, 29, 247}, {113, 20, 29, 248}, {113, 20, 29, 249}, {113, 20, 29, 250}, {113, 20, 29, 251}, {113, 20, 29, 252}, {113, 20, 29, 254}}},
|
||||
{Region: "Indonesia", Group: "Premium UDP Asia", IPs: []net.IP{{113, 20, 29, 243}, {113, 20, 29, 245}, {113, 20, 29, 246}, {113, 20, 29, 247}, {113, 20, 29, 248}, {113, 20, 29, 249}, {113, 20, 29, 250}, {113, 20, 29, 251}, {113, 20, 29, 252}, {113, 20, 29, 253}}},
|
||||
{Region: "Iran", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 4, 10}, {45, 131, 4, 16}, {45, 131, 4, 17}, {45, 131, 4, 18}, {45, 131, 4, 20}, {45, 131, 4, 21}, {45, 131, 4, 22}, {45, 131, 4, 24}, {45, 131, 4, 25}, {45, 131, 4, 28}}},
|
||||
{Region: "Iran", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 4, 6}, {45, 131, 4, 8}, {45, 131, 4, 12}, {45, 131, 4, 14}, {45, 131, 4, 15}, {45, 131, 4, 20}, {45, 131, 4, 23}, {45, 131, 4, 24}, {45, 131, 4, 27}, {45, 131, 4, 28}}},
|
||||
{Region: "Ireland", Group: "Premium TCP Europe", IPs: []net.IP{{84, 247, 48, 3}, {84, 247, 48, 4}, {84, 247, 48, 5}, {84, 247, 48, 8}, {84, 247, 48, 9}, {84, 247, 48, 10}, {84, 247, 48, 11}, {84, 247, 48, 12}, {84, 247, 48, 19}, {84, 247, 48, 21}}},
|
||||
{Region: "Ireland", Group: "Premium UDP Europe", IPs: []net.IP{{84, 247, 48, 3}, {84, 247, 48, 13}, {84, 247, 48, 14}, {84, 247, 48, 20}, {84, 247, 48, 21}, {84, 247, 48, 23}, {84, 247, 48, 24}, {84, 247, 48, 25}, {84, 247, 48, 26}, {84, 247, 48, 27}}},
|
||||
{Region: "Isle of Man", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 140, 7}, {45, 132, 140, 8}, {45, 132, 140, 10}, {45, 132, 140, 11}, {45, 132, 140, 15}, {45, 132, 140, 17}, {45, 132, 140, 18}, {45, 132, 140, 19}, {45, 132, 140, 27}, {45, 132, 140, 28}}},
|
||||
{Region: "Isle of Man", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 140, 7}, {45, 132, 140, 9}, {45, 132, 140, 10}, {45, 132, 140, 16}, {45, 132, 140, 19}, {45, 132, 140, 20}, {45, 132, 140, 21}, {45, 132, 140, 25}, {45, 132, 140, 26}, {45, 132, 140, 28}}},
|
||||
{Region: "Israel", Group: "Premium TCP Europe", IPs: []net.IP{{160, 116, 0, 163}, {160, 116, 0, 164}, {160, 116, 0, 166}, {160, 116, 0, 167}, {160, 116, 0, 169}, {160, 116, 0, 170}, {160, 116, 0, 171}, {160, 116, 0, 172}, {160, 116, 0, 173}, {160, 116, 0, 174}}},
|
||||
{Region: "Israel", Group: "Premium UDP Europe", IPs: []net.IP{{160, 116, 0, 163}, {160, 116, 0, 165}, {160, 116, 0, 166}, {160, 116, 0, 167}, {160, 116, 0, 168}, {160, 116, 0, 169}, {160, 116, 0, 170}, {160, 116, 0, 172}, {160, 116, 0, 173}, {160, 116, 0, 174}}},
|
||||
{Region: "Italy", Group: "Premium TCP Europe", IPs: []net.IP{{84, 17, 58, 11}, {84, 17, 58, 19}, {87, 101, 94, 70}, {87, 101, 94, 116}, {185, 217, 71, 133}, {185, 217, 71, 137}, {212, 102, 55, 100}, {212, 102, 55, 123}, {212, 102, 55, 139}, {212, 102, 55, 184}}},
|
||||
{Region: "Italy", Group: "Premium UDP Europe", IPs: []net.IP{{84, 17, 58, 7}, {84, 17, 58, 100}, {84, 17, 58, 103}, {84, 17, 58, 104}, {87, 101, 94, 116}, {87, 101, 94, 124}, {185, 217, 71, 132}, {185, 217, 71, 134}, {212, 102, 55, 156}, {212, 102, 55, 167}}},
|
||||
{Region: "Japan", Group: "Premium TCP Asia", IPs: []net.IP{{156, 146, 35, 5}, {156, 146, 35, 8}, {156, 146, 35, 9}, {156, 146, 35, 17}, {156, 146, 35, 20}, {156, 146, 35, 33}, {156, 146, 35, 36}, {156, 146, 35, 42}, {156, 146, 35, 45}, {156, 146, 35, 50}}},
|
||||
{Region: "Japan", Group: "Premium UDP Asia", IPs: []net.IP{{156, 146, 35, 6}, {156, 146, 35, 8}, {156, 146, 35, 19}, {156, 146, 35, 22}, {156, 146, 35, 27}, {156, 146, 35, 32}, {156, 146, 35, 35}, {156, 146, 35, 37}, {156, 146, 35, 41}, {156, 146, 35, 47}}},
|
||||
{Region: "Kazakhstan", Group: "Premium TCP Europe", IPs: []net.IP{{45, 133, 88, 7}, {45, 133, 88, 11}, {45, 133, 88, 12}, {45, 133, 88, 13}, {45, 133, 88, 14}, {45, 133, 88, 20}, {45, 133, 88, 23}, {45, 133, 88, 24}, {45, 133, 88, 26}, {45, 133, 88, 28}}},
|
||||
{Region: "Kazakhstan", Group: "Premium UDP Europe", IPs: []net.IP{{45, 133, 88, 8}, {45, 133, 88, 12}, {45, 133, 88, 13}, {45, 133, 88, 15}, {45, 133, 88, 19}, {45, 133, 88, 20}, {45, 133, 88, 24}, {45, 133, 88, 25}, {45, 133, 88, 26}, {45, 133, 88, 28}}},
|
||||
{Region: "Kenya", Group: "Premium TCP Asia", IPs: []net.IP{{62, 12, 118, 195}, {62, 12, 118, 196}, {62, 12, 118, 197}, {62, 12, 118, 198}, {62, 12, 118, 199}, {62, 12, 118, 200}, {62, 12, 118, 201}, {62, 12, 118, 202}, {62, 12, 118, 203}, {62, 12, 118, 204}}},
|
||||
{Region: "Kenya", Group: "Premium UDP Asia", IPs: []net.IP{{62, 12, 118, 195}, {62, 12, 118, 196}, {62, 12, 118, 197}, {62, 12, 118, 198}, {62, 12, 118, 199}, {62, 12, 118, 200}, {62, 12, 118, 201}, {62, 12, 118, 202}, {62, 12, 118, 203}, {62, 12, 118, 204}}},
|
||||
{Region: "Korea", Group: "Premium TCP Asia", IPs: []net.IP{{27, 255, 75, 227}, {27, 255, 75, 229}, {27, 255, 75, 233}, {27, 255, 75, 234}, {27, 255, 75, 235}, {27, 255, 75, 236}, {27, 255, 75, 248}, {27, 255, 75, 249}, {27, 255, 75, 251}, {27, 255, 75, 254}}},
|
||||
{Region: "Korea", Group: "Premium UDP Asia", IPs: []net.IP{{27, 255, 75, 228}, {27, 255, 75, 229}, {27, 255, 75, 230}, {27, 255, 75, 231}, {27, 255, 75, 234}, {27, 255, 75, 235}, {27, 255, 75, 244}, {27, 255, 75, 245}, {27, 255, 75, 246}, {27, 255, 75, 247}}},
|
||||
{Region: "Latvia", Group: "Premium TCP Europe", IPs: []net.IP{{109, 248, 148, 244}, {109, 248, 148, 251}, {109, 248, 148, 252}, {109, 248, 148, 253}, {109, 248, 149, 19}, {109, 248, 149, 20}, {109, 248, 149, 21}, {109, 248, 149, 22}, {109, 248, 149, 24}, {109, 248, 149, 27}}},
|
||||
{Region: "Latvia", Group: "Premium UDP Europe", IPs: []net.IP{{109, 248, 148, 248}, {109, 248, 148, 252}, {109, 248, 148, 253}, {109, 248, 148, 254}, {109, 248, 149, 19}, {109, 248, 149, 20}, {109, 248, 149, 21}, {109, 248, 149, 24}, {109, 248, 149, 28}, {109, 248, 149, 29}}},
|
||||
{Region: "Liechtenstein", Group: "Premium TCP Europe", IPs: []net.IP{{45, 139, 48, 6}, {45, 139, 48, 7}, {45, 139, 48, 9}, {45, 139, 48, 16}, {45, 139, 48, 17}, {45, 139, 48, 19}, {45, 139, 48, 20}, {45, 139, 48, 22}, {45, 139, 48, 23}, {45, 139, 48, 27}}},
|
||||
{Region: "Liechtenstein", Group: "Premium UDP Europe", IPs: []net.IP{{45, 139, 48, 9}, {45, 139, 48, 12}, {45, 139, 48, 15}, {45, 139, 48, 16}, {45, 139, 48, 17}, {45, 139, 48, 18}, {45, 139, 48, 24}, {45, 139, 48, 26}, {45, 139, 48, 28}, {45, 139, 48, 29}}},
|
||||
{Region: "Lithuania", Group: "Premium TCP Europe", IPs: []net.IP{{85, 206, 162, 211}, {85, 206, 162, 213}, {85, 206, 162, 214}, {85, 206, 162, 216}, {85, 206, 162, 219}, {85, 206, 162, 220}, {85, 206, 165, 18}, {85, 206, 165, 20}, {85, 206, 165, 24}, {85, 206, 165, 25}}},
|
||||
{Region: "Lithuania", Group: "Premium UDP Europe", IPs: []net.IP{{85, 206, 162, 210}, {85, 206, 162, 211}, {85, 206, 162, 214}, {85, 206, 162, 215}, {85, 206, 162, 220}, {85, 206, 162, 221}, {85, 206, 162, 222}, {85, 206, 165, 18}, {85, 206, 165, 25}, {85, 206, 165, 26}}},
|
||||
{Region: "Luxembourg", Group: "Premium TCP Europe", IPs: []net.IP{{5, 253, 204, 5}, {5, 253, 204, 6}, {5, 253, 204, 9}, {5, 253, 204, 10}, {5, 253, 204, 12}, {5, 253, 204, 14}, {5, 253, 204, 20}, {5, 253, 204, 23}, {5, 253, 204, 29}, {5, 253, 204, 30}}},
|
||||
{Region: "Luxembourg", Group: "Premium UDP Europe", IPs: []net.IP{{5, 253, 204, 7}, {5, 253, 204, 11}, {5, 253, 204, 20}, {5, 253, 204, 22}, {5, 253, 204, 23}, {5, 253, 204, 26}, {5, 253, 204, 27}, {5, 253, 204, 28}, {5, 253, 204, 29}, {5, 253, 204, 30}}},
|
||||
{Region: "Macao", Group: "Premium TCP Asia", IPs: []net.IP{{45, 137, 197, 8}, {45, 137, 197, 9}, {45, 137, 197, 12}, {45, 137, 197, 14}, {45, 137, 197, 17}, {45, 137, 197, 33}, {45, 137, 197, 35}, {45, 137, 197, 42}, {45, 137, 197, 45}, {45, 137, 197, 47}}},
|
||||
{Region: "Macao", Group: "Premium UDP Asia", IPs: []net.IP{{45, 137, 197, 2}, {45, 137, 197, 7}, {45, 137, 197, 18}, {45, 137, 197, 19}, {45, 137, 197, 28}, {45, 137, 197, 30}, {45, 137, 197, 33}, {45, 137, 197, 35}, {45, 137, 197, 44}, {45, 137, 197, 47}}},
|
||||
{Region: "Macedonia", Group: "Premium TCP Europe", IPs: []net.IP{{185, 225, 28, 3}, {185, 225, 28, 4}, {185, 225, 28, 5}, {185, 225, 28, 6}, {185, 225, 28, 7}, {185, 225, 28, 8}, {185, 225, 28, 9}, {185, 225, 28, 10}, {185, 225, 28, 11}, {185, 225, 28, 12}}},
|
||||
{Region: "Macedonia", Group: "Premium UDP Europe", IPs: []net.IP{{185, 225, 28, 3}, {185, 225, 28, 4}, {185, 225, 28, 5}, {185, 225, 28, 6}, {185, 225, 28, 7}, {185, 225, 28, 8}, {185, 225, 28, 9}, {185, 225, 28, 10}, {185, 225, 28, 11}, {185, 225, 28, 12}}},
|
||||
{Region: "Malaysia", Group: "Premium TCP Asia", IPs: []net.IP{{139, 5, 177, 69}, {139, 5, 177, 70}, {139, 5, 177, 71}, {139, 5, 177, 72}, {139, 5, 177, 73}, {139, 5, 177, 74}, {139, 5, 177, 75}, {139, 5, 177, 76}, {139, 5, 177, 77}, {139, 5, 177, 78}}},
|
||||
{Region: "Malaysia", Group: "Premium UDP Asia", IPs: []net.IP{{139, 5, 177, 69}, {139, 5, 177, 70}, {139, 5, 177, 71}, {139, 5, 177, 72}, {139, 5, 177, 73}, {139, 5, 177, 74}, {139, 5, 177, 75}, {139, 5, 177, 76}, {139, 5, 177, 77}, {139, 5, 177, 78}}},
|
||||
{Region: "Malta", Group: "Premium TCP Europe", IPs: []net.IP{{45, 137, 198, 6}, {45, 137, 198, 8}, {45, 137, 198, 9}, {45, 137, 198, 11}, {45, 137, 198, 16}, {45, 137, 198, 18}, {45, 137, 198, 22}, {45, 137, 198, 23}, {45, 137, 198, 25}, {45, 137, 198, 27}}},
|
||||
{Region: "Malta", Group: "Premium UDP Europe", IPs: []net.IP{{45, 137, 198, 8}, {45, 137, 198, 10}, {45, 137, 198, 12}, {45, 137, 198, 13}, {45, 137, 198, 16}, {45, 137, 198, 17}, {45, 137, 198, 21}, {45, 137, 198, 23}, {45, 137, 198, 26}, {45, 137, 198, 28}}},
|
||||
{Region: "Mexico", Group: "Premium TCP USA", IPs: []net.IP{{45, 133, 180, 99}, {45, 133, 180, 106}, {45, 133, 180, 107}, {45, 133, 180, 108}, {45, 133, 180, 115}, {45, 133, 180, 118}, {45, 133, 180, 119}, {45, 133, 180, 121}, {45, 133, 180, 122}, {45, 133, 180, 123}}},
|
||||
{Region: "Mexico", Group: "Premium UDP USA", IPs: []net.IP{{45, 133, 180, 99}, {45, 133, 180, 101}, {45, 133, 180, 104}, {45, 133, 180, 105}, {45, 133, 180, 106}, {45, 133, 180, 115}, {45, 133, 180, 117}, {45, 133, 180, 118}, {45, 133, 180, 120}, {45, 133, 180, 121}}},
|
||||
{Region: "Moldova", Group: "Premium TCP Europe", IPs: []net.IP{{178, 175, 130, 243}, {178, 175, 130, 245}, {178, 175, 130, 250}, {178, 175, 130, 251}, {178, 175, 130, 253}, {178, 175, 130, 254}, {178, 175, 142, 131}, {178, 175, 142, 132}, {178, 175, 142, 133}, {178, 175, 142, 134}}},
|
||||
{Region: "Moldova", Group: "Premium UDP Europe", IPs: []net.IP{{178, 175, 130, 243}, {178, 175, 130, 244}, {178, 175, 130, 245}, {178, 175, 130, 246}, {178, 175, 130, 250}, {178, 175, 130, 251}, {178, 175, 130, 253}, {178, 175, 130, 254}, {178, 175, 142, 132}, {178, 175, 142, 133}}},
|
||||
{Region: "Monaco", Group: "Premium TCP Europe", IPs: []net.IP{{45, 137, 199, 7}, {45, 137, 199, 9}, {45, 137, 199, 11}, {45, 137, 199, 12}, {45, 137, 199, 14}, {45, 137, 199, 16}, {45, 137, 199, 20}, {45, 137, 199, 24}, {45, 137, 199, 25}, {45, 137, 199, 29}}},
|
||||
{Region: "Monaco", Group: "Premium UDP Europe", IPs: []net.IP{{45, 137, 199, 6}, {45, 137, 199, 7}, {45, 137, 199, 10}, {45, 137, 199, 16}, {45, 137, 199, 18}, {45, 137, 199, 22}, {45, 137, 199, 23}, {45, 137, 199, 24}, {45, 137, 199, 25}, {45, 137, 199, 27}}},
|
||||
{Region: "Mongolia", Group: "Premium TCP Asia", IPs: []net.IP{{45, 139, 51, 4}, {45, 139, 51, 13}, {45, 139, 51, 14}, {45, 139, 51, 17}, {45, 139, 51, 18}, {45, 139, 51, 22}, {45, 139, 51, 23}, {45, 139, 51, 32}, {45, 139, 51, 44}, {45, 139, 51, 48}}},
|
||||
{Region: "Mongolia", Group: "Premium UDP Asia", IPs: []net.IP{{45, 139, 51, 3}, {45, 139, 51, 6}, {45, 139, 51, 11}, {45, 139, 51, 12}, {45, 139, 51, 17}, {45, 139, 51, 20}, {45, 139, 51, 28}, {45, 139, 51, 30}, {45, 139, 51, 37}, {45, 139, 51, 41}}},
|
||||
{Region: "Montenegro", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 208, 6}, {45, 131, 208, 7}, {45, 131, 208, 8}, {45, 131, 208, 9}, {45, 131, 208, 10}, {45, 131, 208, 13}, {45, 131, 208, 14}, {45, 131, 208, 20}, {45, 131, 208, 24}, {45, 131, 208, 28}}},
|
||||
{Region: "Montenegro", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 208, 6}, {45, 131, 208, 8}, {45, 131, 208, 9}, {45, 131, 208, 12}, {45, 131, 208, 16}, {45, 131, 208, 20}, {45, 131, 208, 22}, {45, 131, 208, 24}, {45, 131, 208, 26}, {45, 131, 208, 28}}},
|
||||
{Region: "Morocco", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 211, 6}, {45, 131, 211, 9}, {45, 131, 211, 11}, {45, 131, 211, 13}, {45, 131, 211, 18}, {45, 131, 211, 21}, {45, 131, 211, 22}, {45, 131, 211, 23}, {45, 131, 211, 28}, {45, 131, 211, 29}}},
|
||||
{Region: "Morocco", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 211, 9}, {45, 131, 211, 10}, {45, 131, 211, 13}, {45, 131, 211, 18}, {45, 131, 211, 20}, {45, 131, 211, 21}, {45, 131, 211, 25}, {45, 131, 211, 26}, {45, 131, 211, 28}, {45, 131, 211, 29}}},
|
||||
{Region: "Netherlands", Group: "Premium TCP Europe", IPs: []net.IP{{84, 17, 47, 3}, {84, 17, 47, 20}, {84, 17, 47, 39}, {84, 17, 47, 42}, {84, 17, 47, 74}, {84, 17, 47, 111}, {139, 28, 217, 199}, {185, 132, 177, 136}, {190, 2, 149, 196}, {195, 181, 172, 69}}},
|
||||
{Region: "Netherlands", Group: "Premium UDP Europe", IPs: []net.IP{{84, 17, 47, 4}, {84, 17, 47, 8}, {84, 17, 47, 12}, {84, 17, 47, 38}, {84, 17, 47, 68}, {185, 132, 177, 235}, {190, 2, 149, 28}, {190, 2, 149, 30}, {190, 2, 149, 208}, {195, 181, 172, 79}}},
|
||||
{Region: "New Zealand", Group: "Premium TCP Asia", IPs: []net.IP{{103, 231, 91, 131}, {103, 231, 91, 132}, {103, 231, 91, 133}, {103, 231, 91, 134}, {103, 231, 91, 135}, {103, 231, 91, 136}, {103, 231, 91, 137}, {103, 231, 91, 138}, {103, 231, 91, 139}, {103, 231, 91, 140}}},
|
||||
{Region: "New Zealand", Group: "Premium UDP Asia", IPs: []net.IP{{103, 231, 91, 131}, {103, 231, 91, 132}, {103, 231, 91, 133}, {103, 231, 91, 134}, {103, 231, 91, 135}, {103, 231, 91, 136}, {103, 231, 91, 137}, {103, 231, 91, 138}, {103, 231, 91, 139}, {103, 231, 91, 140}}},
|
||||
{Region: "Nigeria", Group: "Premium TCP Europe", IPs: []net.IP{{45, 137, 196, 6}, {45, 137, 196, 10}, {45, 137, 196, 12}, {45, 137, 196, 13}, {45, 137, 196, 15}, {45, 137, 196, 16}, {45, 137, 196, 17}, {45, 137, 196, 20}, {45, 137, 196, 24}, {45, 137, 196, 29}}},
|
||||
{Region: "Nigeria", Group: "Premium UDP Europe", IPs: []net.IP{{45, 137, 196, 6}, {45, 137, 196, 7}, {45, 137, 196, 8}, {45, 137, 196, 9}, {45, 137, 196, 12}, {45, 137, 196, 13}, {45, 137, 196, 14}, {45, 137, 196, 20}, {45, 137, 196, 28}, {45, 137, 196, 29}}},
|
||||
{Region: "Norway", Group: "Premium TCP Europe", IPs: []net.IP{{45, 12, 223, 131}, {45, 12, 223, 135}, {45, 12, 223, 136}, {45, 12, 223, 138}, {185, 206, 225, 231}, {185, 206, 225, 233}, {185, 253, 97, 235}, {185, 253, 97, 236}, {185, 253, 97, 247}, {185, 253, 97, 253}}},
|
||||
{Region: "Norway", Group: "Premium UDP Europe", IPs: []net.IP{{45, 12, 223, 132}, {45, 12, 223, 137}, {45, 12, 223, 138}, {45, 12, 223, 141}, {185, 206, 225, 27}, {185, 206, 225, 30}, {185, 253, 97, 245}, {185, 253, 97, 246}, {185, 253, 97, 248}, {185, 253, 97, 249}}},
|
||||
{Region: "Pakistan", Group: "Premium TCP Europe", IPs: []net.IP{{103, 76, 3, 244}, {103, 76, 3, 245}, {103, 76, 3, 246}, {103, 76, 3, 247}, {103, 76, 3, 248}, {103, 76, 3, 249}, {103, 76, 3, 250}, {103, 76, 3, 251}, {103, 76, 3, 252}, {103, 76, 3, 253}}},
|
||||
{Region: "Pakistan", Group: "Premium UDP Europe", IPs: []net.IP{{103, 76, 3, 244}, {103, 76, 3, 245}, {103, 76, 3, 246}, {103, 76, 3, 247}, {103, 76, 3, 248}, {103, 76, 3, 249}, {103, 76, 3, 250}, {103, 76, 3, 251}, {103, 76, 3, 252}, {103, 76, 3, 253}}},
|
||||
{Region: "Panama", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 210, 9}, {45, 131, 210, 10}, {45, 131, 210, 14}, {45, 131, 210, 15}, {45, 131, 210, 16}, {45, 131, 210, 21}, {45, 131, 210, 22}, {45, 131, 210, 23}, {45, 131, 210, 24}, {45, 131, 210, 26}}},
|
||||
{Region: "Panama", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 210, 6}, {45, 131, 210, 8}, {45, 131, 210, 9}, {45, 131, 210, 12}, {45, 131, 210, 14}, {45, 131, 210, 18}, {45, 131, 210, 19}, {45, 131, 210, 25}, {45, 131, 210, 28}, {45, 131, 210, 29}}},
|
||||
{Region: "Philippines", Group: "Premium TCP Asia", IPs: []net.IP{{188, 214, 125, 39}, {188, 214, 125, 45}, {188, 214, 125, 47}, {188, 214, 125, 49}, {188, 214, 125, 50}, {188, 214, 125, 51}, {188, 214, 125, 53}, {188, 214, 125, 57}, {188, 214, 125, 58}, {188, 214, 125, 61}}},
|
||||
{Region: "Philippines", Group: "Premium UDP Asia", IPs: []net.IP{{188, 214, 125, 35}, {188, 214, 125, 36}, {188, 214, 125, 37}, {188, 214, 125, 48}, {188, 214, 125, 55}, {188, 214, 125, 56}, {188, 214, 125, 57}, {188, 214, 125, 58}, {188, 214, 125, 59}, {188, 214, 125, 62}}},
|
||||
{Region: "Poland", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 156, 11}, {37, 120, 156, 17}, {37, 120, 156, 23}, {37, 120, 156, 25}, {37, 120, 156, 26}, {51, 75, 56, 35}, {51, 75, 56, 37}, {51, 75, 56, 41}, {54, 37, 238, 36}, {54, 37, 238, 43}}},
|
||||
{Region: "Poland", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 156, 8}, {37, 120, 156, 10}, {37, 120, 156, 12}, {37, 120, 156, 18}, {37, 120, 156, 19}, {37, 120, 156, 24}, {51, 75, 56, 33}, {51, 75, 56, 40}, {51, 75, 56, 41}, {54, 37, 238, 33}}},
|
||||
{Region: "Portugal", Group: "Premium TCP Europe", IPs: []net.IP{{89, 26, 243, 47}, {89, 26, 243, 48}, {89, 26, 243, 50}, {89, 26, 243, 51}, {89, 26, 243, 54}, {89, 26, 243, 58}, {89, 26, 243, 60}, {185, 90, 57, 172}, {185, 90, 57, 176}, {185, 90, 57, 179}}},
|
||||
{Region: "Portugal", Group: "Premium UDP Europe", IPs: []net.IP{{89, 26, 243, 47}, {89, 26, 243, 50}, {89, 26, 243, 51}, {89, 26, 243, 53}, {89, 26, 243, 58}, {185, 90, 57, 173}, {185, 90, 57, 175}, {185, 90, 57, 176}, {185, 90, 57, 178}, {185, 90, 57, 179}}},
|
||||
{Region: "Qatar", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 7, 6}, {45, 131, 7, 9}, {45, 131, 7, 10}, {45, 131, 7, 13}, {45, 131, 7, 16}, {45, 131, 7, 17}, {45, 131, 7, 20}, {45, 131, 7, 22}, {45, 131, 7, 23}, {45, 131, 7, 28}}},
|
||||
{Region: "Qatar", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 7, 8}, {45, 131, 7, 9}, {45, 131, 7, 14}, {45, 131, 7, 15}, {45, 131, 7, 16}, {45, 131, 7, 17}, {45, 131, 7, 23}, {45, 131, 7, 27}, {45, 131, 7, 28}, {45, 131, 7, 29}}},
|
||||
{Region: "Romania", Group: "NoSpy TCP Europe", IPs: []net.IP{{85, 9, 20, 134}, {85, 9, 20, 135}, {85, 9, 20, 137}, {85, 9, 20, 138}, {85, 9, 20, 139}, {85, 9, 20, 147}, {85, 9, 20, 149}, {85, 9, 20, 154}, {85, 9, 20, 248}, {85, 9, 20, 249}}},
|
||||
{Region: "Romania", Group: "NoSpy UDP Europe", IPs: []net.IP{{85, 9, 20, 134}, {85, 9, 20, 138}, {85, 9, 20, 139}, {85, 9, 20, 144}, {85, 9, 20, 145}, {85, 9, 20, 147}, {85, 9, 20, 148}, {85, 9, 20, 151}, {85, 9, 20, 248}, {85, 9, 20, 249}}},
|
||||
{Region: "Romania", Group: "Premium TCP Europe", IPs: []net.IP{{193, 176, 84, 44}, {193, 176, 84, 49}, {193, 176, 84, 51}, {193, 176, 84, 52}, {193, 176, 84, 88}, {193, 176, 84, 121}, {193, 176, 84, 126}, {193, 176, 85, 72}, {193, 176, 85, 74}, {193, 176, 85, 101}}},
|
||||
{Region: "Romania", Group: "Premium UDP Europe", IPs: []net.IP{{193, 176, 84, 46}, {193, 176, 84, 47}, {193, 176, 84, 48}, {193, 176, 84, 49}, {193, 176, 84, 90}, {193, 176, 84, 125}, {193, 176, 85, 68}, {193, 176, 85, 72}, {193, 176, 85, 78}, {193, 176, 85, 91}}},
|
||||
{Region: "Russian Federation", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 192, 42}, {45, 132, 192, 43}, {45, 132, 192, 49}, {45, 132, 192, 60}, {45, 132, 192, 63}, {45, 132, 192, 66}, {45, 132, 192, 78}, {45, 132, 192, 80}, {45, 132, 192, 85}, {45, 132, 192, 96}}},
|
||||
{Region: "Russian Federation", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 192, 11}, {45, 132, 192, 15}, {45, 132, 192, 24}, {45, 132, 192, 32}, {45, 132, 192, 43}, {45, 132, 192, 49}, {45, 132, 192, 55}, {45, 132, 192, 63}, {45, 132, 192, 65}, {45, 132, 192, 95}}},
|
||||
{Region: "Saudi Arabia", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 6, 7}, {45, 131, 6, 10}, {45, 131, 6, 12}, {45, 131, 6, 13}, {45, 131, 6, 21}, {45, 131, 6, 23}, {45, 131, 6, 24}, {45, 131, 6, 25}, {45, 131, 6, 26}, {45, 131, 6, 28}}},
|
||||
{Region: "Saudi Arabia", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 6, 7}, {45, 131, 6, 9}, {45, 131, 6, 14}, {45, 131, 6, 15}, {45, 131, 6, 18}, {45, 131, 6, 19}, {45, 131, 6, 22}, {45, 131, 6, 24}, {45, 131, 6, 28}, {45, 131, 6, 29}}},
|
||||
{Region: "Serbia", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 193, 179}, {37, 120, 193, 181}, {37, 120, 193, 182}, {37, 120, 193, 183}, {37, 120, 193, 184}, {37, 120, 193, 186}, {37, 120, 193, 190}, {141, 98, 103, 37}, {141, 98, 103, 43}, {141, 98, 103, 46}}},
|
||||
{Region: "Serbia", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 193, 179}, {37, 120, 193, 182}, {37, 120, 193, 183}, {37, 120, 193, 188}, {37, 120, 193, 189}, {37, 120, 193, 190}, {141, 98, 103, 35}, {141, 98, 103, 40}, {141, 98, 103, 42}, {141, 98, 103, 46}}},
|
||||
{Region: "Singapore", Group: "Premium TCP Asia", IPs: []net.IP{{37, 120, 151, 55}, {37, 120, 151, 60}, {37, 120, 151, 131}, {37, 120, 151, 139}, {84, 17, 39, 168}, {84, 17, 39, 175}, {84, 17, 39, 176}, {84, 17, 39, 179}, {84, 17, 39, 182}, {84, 17, 39, 185}}},
|
||||
{Region: "Singapore", Group: "Premium UDP Asia", IPs: []net.IP{{37, 120, 151, 51}, {37, 120, 151, 57}, {37, 120, 151, 131}, {37, 120, 151, 132}, {37, 120, 151, 140}, {37, 120, 151, 141}, {84, 17, 39, 165}, {84, 17, 39, 169}, {84, 17, 39, 171}, {84, 17, 39, 180}}},
|
||||
{Region: "Slovakia", Group: "Premium TCP Europe", IPs: []net.IP{{185, 245, 85, 227}, {185, 245, 85, 228}, {185, 245, 85, 229}, {185, 245, 85, 230}, {185, 245, 85, 231}, {185, 245, 85, 232}, {185, 245, 85, 233}, {185, 245, 85, 234}, {185, 245, 85, 235}, {185, 245, 85, 236}}},
|
||||
{Region: "Slovakia", Group: "Premium UDP Europe", IPs: []net.IP{{185, 245, 85, 227}, {185, 245, 85, 228}, {185, 245, 85, 229}, {185, 245, 85, 230}, {185, 245, 85, 231}, {185, 245, 85, 232}, {185, 245, 85, 233}, {185, 245, 85, 234}, {185, 245, 85, 235}, {185, 245, 85, 236}}},
|
||||
{Region: "Slovenia", Group: "Premium TCP Europe", IPs: []net.IP{{146, 247, 25, 79}, {146, 247, 25, 80}, {146, 247, 25, 81}, {146, 247, 25, 83}, {146, 247, 25, 84}, {146, 247, 25, 85}, {146, 247, 25, 86}, {146, 247, 25, 87}, {146, 247, 25, 88}, {146, 247, 25, 90}}},
|
||||
{Region: "Slovenia", Group: "Premium UDP Europe", IPs: []net.IP{{146, 247, 25, 80}, {146, 247, 25, 81}, {146, 247, 25, 82}, {146, 247, 25, 83}, {146, 247, 25, 84}, {146, 247, 25, 85}, {146, 247, 25, 86}, {146, 247, 25, 87}, {146, 247, 25, 88}, {146, 247, 25, 89}}},
|
||||
{Region: "South Africa", Group: "Premium TCP Asia", IPs: []net.IP{{165, 73, 248, 211}, {165, 73, 248, 214}, {165, 73, 248, 222}, {165, 73, 248, 227}, {165, 73, 248, 229}, {165, 73, 248, 230}, {165, 73, 248, 231}, {165, 73, 248, 234}, {165, 73, 248, 236}, {165, 73, 248, 237}}},
|
||||
{Region: "South Africa", Group: "Premium TCP Europe", IPs: []net.IP{{197, 85, 7, 26}, {197, 85, 7, 27}, {197, 85, 7, 28}, {197, 85, 7, 29}, {197, 85, 7, 30}, {197, 85, 7, 31}, {197, 85, 7, 131}, {197, 85, 7, 132}, {197, 85, 7, 133}, {197, 85, 7, 134}}},
|
||||
{Region: "South Africa", Group: "Premium UDP Asia", IPs: []net.IP{{165, 73, 248, 212}, {165, 73, 248, 215}, {165, 73, 248, 217}, {165, 73, 248, 218}, {165, 73, 248, 219}, {165, 73, 248, 222}, {165, 73, 248, 227}, {165, 73, 248, 230}, {165, 73, 248, 234}, {165, 73, 248, 237}}},
|
||||
{Region: "South Africa", Group: "Premium UDP Europe", IPs: []net.IP{{197, 85, 7, 26}, {197, 85, 7, 27}, {197, 85, 7, 28}, {197, 85, 7, 29}, {197, 85, 7, 30}, {197, 85, 7, 31}, {197, 85, 7, 131}, {197, 85, 7, 132}, {197, 85, 7, 133}, {197, 85, 7, 134}}},
|
||||
{Region: "Spain", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 142, 163}, {37, 120, 142, 166}, {37, 120, 142, 167}, {84, 17, 62, 138}, {84, 17, 62, 141}, {84, 17, 62, 145}, {84, 17, 62, 147}, {84, 17, 62, 152}, {185, 93, 3, 113}, {185, 93, 182, 139}}},
|
||||
{Region: "Spain", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 142, 150}, {37, 120, 142, 157}, {37, 120, 142, 165}, {84, 17, 62, 139}, {84, 17, 62, 142}, {185, 93, 3, 109}, {185, 93, 3, 111}, {185, 93, 3, 113}, {185, 93, 182, 136}, {185, 93, 182, 138}}},
|
||||
{Region: "Sri Lanka", Group: "Premium TCP Europe", IPs: []net.IP{{45, 132, 136, 6}, {45, 132, 136, 7}, {45, 132, 136, 8}, {45, 132, 136, 12}, {45, 132, 136, 13}, {45, 132, 136, 17}, {45, 132, 136, 21}, {45, 132, 136, 22}, {45, 132, 136, 26}, {45, 132, 136, 27}}},
|
||||
{Region: "Sri Lanka", Group: "Premium UDP Europe", IPs: []net.IP{{45, 132, 136, 7}, {45, 132, 136, 9}, {45, 132, 136, 10}, {45, 132, 136, 11}, {45, 132, 136, 12}, {45, 132, 136, 15}, {45, 132, 136, 20}, {45, 132, 136, 21}, {45, 132, 136, 27}, {45, 132, 136, 29}}},
|
||||
{Region: "Sweden", Group: "Premium TCP Europe", IPs: []net.IP{{46, 246, 65, 151}, {46, 246, 65, 156}, {46, 246, 65, 157}, {46, 246, 65, 167}, {46, 246, 65, 203}, {46, 246, 65, 221}, {91, 132, 138, 51}, {188, 126, 64, 101}, {188, 126, 66, 3}, {188, 126, 66, 8}}},
|
||||
{Region: "Sweden", Group: "Premium UDP Europe", IPs: []net.IP{{46, 246, 65, 167}, {46, 246, 65, 170}, {46, 246, 65, 172}, {46, 246, 65, 181}, {46, 246, 65, 214}, {46, 246, 65, 215}, {91, 132, 138, 57}, {188, 126, 66, 8}, {188, 126, 66, 24}, {188, 126, 66, 29}}},
|
||||
{Region: "Switzerland", Group: "Premium TCP Europe", IPs: []net.IP{{84, 17, 52, 14}, {84, 17, 52, 39}, {84, 17, 52, 68}, {84, 17, 52, 73}, {84, 17, 52, 84}, {89, 187, 165, 131}, {185, 32, 222, 8}, {185, 32, 222, 105}, {195, 225, 118, 38}, {195, 225, 118, 56}}},
|
||||
{Region: "Switzerland", Group: "Premium UDP Europe", IPs: []net.IP{{84, 17, 52, 15}, {84, 17, 52, 20}, {84, 17, 52, 36}, {84, 17, 52, 52}, {84, 17, 52, 62}, {84, 17, 52, 75}, {91, 132, 136, 174}, {91, 132, 136, 205}, {91, 132, 136, 206}, {185, 32, 222, 113}}},
|
||||
{Region: "Taiwan", Group: "Premium TCP Asia", IPs: []net.IP{{45, 133, 181, 102}, {45, 133, 181, 105}, {45, 133, 181, 106}, {45, 133, 181, 108}, {45, 133, 181, 110}, {45, 133, 181, 112}, {45, 133, 181, 114}, {45, 133, 181, 117}, {45, 133, 181, 120}, {45, 133, 181, 124}}},
|
||||
{Region: "Taiwan", Group: "Premium UDP Asia", IPs: []net.IP{{45, 133, 181, 102}, {45, 133, 181, 103}, {45, 133, 181, 110}, {45, 133, 181, 111}, {45, 133, 181, 112}, {45, 133, 181, 114}, {45, 133, 181, 118}, {45, 133, 181, 120}, {45, 133, 181, 125}, {45, 133, 181, 126}}},
|
||||
{Region: "Thailand", Group: "Premium TCP Asia", IPs: []net.IP{{119, 59, 98, 238}, {119, 59, 98, 239}, {119, 59, 98, 243}, {119, 59, 98, 244}, {119, 59, 98, 248}, {119, 59, 98, 249}, {119, 59, 121, 165}, {119, 59, 121, 166}, {119, 59, 121, 171}, {119, 59, 121, 173}}},
|
||||
{Region: "Thailand", Group: "Premium UDP Asia", IPs: []net.IP{{119, 59, 98, 214}, {119, 59, 98, 238}, {119, 59, 98, 244}, {119, 59, 98, 247}, {119, 59, 121, 163}, {119, 59, 121, 165}, {119, 59, 121, 166}, {119, 59, 121, 167}, {119, 59, 121, 173}, {119, 59, 121, 175}}},
|
||||
{Region: "Turkey", Group: "Premium TCP Europe", IPs: []net.IP{{188, 213, 34, 9}, {188, 213, 34, 22}, {188, 213, 34, 24}, {188, 213, 34, 27}, {188, 213, 34, 28}, {188, 213, 34, 35}, {188, 213, 34, 41}, {188, 213, 34, 44}, {188, 213, 34, 45}, {188, 213, 34, 46}}},
|
||||
{Region: "Turkey", Group: "Premium UDP Europe", IPs: []net.IP{{188, 213, 34, 3}, {188, 213, 34, 13}, {188, 213, 34, 18}, {188, 213, 34, 25}, {188, 213, 34, 27}, {188, 213, 34, 30}, {188, 213, 34, 35}, {188, 213, 34, 37}, {188, 213, 34, 38}, {188, 213, 34, 44}}},
|
||||
{Region: "Ukraine", Group: "Premium TCP Europe", IPs: []net.IP{{31, 28, 161, 21}, {31, 28, 163, 34}, {31, 28, 163, 35}, {31, 28, 163, 38}, {31, 28, 163, 50}, {62, 149, 7, 164}, {62, 149, 7, 167}, {62, 149, 29, 50}, {62, 149, 29, 53}, {62, 149, 29, 56}}},
|
||||
{Region: "Ukraine", Group: "Premium UDP Europe", IPs: []net.IP{{31, 28, 161, 20}, {31, 28, 161, 28}, {31, 28, 161, 30}, {31, 28, 163, 37}, {31, 28, 163, 45}, {31, 28, 163, 53}, {31, 28, 163, 56}, {31, 28, 163, 59}, {62, 149, 7, 168}, {62, 149, 29, 56}}},
|
||||
{Region: "United Arab Emirates", Group: "Premium TCP Europe", IPs: []net.IP{{45, 131, 5, 6}, {45, 131, 5, 9}, {45, 131, 5, 12}, {45, 131, 5, 14}, {45, 131, 5, 16}, {45, 131, 5, 17}, {45, 131, 5, 18}, {45, 131, 5, 27}, {45, 131, 5, 28}, {45, 131, 5, 29}}},
|
||||
{Region: "United Arab Emirates", Group: "Premium UDP Europe", IPs: []net.IP{{45, 131, 5, 8}, {45, 131, 5, 14}, {45, 131, 5, 15}, {45, 131, 5, 20}, {45, 131, 5, 22}, {45, 131, 5, 23}, {45, 131, 5, 24}, {45, 131, 5, 26}, {45, 131, 5, 28}, {45, 131, 5, 29}}},
|
||||
{Region: "United Kingdom", Group: "Premium TCP Europe", IPs: []net.IP{{37, 120, 133, 134}, {37, 120, 133, 140}, {84, 17, 51, 32}, {84, 17, 51, 75}, {89, 238, 138, 243}, {89, 238, 183, 230}, {95, 154, 200, 144}, {95, 154, 200, 186}, {141, 98, 100, 56}, {141, 98, 100, 61}}},
|
||||
{Region: "United Kingdom", Group: "Premium UDP Europe", IPs: []net.IP{{37, 120, 133, 134}, {37, 120, 159, 35}, {81, 92, 206, 172}, {84, 17, 51, 34}, {84, 17, 51, 110}, {84, 17, 51, 115}, {89, 238, 135, 59}, {95, 154, 200, 147}, {95, 154, 200, 149}, {141, 98, 100, 58}}},
|
||||
{Region: "United States", Group: "Premium TCP USA", IPs: []net.IP{{23, 105, 160, 184}, {38, 131, 126, 150}, {84, 17, 35, 32}, {89, 187, 182, 7}, {89, 187, 182, 31}, {176, 113, 72, 153}, {176, 113, 72, 167}, {192, 96, 203, 150}, {199, 115, 119, 238}, {212, 102, 41, 4}}},
|
||||
{Region: "United States", Group: "Premium UDP USA", IPs: []net.IP{{23, 19, 68, 56}, {23, 82, 78, 29}, {23, 105, 191, 36}, {23, 105, 191, 51}, {84, 17, 35, 8}, {89, 187, 171, 138}, {108, 62, 96, 33}, {176, 113, 72, 151}, {192, 96, 203, 154}, {199, 115, 117, 70}}},
|
||||
{Region: "Venezuela", Group: "Premium TCP Europe", IPs: []net.IP{{45, 133, 89, 6}, {45, 133, 89, 9}, {45, 133, 89, 11}, {45, 133, 89, 15}, {45, 133, 89, 17}, {45, 133, 89, 18}, {45, 133, 89, 22}, {45, 133, 89, 24}, {45, 133, 89, 26}, {45, 133, 89, 29}}},
|
||||
{Region: "Venezuela", Group: "Premium UDP Europe", IPs: []net.IP{{45, 133, 89, 8}, {45, 133, 89, 9}, {45, 133, 89, 15}, {45, 133, 89, 17}, {45, 133, 89, 21}, {45, 133, 89, 22}, {45, 133, 89, 25}, {45, 133, 89, 26}, {45, 133, 89, 27}, {45, 133, 89, 29}}},
|
||||
{Region: "Vietnam", Group: "Premium TCP Asia", IPs: []net.IP{{45, 117, 79, 118}, {45, 117, 79, 123}, {45, 117, 79, 124}, {45, 117, 79, 125}, {103, 238, 214, 131}, {103, 238, 214, 134}, {103, 238, 214, 135}, {103, 238, 214, 136}, {103, 238, 214, 137}, {103, 238, 214, 140}}},
|
||||
{Region: "Vietnam", Group: "Premium UDP Asia", IPs: []net.IP{{45, 117, 79, 114}, {45, 117, 79, 116}, {45, 117, 79, 117}, {45, 117, 79, 118}, {45, 117, 79, 123}, {103, 238, 214, 134}, {103, 238, 214, 135}, {103, 238, 214, 136}, {103, 238, 214, 137}, {103, 238, 214, 140}}},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package constants
|
||||
|
||||
import (
|
||||
"net"
|
||||
"sort"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
@@ -13,37 +14,46 @@ const (
|
||||
func MullvadCountryChoices() (choices []string) {
|
||||
uniqueChoices := map[string]struct{}{}
|
||||
for _, server := range mullvadServers() {
|
||||
uniqueChoices[string(server.Country)] = struct{}{}
|
||||
uniqueChoices[server.Country] = struct{}{}
|
||||
}
|
||||
for choice := range uniqueChoices {
|
||||
choices = append(choices, choice)
|
||||
}
|
||||
sort.Slice(choices, func(i, j int) bool {
|
||||
return choices[i] < choices[j]
|
||||
})
|
||||
return choices
|
||||
}
|
||||
|
||||
func MullvadCityChoices() (choices []string) {
|
||||
uniqueChoices := map[string]struct{}{}
|
||||
for _, server := range mullvadServers() {
|
||||
uniqueChoices[string(server.City)] = struct{}{}
|
||||
uniqueChoices[server.City] = struct{}{}
|
||||
}
|
||||
for choice := range uniqueChoices {
|
||||
choices = append(choices, choice)
|
||||
}
|
||||
sort.Slice(choices, func(i, j int) bool {
|
||||
return choices[i] < choices[j]
|
||||
})
|
||||
return choices
|
||||
}
|
||||
|
||||
func MullvadProviderChoices() (choices []string) {
|
||||
func MullvadISPChoices() (choices []string) {
|
||||
uniqueChoices := map[string]struct{}{}
|
||||
for _, server := range mullvadServers() {
|
||||
uniqueChoices[string(server.Provider)] = struct{}{}
|
||||
uniqueChoices[server.ISP] = struct{}{}
|
||||
}
|
||||
for choice := range uniqueChoices {
|
||||
choices = append(choices, choice)
|
||||
}
|
||||
sort.Slice(choices, func(i, j int) bool {
|
||||
return choices[i] < choices[j]
|
||||
})
|
||||
return choices
|
||||
}
|
||||
|
||||
func MullvadServerFilter(country models.MullvadCountry, city models.MullvadCity, provider models.MullvadProvider) (servers []models.MullvadServer) {
|
||||
func MullvadServerFilter(country, city, isp string) (servers []models.MullvadServer) {
|
||||
for _, server := range mullvadServers() {
|
||||
if len(country) == 0 {
|
||||
server.Country = ""
|
||||
@@ -51,10 +61,10 @@ func MullvadServerFilter(country models.MullvadCountry, city models.MullvadCity,
|
||||
if len(city) == 0 {
|
||||
server.City = ""
|
||||
}
|
||||
if len(provider) == 0 {
|
||||
server.Provider = ""
|
||||
if len(isp) == 0 {
|
||||
server.ISP = ""
|
||||
}
|
||||
if server.Country == country && server.City == city && server.Provider == provider {
|
||||
if server.Country == country && server.City == city && server.ISP == isp {
|
||||
servers = append(servers, server)
|
||||
}
|
||||
}
|
||||
@@ -64,602 +74,602 @@ func MullvadServerFilter(country models.MullvadCountry, city models.MullvadCity,
|
||||
func mullvadServers() []models.MullvadServer {
|
||||
return []models.MullvadServer{
|
||||
{
|
||||
Country: models.MullvadCountry("united arab emirates"),
|
||||
City: models.MullvadCity("dubai"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "united arab emirates",
|
||||
City: "dubai",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{45, 9, 249, 34}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("albania"),
|
||||
City: models.MullvadCity("tirana"),
|
||||
Provider: models.MullvadProvider("iregister"),
|
||||
Country: "albania",
|
||||
City: "tirana",
|
||||
ISP: "iregister",
|
||||
IPs: []net.IP{{31, 171, 154, 210}},
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("austria"),
|
||||
City: models.MullvadCity("wien"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "austria",
|
||||
City: "wien",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 155, 250}, {217, 64, 127, 138}, {217, 64, 127, 202}},
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("adelaide"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "adelaide",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{116, 206, 231, 58}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("brisbane"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "brisbane",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{43, 245, 160, 162}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("canberra"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "canberra",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{116, 206, 229, 98}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("melbourne"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "melbourne",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{116, 206, 228, 202}, {116, 206, 228, 242}, {116, 206, 230, 98}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("perth"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "perth",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{103, 77, 235, 66}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("sydney"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "australia",
|
||||
City: "sydney",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{43, 245, 162, 130}, {103, 77, 232, 130}, {103, 77, 232, 146}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("australia"),
|
||||
City: models.MullvadCity("sydney"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "australia",
|
||||
City: "sydney",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{217, 138, 204, 82}, {217, 138, 204, 98}, {217, 138, 204, 66}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("belgium"),
|
||||
City: models.MullvadCity("brussels"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "belgium",
|
||||
City: "brussels",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 218, 146}, {37, 120, 218, 138}, {91, 207, 57, 50}, {37, 120, 143, 138}, {185, 104, 186, 202}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("bulgaria"),
|
||||
City: models.MullvadCity("sofia"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "bulgaria",
|
||||
City: "sofia",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 94, 192, 42}, {185, 94, 192, 66}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("brazil"),
|
||||
City: models.MullvadCity("sao paulo"),
|
||||
Provider: models.MullvadProvider("qnax"),
|
||||
Country: "brazil",
|
||||
City: "sao paulo",
|
||||
ISP: "qnax",
|
||||
IPs: []net.IP{{191, 101, 62, 178}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("brazil"),
|
||||
City: models.MullvadCity("sao paulo"),
|
||||
Provider: models.MullvadProvider("heficed"),
|
||||
Country: "brazil",
|
||||
City: "sao paulo",
|
||||
ISP: "heficed",
|
||||
IPs: []net.IP{{177, 67, 80, 186}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("canada"),
|
||||
City: models.MullvadCity("montreal"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "canada",
|
||||
City: "montreal",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{139, 28, 218, 114}, {217, 138, 200, 194}, {217, 138, 200, 186}, {87, 101, 92, 146}, {176, 113, 74, 178}, {37, 120, 205, 114}, {87, 101, 92, 138}, {37, 120, 205, 122}, {217, 138, 200, 210}, {217, 138, 200, 202}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("canada"),
|
||||
City: models.MullvadCity("toronto"),
|
||||
Provider: models.MullvadProvider("amanah"),
|
||||
Country: "canada",
|
||||
City: "toronto",
|
||||
ISP: "amanah",
|
||||
IPs: []net.IP{{184, 75, 214, 130}, {162, 219, 176, 250}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("canada"),
|
||||
City: models.MullvadCity("vancouver"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "canada",
|
||||
City: "vancouver",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{172, 83, 40, 34}, {172, 83, 40, 38}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("canada"),
|
||||
City: models.MullvadCity("vancouver"),
|
||||
Provider: models.MullvadProvider("esecuredata"),
|
||||
Country: "canada",
|
||||
City: "vancouver",
|
||||
ISP: "esecuredata",
|
||||
IPs: []net.IP{{71, 19, 249, 81}, {176, 113, 74, 186}, {71, 19, 248, 240}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("switzerland"),
|
||||
City: models.MullvadCity("zurich"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "switzerland",
|
||||
City: "zurich",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{193, 32, 127, 82}, {193, 32, 127, 81}, {193, 32, 127, 83}, {193, 32, 127, 84}},
|
||||
Owned: true,
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("zwitzerland"),
|
||||
City: models.MullvadCity("zurich"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "zwitzerland",
|
||||
City: "zurich",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 212, 170, 50}, {185, 183, 104, 82}, {185, 9, 18, 98}, {82, 102, 24, 130}, {82, 102, 24, 186}, {185, 212, 170, 162}, {185, 9, 18, 114}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("switzerland"),
|
||||
City: models.MullvadCity("zurich"),
|
||||
Provider: models.MullvadProvider("privateLayer"),
|
||||
Country: "switzerland",
|
||||
City: "zurich",
|
||||
ISP: "privateLayer",
|
||||
IPs: []net.IP{{179, 43, 128, 170}, {81, 17, 20, 34}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("czech republic"),
|
||||
City: models.MullvadCity("prague"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "czech republic",
|
||||
City: "prague",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{217, 138, 199, 82}, {217, 138, 199, 74}},
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("germany"),
|
||||
City: models.MullvadCity("frankfurt"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "germany",
|
||||
City: "frankfurt",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{185, 213, 155, 132}, {185, 213, 155, 140}, {185, 213, 155, 136}, {185, 213, 155, 133}, {185, 213, 155, 144}, {185, 213, 155, 143}, {185, 213, 155, 138}, {185, 213, 155, 142}, {185, 213, 155, 139}, {185, 213, 155, 135}, {185, 213, 155, 145}, {185, 213, 155, 137}, {185, 213, 155, 131}, {185, 213, 155, 134}, {185, 213, 155, 141}},
|
||||
Owned: true,
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("germany"),
|
||||
City: models.MullvadCity("frankfurt"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "germany",
|
||||
City: "frankfurt",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{82, 102, 16, 90}, {185, 104, 184, 186}, {77, 243, 183, 202}},
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("denmark"),
|
||||
City: models.MullvadCity("copenhagen"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "denmark",
|
||||
City: "copenhagen",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{141, 98, 254, 71}, {141, 98, 254, 72}},
|
||||
Owned: true,
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("denmark"),
|
||||
City: models.MullvadCity("copenhagen"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "denmark",
|
||||
City: "copenhagen",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 206, 224, 114}, {185, 206, 224, 119}},
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("denmark"),
|
||||
City: models.MullvadCity("copenhagen"),
|
||||
Provider: models.MullvadProvider("blix"),
|
||||
Country: "denmark",
|
||||
City: "copenhagen",
|
||||
ISP: "blix",
|
||||
IPs: []net.IP{{134, 90, 149, 138}},
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("denmark"),
|
||||
City: models.MullvadCity("copenhagen"),
|
||||
Provider: models.MullvadProvider("asergo"),
|
||||
Country: "denmark",
|
||||
City: "copenhagen",
|
||||
ISP: "asergo",
|
||||
IPs: []net.IP{{82, 103, 140, 213}},
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("spain"),
|
||||
City: models.MullvadCity("madrid"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "spain",
|
||||
City: "madrid",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{195, 206, 107, 146}, {45, 152, 183, 42}, {89, 238, 178, 74}, {45, 152, 183, 26}, {89, 238, 178, 34}},
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("finland"),
|
||||
City: models.MullvadCity("helsinki"),
|
||||
Provider: models.MullvadProvider("creanova"),
|
||||
Country: "finland",
|
||||
City: "helsinki",
|
||||
ISP: "creanova",
|
||||
IPs: []net.IP{{185, 204, 1, 174}, {185, 204, 1, 176}, {185, 212, 149, 201}, {185, 204, 1, 175}, {185, 204, 1, 173}, {185, 204, 1, 172}, {185, 204, 1, 171}},
|
||||
Owned: true,
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("france"),
|
||||
City: models.MullvadCity("paris"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "france",
|
||||
City: "paris",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{193, 32, 126, 83}, {193, 32, 126, 82}, {193, 32, 126, 81}, {193, 32, 126, 84}},
|
||||
Owned: true,
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("france"),
|
||||
City: models.MullvadCity("paris"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "france",
|
||||
City: "paris",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 189, 113, 82}, {185, 156, 173, 218}, {185, 128, 25, 162}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("uk"),
|
||||
City: models.MullvadCity("london"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "uk",
|
||||
City: "london",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{141, 98, 252, 133}, {141, 98, 252, 139}, {141, 98, 252, 137}, {141, 98, 252, 143}, {141, 98, 252, 142}, {141, 98, 252, 132}, {141, 98, 252, 134}, {141, 98, 252, 140}, {141, 98, 252, 141}, {141, 98, 252, 136}, {141, 98, 252, 144}, {141, 98, 252, 131}, {141, 98, 252, 135}, {141, 98, 252, 138}},
|
||||
Owned: true,
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("uk"),
|
||||
City: models.MullvadCity("london"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "uk",
|
||||
City: "london",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 200, 118, 105}, {185, 212, 168, 244}},
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("uk"),
|
||||
City: models.MullvadCity("manchester"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "uk",
|
||||
City: "manchester",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{89, 238, 130, 66}, {81, 92, 205, 10}, {89, 238, 130, 74}, {81, 92, 205, 18}, {81, 92, 205, 26}, {89, 238, 183, 244}, {89, 238, 132, 36}, {217, 151, 98, 68}, {37, 120, 159, 164}, {89, 238, 183, 60}},
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("greece"),
|
||||
City: models.MullvadCity("athens"),
|
||||
Provider: models.MullvadProvider("aweb"),
|
||||
Country: "greece",
|
||||
City: "athens",
|
||||
ISP: "aweb",
|
||||
IPs: []net.IP{{185, 226, 67, 168}},
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("hong kong"),
|
||||
City: models.MullvadCity("hong kong"),
|
||||
Provider: models.MullvadProvider("leaseweb"),
|
||||
Country: "hong kong",
|
||||
City: "hong kong",
|
||||
ISP: "leaseweb",
|
||||
IPs: []net.IP{{209, 58, 185, 53}, {209, 58, 184, 146}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("hungary"),
|
||||
City: models.MullvadCity("budapest"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "hungary",
|
||||
City: "budapest",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 94, 190, 138}, {185, 189, 114, 10}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("ireland"),
|
||||
City: models.MullvadCity("dublin"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "ireland",
|
||||
City: "dublin",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{217, 138, 222, 90}, {217, 138, 222, 82}},
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("israel"),
|
||||
City: models.MullvadCity("tel aviv"),
|
||||
Provider: models.MullvadProvider("hqserv"),
|
||||
Country: "israel",
|
||||
City: "tel aviv",
|
||||
ISP: "hqserv",
|
||||
IPs: []net.IP{{185, 191, 207, 210}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("italy"),
|
||||
City: models.MullvadCity("milan"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "italy",
|
||||
City: "milan",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{217, 138, 197, 106}, {217, 64, 113, 180}, {217, 138, 197, 98}, {217, 138, 197, 114}, {217, 64, 113, 183}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("japan"),
|
||||
City: models.MullvadCity("tokyo"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "japan",
|
||||
City: "tokyo",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 210, 138}, {193, 148, 16, 218}, {37, 120, 210, 146}, {185, 242, 4, 50}, {37, 120, 210, 122}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("luxembourg"),
|
||||
City: models.MullvadCity("luxembourg"),
|
||||
Provider: models.MullvadProvider("evoluso"),
|
||||
Country: "luxembourg",
|
||||
City: "luxembourg",
|
||||
ISP: "evoluso",
|
||||
IPs: []net.IP{{92, 223, 89, 160}, {92, 223, 89, 182}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("latvia"),
|
||||
City: models.MullvadCity("riga"),
|
||||
Provider: models.MullvadProvider("makonix"),
|
||||
Country: "latvia",
|
||||
City: "riga",
|
||||
ISP: "makonix",
|
||||
IPs: []net.IP{{31, 170, 22, 2}},
|
||||
DefaultPort: 1300,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("moldova"),
|
||||
City: models.MullvadCity("chisinau"),
|
||||
Provider: models.MullvadProvider("trabia"),
|
||||
Country: "moldova",
|
||||
City: "chisinau",
|
||||
ISP: "trabia",
|
||||
IPs: []net.IP{{178, 175, 142, 194}},
|
||||
DefaultPort: 1197,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("netherlands"),
|
||||
City: models.MullvadCity("amsterdam"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "netherlands",
|
||||
City: "amsterdam",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{185, 65, 134, 139}, {185, 65, 134, 133}, {185, 65, 134, 148}, {185, 65, 134, 147}, {185, 65, 134, 141}, {185, 65, 134, 140}, {185, 65, 134, 145}, {185, 65, 134, 132}, {185, 65, 134, 146}, {185, 65, 134, 143}, {185, 65, 134, 134}, {185, 65, 134, 136}, {185, 65, 134, 135}, {185, 65, 134, 142}, {185, 65, 134, 144}},
|
||||
Owned: true,
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("norway"),
|
||||
City: models.MullvadCity("oslo"),
|
||||
Provider: models.MullvadProvider("blix"),
|
||||
Country: "norway",
|
||||
City: "oslo",
|
||||
ISP: "blix",
|
||||
IPs: []net.IP{{91, 90, 44, 13}, {91, 90, 44, 18}, {91, 90, 44, 12}, {91, 90, 44, 15}, {91, 90, 44, 16}, {91, 90, 44, 17}, {91, 90, 44, 14}, {91, 90, 44, 11}},
|
||||
Owned: true,
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("new zealand"),
|
||||
City: models.MullvadCity("auckland"),
|
||||
Provider: models.MullvadProvider("intergrid"),
|
||||
Country: "new zealand",
|
||||
City: "auckland",
|
||||
ISP: "intergrid",
|
||||
IPs: []net.IP{{103, 231, 91, 114}},
|
||||
DefaultPort: 1195,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("poland"),
|
||||
City: models.MullvadCity("warsaw"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "poland",
|
||||
City: "warsaw",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 211, 202}, {37, 120, 156, 162}, {185, 244, 214, 210}, {37, 120, 211, 186}, {185, 244, 214, 215}, {37, 120, 211, 194}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("portugal"),
|
||||
City: models.MullvadCity("lisbon"),
|
||||
Provider: models.MullvadProvider("dotsi"),
|
||||
Country: "portugal",
|
||||
City: "lisbon",
|
||||
ISP: "dotsi",
|
||||
IPs: []net.IP{{5, 206, 231, 214}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("romania"),
|
||||
City: models.MullvadCity("bucharest"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "romania",
|
||||
City: "bucharest",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{89, 40, 181, 146}, {185, 181, 100, 202}, {89, 40, 181, 82}, {185, 45, 13, 10}, {89, 40, 181, 210}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("serbia"),
|
||||
City: models.MullvadCity("belgrade"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "serbia",
|
||||
City: "belgrade",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{141, 98, 103, 50}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("serbia"),
|
||||
City: models.MullvadCity("nis"),
|
||||
Provider: models.MullvadProvider("ninet"),
|
||||
Country: "serbia",
|
||||
City: "nis",
|
||||
ISP: "ninet",
|
||||
IPs: []net.IP{{176, 104, 107, 118}},
|
||||
DefaultPort: 1301,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("sweden"),
|
||||
City: models.MullvadCity("gothenburg"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "sweden",
|
||||
City: "gothenburg",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{185, 213, 154, 139}, {185, 213, 154, 141}, {185, 213, 154, 140}, {185, 213, 154, 132}, {185, 213, 154, 135}, {185, 213, 154, 138}, {185, 213, 154, 133}, {185, 213, 154, 131}, {185, 213, 154, 134}, {185, 213, 154, 142}, {185, 213, 154, 137}},
|
||||
Owned: true,
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("sweden"),
|
||||
City: models.MullvadCity("helsingborg"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "sweden",
|
||||
City: "helsingborg",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{185, 213, 152, 133}, {185, 213, 152, 132}, {185, 213, 152, 138}, {185, 213, 152, 131}, {185, 213, 152, 137}},
|
||||
Owned: true,
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("sweden"),
|
||||
City: models.MullvadCity("malmo"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "sweden",
|
||||
City: "malmo",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{193, 138, 218, 138}, {45, 83, 220, 87}, {141, 98, 255, 94}, {141, 98, 255, 85}, {141, 98, 255, 87}, {141, 98, 255, 92}, {45, 83, 220, 84}, {141, 98, 255, 86}, {45, 83, 220, 81}, {193, 138, 218, 135}, {193, 138, 218, 131}, {193, 138, 218, 136}, {141, 98, 255, 88}, {141, 98, 255, 91}, {193, 138, 218, 133}, {45, 83, 220, 89}, {45, 83, 220, 88}, {141, 98, 255, 84}, {141, 98, 255, 89}, {193, 138, 218, 134}, {45, 83, 220, 86}, {141, 98, 255, 83}, {45, 83, 220, 85}, {141, 98, 255, 90}, {141, 98, 255, 93}, {193, 138, 218, 132}, {193, 138, 218, 137}, {45, 83, 220, 91}},
|
||||
Owned: true,
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("sweden"),
|
||||
City: models.MullvadCity("stockholm"),
|
||||
Provider: models.MullvadProvider("31173"),
|
||||
Country: "sweden",
|
||||
City: "stockholm",
|
||||
ISP: "31173",
|
||||
IPs: []net.IP{{185, 65, 135, 150}, {185, 65, 135, 153}, {185, 65, 135, 151}, {185, 65, 135, 149}, {185, 65, 135, 141}, {185, 65, 135, 144}, {185, 65, 135, 145}, {185, 65, 135, 140}, {185, 65, 135, 134}, {185, 65, 135, 139}, {185, 65, 135, 131}, {185, 65, 135, 152}, {185, 65, 135, 146}, {185, 65, 135, 138}, {185, 65, 135, 143}, {185, 65, 135, 135}, {185, 65, 135, 154}, {185, 65, 135, 136}, {185, 65, 135, 133}, {185, 65, 135, 132}},
|
||||
Owned: true,
|
||||
DefaultPort: 1302,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("singapore"),
|
||||
City: models.MullvadCity("singapore"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "singapore",
|
||||
City: "singapore",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 208, 218}, {37, 120, 208, 234}, {37, 120, 208, 226}, {185, 128, 24, 50}},
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("singapore"),
|
||||
City: models.MullvadCity("singapore"),
|
||||
Provider: models.MullvadProvider("leaseweb"),
|
||||
Country: "singapore",
|
||||
City: "singapore",
|
||||
ISP: "leaseweb",
|
||||
IPs: []net.IP{{103, 254, 153, 82}},
|
||||
DefaultPort: 1196,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("atlanta"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "atlanta",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{208, 84, 153, 142}, {107, 152, 108, 62}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("atlanta"),
|
||||
Provider: models.MullvadProvider("quadranet"),
|
||||
Country: "usa",
|
||||
City: "atlanta",
|
||||
ISP: "quadranet",
|
||||
IPs: []net.IP{{104, 129, 24, 242}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("atlanta"),
|
||||
Provider: models.MullvadProvider("micfo"),
|
||||
Country: "usa",
|
||||
City: "atlanta",
|
||||
ISP: "micfo",
|
||||
IPs: []net.IP{{155, 254, 96, 2}, {155, 254, 96, 18}, {155, 254, 96, 34}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("chicago"),
|
||||
Provider: models.MullvadProvider("tzulo"),
|
||||
Country: "usa",
|
||||
City: "chicago",
|
||||
ISP: "tzulo",
|
||||
IPs: []net.IP{{68, 235, 43, 18}, {68, 235, 43, 26}, {68, 235, 43, 42}, {68, 235, 43, 50}, {68, 235, 43, 58}, {68, 235, 43, 66}, {68, 235, 43, 74}}, // 3 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("chicago"),
|
||||
Provider: models.MullvadProvider("quadranet"),
|
||||
Country: "usa",
|
||||
City: "chicago",
|
||||
ISP: "quadranet",
|
||||
IPs: []net.IP{}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("dallas"),
|
||||
Provider: models.MullvadProvider("quadranet"),
|
||||
Country: "usa",
|
||||
City: "dallas",
|
||||
ISP: "quadranet",
|
||||
IPs: []net.IP{{96, 44, 145, 18}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("dallas"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "dallas",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{104, 200, 142, 50}, {107, 152, 102, 106}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("denver"),
|
||||
Provider: models.MullvadProvider("tzulo"),
|
||||
Country: "usa",
|
||||
City: "denver",
|
||||
ISP: "tzulo",
|
||||
IPs: []net.IP{{198, 54, 128, 74}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("los angeles"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "usa",
|
||||
City: "los angeles",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{45, 152, 182, 66}, {45, 152, 182, 74}, {45, 83, 89, 162}, {185, 230, 126, 146}}, // 7 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("los angeles"),
|
||||
Provider: models.MullvadProvider("tzulo"),
|
||||
Country: "usa",
|
||||
City: "los angeles",
|
||||
ISP: "tzulo",
|
||||
IPs: []net.IP{{198, 54, 129, 74}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("los angeles"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "los angeles",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{104, 200, 152, 66}, {107, 181, 168, 130}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("los angeles"),
|
||||
Provider: models.MullvadProvider("choopa"),
|
||||
Country: "usa",
|
||||
City: "los angeles",
|
||||
ISP: "choopa",
|
||||
IPs: []net.IP{{104, 238, 143, 58}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("miami"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "usa",
|
||||
City: "miami",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{37, 120, 215, 130}, {193, 37, 252, 138}, {193, 37, 252, 154}, {37, 120, 215, 138}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("miami"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "miami",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{172, 98, 76, 114}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("miami"),
|
||||
Provider: models.MullvadProvider("micfo"),
|
||||
Country: "usa",
|
||||
City: "miami",
|
||||
ISP: "micfo",
|
||||
IPs: []net.IP{}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("new york"),
|
||||
Provider: models.MullvadProvider("m247"),
|
||||
Country: "usa",
|
||||
City: "new york",
|
||||
ISP: "m247",
|
||||
IPs: []net.IP{{185, 232, 22, 66}, {185, 232, 22, 98}, {193, 148, 18, 250}, {185, 232, 22, 10}, {217, 138, 206, 10}, {193, 148, 18, 218}, {193, 148, 18, 226}, {193, 148, 18, 194}, {87, 101, 95, 98}, {87, 101, 95, 114}, {87, 101, 95, 122}, {212, 103, 48, 226}, {176, 113, 72, 226}, {217, 138, 198, 250}, {217, 138, 206, 58}}, // 5 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("new york"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "new york",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{107, 182, 226, 206}, {107, 182, 226, 218}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("phoenix"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "phoenix",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("phoenix"),
|
||||
Provider: models.MullvadProvider("micfo"),
|
||||
Country: "usa",
|
||||
City: "phoenix",
|
||||
ISP: "micfo",
|
||||
IPs: []net.IP{{192, 200, 24, 82}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("piscataway"),
|
||||
Provider: models.MullvadProvider("choopa"),
|
||||
Country: "usa",
|
||||
City: "piscataway",
|
||||
ISP: "choopa",
|
||||
IPs: []net.IP{{108, 61, 78, 138}, {108, 61, 48, 115}, {66, 55, 147, 59}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("seattle"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "seattle",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{104, 200, 129, 202}, {104, 200, 129, 150}, {104, 200, 129, 110}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("seattle"),
|
||||
Provider: models.MullvadProvider("micfo"),
|
||||
Country: "usa",
|
||||
City: "seattle",
|
||||
ISP: "micfo",
|
||||
IPs: []net.IP{{104, 128, 136, 146}},
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("san francisco"),
|
||||
Provider: models.MullvadProvider("micfo"),
|
||||
Country: "usa",
|
||||
City: "san francisco",
|
||||
ISP: "micfo",
|
||||
IPs: []net.IP{{209, 209, 238, 34}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("salt lake city"),
|
||||
Provider: models.MullvadProvider("100tb"),
|
||||
Country: "usa",
|
||||
City: "salt lake city",
|
||||
ISP: "100tb",
|
||||
IPs: []net.IP{{107, 182, 238, 229}, {107, 182, 235, 233}, {67, 212, 238, 236}, {67, 212, 238, 237}, {67, 212, 238, 239}, {107, 182, 239, 185}, {107, 182, 239, 170}}, // 2 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
{
|
||||
Country: models.MullvadCountry("usa"),
|
||||
City: models.MullvadCity("secaucus"),
|
||||
Provider: models.MullvadProvider("quadranet"),
|
||||
Country: "usa",
|
||||
City: "secaucus",
|
||||
ISP: "quadranet",
|
||||
IPs: []net.IP{{23, 226, 131, 154}}, // 1 missing
|
||||
DefaultPort: 1194,
|
||||
},
|
||||
|
||||
@@ -7,78 +7,75 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
// PIAEncryptionNormal is the normal level of encryption for communication with PIA servers
|
||||
PIAEncryptionNormal models.PIAEncryption = "normal"
|
||||
// PIAEncryptionStrong is the strong level of encryption for communication with PIA servers
|
||||
PIAEncryptionStrong models.PIAEncryption = "strong"
|
||||
)
|
||||
|
||||
const (
|
||||
PIAEncryptionPresetNormal = "normal"
|
||||
PIAEncryptionPresetStrong = "strong"
|
||||
PiaX509CRLNormal = "MIICWDCCAUAwDQYJKoZIhvcNAQENBQAwgegxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTETMBEGA1UEBxMKTG9zQW5nZWxlczEgMB4GA1UEChMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBAsTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQDExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEKRMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxLzAtBgkqhkiG9w0BCQEWIHNlY3VyZUBwcml2YXRlaW50ZXJuZXRhY2Nlc3MuY29tFw0xNjA3MDgxOTAwNDZaFw0zNjA3MDMxOTAwNDZaMCYwEQIBARcMMTYwNzA4MTkwMDQ2MBECAQYXDDE2MDcwODE5MDA0NjANBgkqhkiG9w0BAQ0FAAOCAQEAQZo9X97ci8EcPYu/uK2HB152OZbeZCINmYyluLDOdcSvg6B5jI+ffKN3laDvczsG6CxmY3jNyc79XVpEYUnq4rT3FfveW1+Ralf+Vf38HdpwB8EWB4hZlQ205+21CALLvZvR8HcPxC9KEnev1mU46wkTiov0EKc+EdRxkj5yMgv0V2Reze7AP+NQ9ykvDScH4eYCsmufNpIjBLhpLE2cuZZXBLcPhuRzVoU3l7A9lvzG9mjA5YijHJGHNjlWFqyrn1CfYS6koa4TGEPngBoAziWRbDGdhEgJABHrpoaFYaL61zqyMR6jC0K2ps9qyZAN74LEBedEfK7tBOzWMwr58A=="
|
||||
PiaX509CRLStrong = "MIIDWDCCAUAwDQYJKoZIhvcNAQENBQAwgegxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTETMBEGA1UEBxMKTG9zQW5nZWxlczEgMB4GA1UEChMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBAsTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQDExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEKRMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxLzAtBgkqhkiG9w0BCQEWIHNlY3VyZUBwcml2YXRlaW50ZXJuZXRhY2Nlc3MuY29tFw0xNjA3MDgxOTAwNDZaFw0zNjA3MDMxOTAwNDZaMCYwEQIBARcMMTYwNzA4MTkwMDQ2MBECAQYXDDE2MDcwODE5MDA0NjANBgkqhkiG9w0BAQ0FAAOCAgEAppFfEpGsasjB1QgJcosGpzbf2kfRhM84o2TlqY1ua+Gi5TMdKydA3LJcNTjlI9a0TYAJfeRX5IkpoglSUuHuJgXhP3nEvX10mjXDpcu/YvM8TdE5JV2+EGqZ80kFtBeOq94WcpiVKFTR4fO+VkOK9zwspFfb1cNs9rHvgJ1QMkRUF8PpLN6AkntHY0+6DnigtSaKqldqjKTDTv2OeH3nPoh80SGrt0oCOmYKfWTJGpggMGKvIdvU3vH9+EuILZKKIskt+1dwdfA5Bkz1GLmiQG7+9ZZBQUjBG9Dos4hfX/rwJ3eU8oUIm4WoTz9rb71SOEuUUjP5NPy9HNx2vx+cVvLsTF4ZDZaUztW9o9JmIURDtbeyqxuHN3prlPWB6aj73IIm2dsDQvs3XXwRIxs8NwLbJ6CyEuvEOVCskdM8rdADWx1J0lRNlOJ0Z8ieLLEmYAA834VN1SboB6wJIAPxQU3rcBhXqO9y8aa2oRMg8NxZ5gr+PnKVMqag1x0IxbIgLxtkXQvxXxQHEMSODzvcOfK/nBRBsqTj30P+R87sU8titOoxNeRnBDRNhdEy/QGAqGh62ShPpQUCJdnKRiRTjnil9hMQHevoSuFKeEMO30FQL7BZyo37GFU+q1WPCplVZgCP9hC8Rn5K2+f6KLFo5bhtowSmu+GY1yZtg+RTtsA="
|
||||
PIACertificateNormal = "MIIFqzCCBJOgAwIBAgIJAKZ7D5Yv87qDMA0GCSqGSIb3DQEBDQUAMIHoMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNVBAcTCkxvc0FuZ2VsZXMxIDAeBgNVBAoTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQLExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEAxMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBCkTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMS8wLQYJKoZIhvcNAQkBFiBzZWN1cmVAcHJpdmF0ZWludGVybmV0YWNjZXNzLmNvbTAeFw0xNDA0MTcxNzM1MThaFw0zNDA0MTIxNzM1MThaMIHoMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNVBAcTCkxvc0FuZ2VsZXMxIDAeBgNVBAoTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQLExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEAxMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBCkTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMS8wLQYJKoZIhvcNAQkBFiBzZWN1cmVAcHJpdmF0ZWludGVybmV0YWNjZXNzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPXDL1L9tX6DGf36liA7UBTy5I869z0UVo3lImfOs/GSiFKPtInlesP65577nd7UNzzXlH/P/CnFPdBWlLp5ze3HRBCc/Avgr5CdMRkEsySL5GHBZsx6w2cayQ2EcRhVTwWpcdldeNO+pPr9rIgPrtXqT4SWViTQRBeGM8CDxAyTopTsobjSiYZCF9Ta1gunl0G/8Vfp+SXfYCC+ZzWvP+L1pFhPRqzQQ8k+wMZIovObK1s+nlwPaLyayzw9a8sUnvWB/5rGPdIYnQWPgoNlLN9HpSmsAcw2z8DXI9pIxbr74cb3/HSfuYGOLkRqrOk6h4RCOfuWoTrZup1uEOn+fw8CAwEAAaOCAVQwggFQMB0GA1UdDgQWBBQv63nQ/pJAt5tLy8VJcbHe22ZOsjCCAR8GA1UdIwSCARYwggESgBQv63nQ/pJAt5tLy8VJcbHe22ZOsqGB7qSB6zCB6DELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRMwEQYDVQQHEwpMb3NBbmdlbGVzMSAwHgYDVQQKExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UECxMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBAMTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQpExdQcml2YXRlIEludGVybmV0IEFjY2VzczEvMC0GCSqGSIb3DQEJARYgc2VjdXJlQHByaXZhdGVpbnRlcm5ldGFjY2Vzcy5jb22CCQCmew+WL/O6gzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4IBAQAna5PgrtxfwTumD4+3/SYvwoD66cB8IcK//h1mCzAduU8KgUXocLx7QgJWo9lnZ8xUryXvWab2usg4fqk7FPi00bED4f4qVQFVfGfPZIH9QQ7/48bPM9RyfzImZWUCenK37pdw4Bvgoys2rHLHbGen7f28knT2j/cbMxd78tQc20TIObGjo8+ISTRclSTRBtyCGohseKYpTS9himFERpUgNtefvYHbn70mIOzfOJFTVqfrptf9jXa9N8Mpy3ayfodz1wiqdteqFXkTYoSDctgKMiZ6GdocK9nMroQipIQtpnwd4yBDWIyC6Bvlkrq5TQUtYDQ8z9v+DMO6iwyIDRiU"
|
||||
PIACertificateStrong = "MIIHqzCCBZOgAwIBAgIJAJ0u+vODZJntMA0GCSqGSIb3DQEBDQUAMIHoMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNVBAcTCkxvc0FuZ2VsZXMxIDAeBgNVBAoTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQLExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEAxMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBCkTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMS8wLQYJKoZIhvcNAQkBFiBzZWN1cmVAcHJpdmF0ZWludGVybmV0YWNjZXNzLmNvbTAeFw0xNDA0MTcxNzQwMzNaFw0zNDA0MTIxNzQwMzNaMIHoMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNVBAcTCkxvc0FuZ2VsZXMxIDAeBgNVBAoTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQLExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEAxMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBCkTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMS8wLQYJKoZIhvcNAQkBFiBzZWN1cmVAcHJpdmF0ZWludGVybmV0YWNjZXNzLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALVkhjumaqBbL8aSgj6xbX1QPTfTd1qHsAZd2B97m8Vw31c/2yQgZNf5qZY0+jOIHULNDe4R9TIvyBEbvnAg/OkPw8n/+ScgYOeH876VUXzjLDBnDb8DLr/+w9oVsuDeFJ9KV2UFM1OYX0SnkHnrYAN2QLF98ESK4NCSU01h5zkcgmQ+qKSfA9Ny0/UpsKPBFqsQ25NvjDWFhCpeqCHKUJ4Be27CDbSl7lAkBuHMPHJs8f8xPgAbHRXZOxVCpayZ2SNDfCwsnGWpWFoMGvdMbygngCn6jA/W1VSFOlRlfLuuGe7QFfDwA0jaLCxuWt/BgZylp7tAzYKR8lnWmtUCPm4+BtjyVDYtDCiGBD9Z4P13RFWvJHw5aapx/5W/CuvVyI7pKwvc2IT+KPxCUhH1XI8ca5RN3C9NoPJJf6qpg4g0rJH3aaWkoMRrYvQ+5PXXYUzjtRHImghRGd/ydERYoAZXuGSbPkm9Y/p2X8unLcW+F0xpJD98+ZI+tzSsI99Zs5wijSUGYr9/j18KHFTMQ8n+1jauc5bCCegN27dPeKXNSZ5riXFL2XX6BkY68y58UaNzmeGMiUL9BOV1iV+PMb7B7PYs7oFLjAhh0EdyvfHkrh/ZV9BEhtFa7yXp8XR0J6vz1YV9R6DYJmLjOEbhU8N0gc3tZm4Qz39lIIG6w3FDAgMBAAGjggFUMIIBUDAdBgNVHQ4EFgQUrsRtyWJftjpdRM0+925Y6Cl08SUwggEfBgNVHSMEggEWMIIBEoAUrsRtyWJftjpdRM0+925Y6Cl08SWhge6kgeswgegxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTETMBEGA1UEBxMKTG9zQW5nZWxlczEgMB4GA1UEChMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxIDAeBgNVBAsTF1ByaXZhdGUgSW50ZXJuZXQgQWNjZXNzMSAwHgYDVQQDExdQcml2YXRlIEludGVybmV0IEFjY2VzczEgMB4GA1UEKRMXUHJpdmF0ZSBJbnRlcm5ldCBBY2Nlc3MxLzAtBgkqhkiG9w0BCQEWIHNlY3VyZUBwcml2YXRlaW50ZXJuZXRhY2Nlc3MuY29tggkAnS7684Nkme0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOCAgEAJsfhsPk3r8kLXLxY+v+vHzbr4ufNtqnL9/1Uuf8NrsCtpXAoyZ0YqfbkWx3NHTZ7OE9ZRhdMP/RqHQE1p4N4Sa1nZKhTKasV6KhHDqSCt/dvEm89xWm2MVA7nyzQxVlHa9AkcBaemcXEiyT19XdpiXOP4Vhs+J1R5m8zQOxZlV1GtF9vsXmJqWZpOVPmZ8f35BCsYPvv4yMewnrtAC8PFEK/bOPeYcKN50bol22QYaZuLfpkHfNiFTnfMh8sl/ablPyNY7DUNiP5DRcMdIwmfGQxR5WEQoHL3yPJ42LkB5zs6jIm26DGNXfwura/mi105+ENH1CaROtRYwkiHb08U6qLXXJz80mWJkT90nr8Asj35xN2cUppg74nG3YVav/38P48T56hG1NHbYF5uOCske19F6wi9maUoto/3vEr0rnXJUp2KODmKdvBI7co245lHBABWikk8VfejQSlCtDBXn644ZMtAdoxKNfR2WTFVEwJiyd1Fzx0yujuiXDROLhISLQDRjVVAvawrAtLZWYK31bY7KlezPlQnl/D9Asxe85l8jO5+0LdJ6VyOs/Hd4w52alDW/MFySDZSfQHMTIc30hLBJ8OnCEIvluVQQ2UQvoW+no177N9L2Y+M9TcTA62ZyMXShHQGeh20rb4kK8f+iFX8NxtdHVSkxMEFSfDDyQ="
|
||||
)
|
||||
|
||||
func PIAGeoChoices() (regions []string) {
|
||||
for _, server := range PIAServers() {
|
||||
regions = append(regions, string(server.Region))
|
||||
func PIAGeoChoices() (choices []string) {
|
||||
servers := PIAServers()
|
||||
choices = make([]string, len(servers))
|
||||
for i := range servers {
|
||||
choices[i] = servers[i].Region
|
||||
}
|
||||
return regions
|
||||
return choices
|
||||
}
|
||||
|
||||
func PIAServers() []models.PIAServer {
|
||||
return []models.PIAServer{
|
||||
{Region: models.PIARegion("AU Melbourne"), IPs: []net.IP{{27, 50, 82, 131}, {27, 50, 82, 133}, {43, 250, 204, 81}, {43, 250, 204, 83}, {43, 250, 204, 89}, {43, 250, 204, 93}, {43, 250, 204, 95}, {43, 250, 204, 97}, {43, 250, 204, 99}, {43, 250, 204, 101}, {43, 250, 204, 103}, {43, 250, 204, 109}, {43, 250, 204, 111}, {43, 250, 204, 115}, {43, 250, 204, 117}, {43, 250, 204, 119}, {43, 250, 204, 123}, {43, 250, 204, 125}, {118, 127, 62, 227}, {221, 121, 139, 175}}},
|
||||
{Region: models.PIARegion("AU Perth"), IPs: []net.IP{{43, 250, 205, 59}, {43, 250, 205, 95}}},
|
||||
{Region: models.PIARegion("AU Sydney"), IPs: []net.IP{{27, 50, 70, 87}, {27, 50, 81, 117}, {103, 13, 102, 113}, {103, 13, 102, 119}, {103, 13, 102, 121}, {103, 13, 102, 123}, {103, 13, 102, 127}, {118, 127, 60, 53}, {118, 127, 60, 61}, {221, 121, 145, 145}, {221, 121, 145, 147}}},
|
||||
{Region: models.PIARegion("Austria"), IPs: []net.IP{{185, 210, 219, 147}, {185, 210, 219, 154}, {185, 210, 219, 155}, {185, 216, 34, 226}, {185, 216, 34, 227}, {185, 216, 34, 228}, {185, 216, 34, 229}, {185, 216, 34, 230}, {185, 216, 34, 231}, {185, 216, 34, 232}, {185, 216, 34, 233}, {185, 216, 34, 236}, {185, 216, 34, 237}, {185, 216, 34, 238}}},
|
||||
{Region: models.PIARegion("Belgium"), IPs: []net.IP{{77, 243, 191, 18}, {77, 243, 191, 19}, {77, 243, 191, 20}, {77, 243, 191, 22}, {77, 243, 191, 26}, {77, 243, 191, 27}, {185, 104, 186, 26}, {185, 232, 21, 29}}},
|
||||
{Region: models.PIARegion("CA Montreal"), IPs: []net.IP{{199, 229, 249, 130}, {199, 229, 249, 136}, {199, 229, 249, 141}, {199, 229, 249, 146}, {199, 229, 249, 149}, {199, 229, 249, 151}, {199, 229, 249, 155}, {199, 229, 249, 157}, {199, 229, 249, 178}, {199, 229, 249, 184}, {199, 229, 249, 185}, {199, 229, 249, 189}, {199, 229, 249, 190}, {199, 229, 249, 200}}},
|
||||
{Region: models.PIARegion("CA Toronto"), IPs: []net.IP{{172, 98, 67, 5}, {172, 98, 67, 6}, {172, 98, 67, 9}, {172, 98, 67, 12}, {172, 98, 67, 16}, {172, 98, 67, 17}, {172, 98, 67, 20}, {172, 98, 67, 31}, {172, 98, 67, 34}, {172, 98, 67, 45}, {172, 98, 67, 47}, {172, 98, 67, 48}, {172, 98, 67, 49}, {172, 98, 67, 60}, {172, 98, 67, 68}, {172, 98, 67, 73}, {172, 98, 67, 76}, {172, 98, 67, 82}, {172, 98, 67, 90}, {172, 98, 67, 95}}},
|
||||
{Region: models.PIARegion("CA Vancouver"), IPs: []net.IP{{107, 181, 189, 71}, {107, 181, 189, 77}, {107, 181, 189, 83}, {172, 83, 40, 20}, {172, 83, 40, 23}, {172, 83, 40, 26}, {172, 83, 40, 99}, {172, 83, 40, 104}, {172, 83, 40, 106}, {172, 83, 40, 111}, {172, 83, 40, 112}}},
|
||||
{Region: models.PIARegion("Czech Republic"), IPs: []net.IP{{89, 238, 186, 228}, {89, 238, 186, 229}, {89, 238, 186, 230}, {185, 216, 35, 66}, {185, 216, 35, 67}, {185, 216, 35, 68}, {185, 216, 35, 69}, {185, 242, 6, 26}, {185, 242, 6, 27}, {185, 242, 6, 28}, {185, 242, 6, 30}}},
|
||||
{Region: models.PIARegion("DE Berlin"), IPs: []net.IP{{185, 230, 127, 228}, {185, 230, 127, 231}, {185, 230, 127, 233}, {185, 230, 127, 234}, {185, 230, 127, 236}, {185, 230, 127, 237}, {185, 230, 127, 240}, {185, 230, 127, 241}, {185, 230, 127, 243}, {193, 176, 86, 122}, {193, 176, 86, 123}, {193, 176, 86, 124}, {193, 176, 86, 130}, {193, 176, 86, 142}, {193, 176, 86, 146}, {193, 176, 86, 154}, {193, 176, 86, 158}, {193, 176, 86, 166}, {193, 176, 86, 178}, {194, 36, 108, 6}}},
|
||||
{Region: models.PIARegion("DE Frankfurt"), IPs: []net.IP{{185, 220, 70, 132}, {185, 220, 70, 133}, {185, 220, 70, 134}, {185, 220, 70, 136}, {185, 220, 70, 138}, {185, 220, 70, 139}, {185, 220, 70, 140}, {185, 220, 70, 143}, {185, 220, 70, 145}, {185, 220, 70, 147}, {185, 220, 70, 148}, {185, 220, 70, 149}, {185, 220, 70, 150}, {185, 220, 70, 152}, {185, 220, 70, 153}, {185, 220, 70, 162}, {185, 220, 70, 164}, {185, 220, 70, 166}, {185, 220, 70, 172}, {185, 220, 70, 174}}},
|
||||
{Region: models.PIARegion("Denmark"), IPs: []net.IP{{82, 102, 20, 162}, {82, 102, 20, 163}, {82, 102, 20, 164}, {82, 102, 20, 165}, {82, 102, 20, 166}, {82, 102, 20, 168}, {82, 102, 20, 169}, {82, 102, 20, 170}, {82, 102, 20, 171}, {82, 102, 20, 172}, {82, 102, 20, 173}, {82, 102, 20, 174}, {82, 102, 20, 175}, {82, 102, 20, 176}, {82, 102, 20, 177}, {82, 102, 20, 178}, {82, 102, 20, 179}, {82, 102, 20, 180}, {82, 102, 20, 182}, {82, 102, 20, 183}}},
|
||||
{Region: models.PIARegion("Finlan"), IPs: []net.IP{{196, 244, 191, 2}, {196, 244, 191, 10}, {196, 244, 191, 18}, {196, 244, 191, 26}, {196, 244, 191, 42}, {196, 244, 191, 50}, {196, 244, 191, 58}, {196, 244, 191, 74}, {196, 244, 191, 82}, {196, 244, 191, 90}, {196, 244, 191, 98}, {196, 244, 191, 106}, {196, 244, 191, 114}, {196, 244, 191, 122}, {196, 244, 191, 138}, {196, 244, 191, 146}}},
|
||||
{Region: models.PIARegion("France"), IPs: []net.IP{{194, 99, 106, 148}, {194, 187, 249, 35}, {194, 187, 249, 37}, {194, 187, 249, 38}, {194, 187, 249, 39}, {194, 187, 249, 43}, {194, 187, 249, 44}, {194, 187, 249, 47}, {194, 187, 249, 48}, {194, 187, 249, 54}, {194, 187, 249, 57}, {194, 187, 249, 59}, {194, 187, 249, 61}, {194, 187, 249, 62}, {194, 187, 249, 179}, {194, 187, 249, 180}, {194, 187, 249, 182}, {194, 187, 249, 183}, {194, 187, 249, 187}, {194, 187, 249, 190}}},
|
||||
{Region: models.PIARegion("Hong Kong"), IPs: []net.IP{{84, 17, 37, 1}, {84, 17, 37, 23}, {84, 17, 37, 45}, {119, 81, 135, 2}, {119, 81, 135, 5}, {119, 81, 135, 28}, {119, 81, 135, 29}, {119, 81, 135, 47}, {119, 81, 135, 51}, {119, 81, 135, 53}, {119, 81, 253, 212}, {119, 81, 253, 218}, {119, 81, 253, 226}, {119, 81, 253, 227}, {119, 81, 253, 229}, {119, 81, 253, 230}, {119, 81, 253, 241}, {119, 81, 253, 242}, {161, 202, 39, 240}, {161, 202, 44, 94}}},
|
||||
{Region: models.PIARegion("Hungary"), IPs: []net.IP{{185, 128, 26, 18}, {185, 128, 26, 19}, {185, 128, 26, 20}, {185, 128, 26, 21}, {185, 128, 26, 22}, {185, 128, 26, 23}, {185, 128, 26, 24}, {185, 189, 114, 98}}},
|
||||
{Region: models.PIARegion("India"), IPs: []net.IP{{150, 242, 12, 155}, {150, 242, 12, 171}, {150, 242, 12, 187}}},
|
||||
{Region: models.PIARegion("Ireland"), IPs: []net.IP{{23, 92, 127, 2}, {23, 92, 127, 10}, {23, 92, 127, 18}, {23, 92, 127, 34}, {23, 92, 127, 42}, {23, 92, 127, 50}, {23, 92, 127, 58}, {23, 92, 127, 66}}},
|
||||
{Region: models.PIARegion("Israel"), IPs: []net.IP{{31, 168, 172, 136}, {31, 168, 172, 142}, {31, 168, 172, 143}, {31, 168, 172, 145}, {31, 168, 172, 146}, {31, 168, 172, 147}}},
|
||||
{Region: models.PIARegion("Italy"), IPs: []net.IP{{82, 102, 21, 98}, {82, 102, 21, 211}, {82, 102, 21, 214}, {82, 102, 21, 217}}},
|
||||
{Region: models.PIARegion("Japan"), IPs: []net.IP{{103, 208, 220, 130}, {103, 208, 220, 132}, {103, 208, 220, 135}, {103, 208, 220, 138}}},
|
||||
{Region: models.PIARegion("Luxembourg"), IPs: []net.IP{{92, 223, 89, 133}, {92, 223, 89, 134}, {92, 223, 89, 135}, {92, 223, 89, 136}, {92, 223, 89, 137}, {92, 223, 89, 138}, {92, 223, 89, 140}, {92, 223, 89, 142}}},
|
||||
{Region: models.PIARegion("Mexico"), IPs: []net.IP{{169, 57, 0, 200}, {169, 57, 0, 205}, {169, 57, 0, 211}, {169, 57, 0, 212}, {169, 57, 0, 214}, {169, 57, 0, 217}, {169, 57, 0, 218}, {169, 57, 0, 219}, {169, 57, 0, 221}, {169, 57, 0, 224}, {169, 57, 0, 225}, {169, 57, 0, 229}, {169, 57, 0, 230}, {169, 57, 0, 231}, {169, 57, 0, 233}, {169, 57, 0, 235}, {169, 57, 0, 238}, {169, 57, 0, 243}, {169, 57, 0, 247}, {169, 57, 0, 248}}},
|
||||
{Region: models.PIARegion("Netherlands"), IPs: []net.IP{{46, 166, 138, 145}, {46, 166, 138, 161}, {46, 166, 138, 170}, {46, 166, 138, 175}, {46, 166, 186, 247}, {46, 166, 188, 202}, {46, 166, 188, 216}, {46, 166, 190, 176}, {46, 166, 190, 179}, {46, 166, 190, 182}, {46, 166, 190, 183}, {46, 166, 190, 184}, {46, 166, 190, 186}, {46, 166, 190, 194}, {46, 166, 190, 219}, {46, 166, 190, 222}, {46, 166, 190, 227}, {46, 166, 190, 236}, {77, 247, 182, 241}, {109, 201, 154, 182}}},
|
||||
{Region: models.PIARegion("New Zealand"), IPs: []net.IP{{103, 231, 90, 171}, {103, 231, 90, 172}, {103, 231, 90, 173}, {103, 231, 90, 174}, {103, 231, 91, 34}, {103, 231, 91, 66}, {103, 231, 91, 67}, {103, 231, 91, 69}, {103, 231, 91, 70}, {103, 231, 91, 74}}},
|
||||
{Region: models.PIARegion("Norway"), IPs: []net.IP{{82, 102, 27, 50}, {82, 102, 27, 51}, {82, 102, 27, 52}, {82, 102, 27, 53}, {82, 102, 27, 54}, {82, 102, 27, 55}, {82, 102, 27, 56}, {82, 102, 27, 57}, {82, 102, 27, 74}, {82, 102, 27, 75}, {82, 102, 27, 76}, {82, 102, 27, 116}, {82, 102, 27, 117}, {82, 102, 27, 118}, {82, 102, 27, 125}, {82, 102, 27, 126}, {185, 206, 225, 222}, {185, 253, 97, 226}, {185, 253, 97, 227}, {185, 253, 97, 228}}},
|
||||
{Region: models.PIARegion("Poland"), IPs: []net.IP{{185, 244, 214, 14}, {185, 244, 214, 194}, {185, 244, 214, 196}, {185, 244, 214, 197}, {185, 244, 214, 198}, {185, 244, 214, 199}, {185, 244, 214, 200}}},
|
||||
{Region: models.PIARegion("Romania"), IPs: []net.IP{{86, 105, 25, 66}, {86, 105, 25, 68}, {86, 105, 25, 69}, {86, 105, 25, 70}, {86, 105, 25, 74}, {86, 105, 25, 75}, {86, 105, 25, 76}, {86, 105, 25, 77}, {86, 105, 25, 78}, {89, 33, 8, 38}, {89, 33, 8, 42}, {94, 176, 148, 34}, {94, 176, 148, 35}, {185, 45, 12, 126}, {185, 210, 218, 98}, {185, 210, 218, 99}, {185, 210, 218, 100}, {185, 210, 218, 101}, {185, 210, 218, 104}, {185, 210, 218, 105}}},
|
||||
{Region: models.PIARegion("Singapore"), IPs: []net.IP{{37, 120, 208, 66}, {37, 120, 208, 67}, {37, 120, 208, 68}, {37, 120, 208, 69}, {37, 120, 208, 71}, {37, 120, 208, 72}, {37, 120, 208, 73}, {37, 120, 208, 74}, {37, 120, 208, 75}, {37, 120, 208, 76}, {37, 120, 208, 77}, {37, 120, 208, 78}, {37, 120, 208, 79}, {37, 120, 208, 80}, {37, 120, 208, 81}, {37, 120, 208, 82}, {37, 120, 208, 83}}},
|
||||
{Region: models.PIARegion("Spain"), IPs: []net.IP{{37, 120, 148, 86}, {185, 230, 124, 53}, {194, 99, 104, 30}}},
|
||||
{Region: models.PIARegion("Sweden"), IPs: []net.IP{{45, 12, 220, 165}, {45, 12, 220, 171}, {45, 12, 220, 197}, {45, 12, 220, 199}, {45, 12, 220, 203}, {45, 12, 220, 205}, {45, 12, 220, 207}, {45, 12, 220, 208}, {45, 12, 220, 210}, {45, 12, 220, 213}, {45, 12, 220, 215}, {45, 12, 220, 221}, {45, 12, 220, 222}, {45, 12, 220, 236}, {45, 12, 220, 241}, {45, 12, 220, 249}, {45, 12, 220, 253}, {45, 83, 91, 20}, {45, 83, 91, 26}, {45, 83, 91, 28}}},
|
||||
{Region: models.PIARegion("Switzerland"), IPs: []net.IP{{82, 102, 24, 250}, {82, 102, 24, 252}, {91, 132, 136, 45}, {91, 132, 136, 53}, {185, 156, 175, 86}, {185, 156, 175, 93}, {185, 212, 170, 180}, {185, 212, 170, 183}, {185, 230, 125, 34}, {185, 230, 125, 35}, {185, 230, 125, 36}, {185, 230, 125, 38}, {185, 230, 125, 43}, {185, 230, 125, 45}, {185, 230, 125, 49}, {185, 230, 125, 51}, {185, 230, 125, 86}, {195, 206, 105, 215}, {195, 206, 105, 216}, {212, 102, 36, 1}}},
|
||||
{Region: models.PIARegion("UAE"), IPs: []net.IP{{45, 9, 250, 42}, {45, 9, 250, 46}, {45, 9, 250, 62}}},
|
||||
{Region: models.PIARegion("UK London"), IPs: []net.IP{{89, 238, 150, 8}, {89, 238, 150, 10}, {89, 238, 150, 17}, {89, 238, 150, 20}, {89, 238, 150, 21}, {89, 238, 150, 22}, {89, 238, 150, 23}, {89, 238, 154, 19}, {89, 238, 154, 116}, {89, 238, 154, 117}, {89, 238, 154, 124}, {89, 238, 154, 125}, {89, 238, 154, 165}, {89, 238, 154, 169}, {89, 238, 154, 171}, {89, 238, 154, 173}, {89, 238, 154, 228}, {89, 238, 154, 239}, {89, 238, 154, 247}, {185, 253, 98, 94}}},
|
||||
{Region: models.PIARegion("UK Manchester"), IPs: []net.IP{{89, 238, 137, 37}, {89, 238, 137, 39}, {89, 238, 137, 40}, {89, 238, 137, 41}, {89, 238, 137, 42}, {89, 238, 137, 43}, {89, 238, 139, 4}, {89, 238, 139, 5}, {89, 238, 139, 7}, {89, 238, 139, 8}, {89, 238, 139, 9}, {89, 238, 139, 10}, {89, 238, 139, 11}, {89, 238, 139, 12}, {89, 238, 139, 13}, {89, 238, 139, 52}, {89, 238, 139, 53}, {89, 238, 139, 55}, {89, 238, 139, 57}, {89, 238, 139, 58}}},
|
||||
{Region: models.PIARegion("UK Southampton"), IPs: []net.IP{{31, 24, 226, 132}, {31, 24, 226, 136}, {31, 24, 226, 147}, {31, 24, 226, 186}, {31, 24, 226, 188}, {31, 24, 226, 204}, {31, 24, 226, 205}, {31, 24, 226, 209}, {31, 24, 226, 219}, {31, 24, 226, 220}, {31, 24, 226, 222}, {31, 24, 226, 224}, {31, 24, 226, 225}, {31, 24, 226, 227}, {31, 24, 226, 232}, {31, 24, 226, 233}, {31, 24, 226, 235}, {31, 24, 226, 236}, {31, 24, 226, 241}, {31, 24, 226, 244}}},
|
||||
{Region: models.PIARegion("US Atlanta"), IPs: []net.IP{{66, 115, 168, 10}, {66, 115, 168, 19}, {66, 115, 168, 21}, {66, 115, 168, 23}, {66, 115, 168, 26}, {66, 115, 168, 28}, {66, 115, 169, 195}, {66, 115, 169, 209}, {66, 115, 169, 217}, {66, 115, 169, 218}, {66, 115, 169, 221}, {66, 115, 169, 226}, {66, 115, 169, 230}, {66, 115, 169, 233}, {66, 115, 169, 235}, {66, 115, 169, 237}, {66, 115, 169, 239}, {66, 115, 169, 240}, {66, 115, 169, 242}, {66, 115, 169, 244}}},
|
||||
{Region: models.PIARegion("US California"), IPs: []net.IP{{91, 207, 175, 53}, {91, 207, 175, 70}, {91, 207, 175, 71}, {91, 207, 175, 99}, {91, 207, 175, 101}, {91, 207, 175, 104}, {91, 207, 175, 110}, {91, 207, 175, 112}, {91, 207, 175, 166}, {91, 207, 175, 170}, {91, 207, 175, 177}, {91, 207, 175, 178}, {91, 207, 175, 207}, {91, 207, 175, 227}, {91, 207, 175, 228}, {91, 207, 175, 236}, {91, 207, 175, 252}, {185, 245, 87, 179}, {185, 245, 87, 216}, {212, 103, 49, 162}}},
|
||||
{Region: models.PIARegion("US Chicago"), IPs: []net.IP{{104, 200, 153, 96}, {199, 116, 115, 130}, {199, 116, 115, 131}, {199, 116, 115, 132}, {199, 116, 115, 133}, {199, 116, 115, 134}, {199, 116, 115, 135}, {199, 116, 115, 136}, {199, 116, 115, 137}, {199, 116, 115, 138}, {199, 116, 115, 139}, {199, 116, 115, 140}, {199, 116, 115, 141}, {199, 116, 115, 142}, {199, 116, 115, 143}, {199, 116, 115, 144}, {199, 116, 115, 145}, {199, 116, 115, 146}, {199, 116, 115, 147}, {199, 116, 115, 148}}},
|
||||
{Region: models.PIARegion("US Denver"), IPs: []net.IP{{174, 128, 225, 2}, {174, 128, 225, 106}, {174, 128, 225, 186}, {174, 128, 226, 10}, {174, 128, 226, 18}, {174, 128, 227, 226}, {174, 128, 242, 234}, {174, 128, 243, 114}, {174, 128, 243, 122}, {174, 128, 245, 106}, {174, 128, 250, 18}, {198, 148, 82, 82}, {198, 148, 88, 250}, {199, 115, 97, 202}, {199, 115, 98, 146}, {199, 115, 98, 226}, {199, 115, 99, 82}, {199, 115, 99, 218}, {199, 115, 101, 178}, {199, 115, 102, 154}}},
|
||||
{Region: models.PIARegion("US East"), IPs: []net.IP{{193, 37, 253, 50}, {193, 37, 253, 52}, {193, 37, 253, 105}, {193, 37, 253, 136}, {193, 37, 253, 137}, {194, 59, 251, 27}, {194, 59, 251, 37}, {194, 59, 251, 52}, {194, 59, 251, 68}, {194, 59, 251, 78}, {194, 59, 251, 80}, {194, 59, 251, 85}, {194, 59, 251, 87}, {194, 59, 251, 108}, {194, 59, 251, 136}, {194, 59, 251, 141}, {194, 59, 251, 166}, {194, 59, 251, 168}, {194, 59, 251, 218}, {194, 59, 251, 248}}},
|
||||
{Region: models.PIARegion("US Florida"), IPs: []net.IP{{193, 37, 252, 3}, {193, 37, 252, 6}, {193, 37, 252, 8}, {193, 37, 252, 11}, {193, 37, 252, 16}, {193, 37, 252, 19}, {193, 37, 252, 21}, {193, 37, 252, 48}, {193, 37, 252, 51}, {193, 37, 252, 53}, {193, 37, 252, 54}, {193, 37, 252, 58}, {193, 37, 252, 59}, {193, 37, 252, 70}, {193, 37, 252, 78}, {193, 37, 252, 82}, {193, 37, 252, 102}, {193, 37, 252, 105}, {193, 37, 252, 123}, {193, 37, 252, 126}}},
|
||||
{Region: models.PIARegion("US Houston"), IPs: []net.IP{{74, 81, 88, 26}, {74, 81, 88, 42}, {74, 81, 88, 58}, {74, 81, 88, 66}, {74, 81, 88, 114}, {74, 81, 88, 130}, {205, 251, 148, 34}, {205, 251, 148, 42}, {205, 251, 148, 66}, {205, 251, 148, 74}, {205, 251, 148, 82}, {205, 251, 148, 98}, {205, 251, 148, 138}, {205, 251, 150, 146}, {205, 251, 150, 194}, {205, 251, 150, 210}, {205, 251, 150, 218}, {205, 251, 150, 226}, {205, 251, 150, 234}, {205, 251, 151, 42}}},
|
||||
{Region: models.PIARegion("US Las Vegas"), IPs: []net.IP{{162, 251, 236, 2}, {162, 251, 236, 4}, {162, 251, 236, 5}, {162, 251, 236, 7}, {162, 251, 236, 8}, {162, 251, 236, 9}, {199, 127, 56, 82}, {199, 127, 56, 83}, {199, 127, 56, 84}, {199, 127, 56, 86}, {199, 127, 56, 87}, {199, 127, 56, 88}, {199, 127, 56, 89}, {199, 127, 56, 91}, {199, 127, 56, 114}, {199, 127, 56, 115}, {199, 127, 56, 117}, {199, 127, 56, 118}, {199, 127, 56, 119}, {199, 127, 56, 121}}},
|
||||
{Region: models.PIARegion("US New York City"), IPs: []net.IP{{107, 182, 231, 32}, {107, 182, 231, 37}, {107, 182, 231, 39}, {173, 244, 223, 122}, {209, 95, 50, 14}, {209, 95, 50, 16}, {209, 95, 50, 50}, {209, 95, 50, 55}, {209, 95, 50, 85}, {209, 95, 50, 89}, {209, 95, 50, 92}, {209, 95, 50, 93}, {209, 95, 50, 95}, {209, 95, 50, 99}, {209, 95, 50, 107}, {209, 95, 50, 113}, {209, 95, 50, 132}, {209, 95, 50, 133}, {209, 95, 50, 135}, {209, 95, 51, 22}}},
|
||||
{Region: models.PIARegion("US Seattle"), IPs: []net.IP{{104, 200, 154, 9}, {104, 200, 154, 11}, {104, 200, 154, 19}, {104, 200, 154, 21}, {104, 200, 154, 29}, {104, 200, 154, 37}, {104, 200, 154, 41}, {104, 200, 154, 44}, {104, 200, 154, 51}, {104, 200, 154, 58}, {104, 200, 154, 63}, {104, 200, 154, 69}, {104, 200, 154, 70}, {104, 200, 154, 72}, {104, 200, 154, 78}, {104, 200, 154, 79}, {104, 200, 154, 84}, {104, 200, 154, 87}, {104, 200, 154, 88}, {104, 200, 154, 97}}},
|
||||
{Region: models.PIARegion("US Silicon Valley"), IPs: []net.IP{{199, 116, 118, 134}, {199, 116, 118, 137}, {199, 116, 118, 140}, {199, 116, 118, 148}, {199, 116, 118, 150}, {199, 116, 118, 156}, {199, 116, 118, 163}, {199, 116, 118, 166}, {199, 116, 118, 168}, {199, 116, 118, 169}, {199, 116, 118, 196}, {199, 116, 118, 202}, {199, 116, 118, 209}, {199, 116, 118, 211}, {199, 116, 118, 215}, {199, 116, 118, 226}, {199, 116, 118, 227}, {199, 116, 118, 236}, {199, 116, 118, 237}, {199, 116, 118, 246}}},
|
||||
{Region: models.PIARegion("US Texas"), IPs: []net.IP{{162, 216, 46, 21}, {162, 216, 46, 25}, {162, 216, 46, 40}, {162, 216, 46, 51}, {162, 216, 46, 56}, {162, 216, 46, 57}, {162, 216, 46, 72}, {162, 216, 46, 76}, {162, 216, 46, 81}, {162, 216, 46, 106}, {162, 216, 46, 107}, {162, 216, 46, 117}, {162, 216, 46, 119}, {162, 216, 46, 121}, {162, 216, 46, 131}, {162, 216, 46, 136}, {162, 216, 46, 139}, {162, 216, 46, 141}, {162, 216, 46, 164}, {162, 216, 46, 171}}},
|
||||
{Region: models.PIARegion("US Washington DC"), IPs: []net.IP{{70, 32, 0, 24}, {70, 32, 0, 46}, {70, 32, 0, 55}, {70, 32, 0, 76}, {70, 32, 0, 121}, {70, 32, 0, 137}, {70, 32, 0, 153}, {70, 32, 0, 155}, {70, 32, 0, 165}, {70, 32, 0, 166}, {70, 32, 0, 167}, {70, 32, 0, 168}, {70, 32, 0, 169}, {70, 32, 0, 170}, {70, 32, 0, 172}, {70, 32, 0, 173}, {70, 32, 0, 176}, {70, 32, 0, 177}, {70, 32, 0, 178}, {70, 32, 0, 179}}},
|
||||
{Region: models.PIARegion("US West"), IPs: []net.IP{{104, 200, 151, 9}, {104, 200, 151, 13}, {104, 200, 151, 16}, {104, 200, 151, 17}, {104, 200, 151, 23}, {104, 200, 151, 24}, {104, 200, 151, 32}, {104, 200, 151, 35}, {104, 200, 151, 36}, {104, 200, 151, 37}, {104, 200, 151, 39}, {104, 200, 151, 41}, {104, 200, 151, 43}, {104, 200, 151, 47}, {104, 200, 151, 54}, {104, 200, 151, 59}, {104, 200, 151, 73}, {104, 200, 151, 75}, {104, 200, 151, 76}, {104, 200, 151, 88}}},
|
||||
{Region: "AU Melbourne", IPs: []net.IP{{27, 50, 82, 131}, {27, 50, 82, 133}, {43, 250, 204, 81}, {43, 250, 204, 83}, {43, 250, 204, 89}, {43, 250, 204, 93}, {43, 250, 204, 95}, {43, 250, 204, 97}, {43, 250, 204, 99}, {43, 250, 204, 101}, {43, 250, 204, 103}, {43, 250, 204, 109}, {43, 250, 204, 111}, {43, 250, 204, 115}, {43, 250, 204, 117}, {43, 250, 204, 119}, {43, 250, 204, 123}, {43, 250, 204, 125}, {118, 127, 62, 227}, {221, 121, 139, 175}}},
|
||||
{Region: "AU Perth", IPs: []net.IP{{43, 250, 205, 59}, {43, 250, 205, 95}}},
|
||||
{Region: "AU Sydney", IPs: []net.IP{{27, 50, 70, 87}, {27, 50, 81, 117}, {103, 13, 102, 113}, {103, 13, 102, 119}, {103, 13, 102, 121}, {103, 13, 102, 123}, {103, 13, 102, 127}, {118, 127, 60, 53}, {118, 127, 60, 61}, {221, 121, 145, 145}, {221, 121, 145, 147}}},
|
||||
{Region: "Austria", IPs: []net.IP{{185, 210, 219, 147}, {185, 210, 219, 154}, {185, 210, 219, 155}, {185, 216, 34, 226}, {185, 216, 34, 227}, {185, 216, 34, 228}, {185, 216, 34, 229}, {185, 216, 34, 230}, {185, 216, 34, 231}, {185, 216, 34, 232}, {185, 216, 34, 233}, {185, 216, 34, 236}, {185, 216, 34, 237}, {185, 216, 34, 238}}},
|
||||
{Region: "Belgium", IPs: []net.IP{{77, 243, 191, 18}, {77, 243, 191, 19}, {77, 243, 191, 20}, {77, 243, 191, 22}, {77, 243, 191, 26}, {77, 243, 191, 27}, {185, 104, 186, 26}, {185, 232, 21, 29}}},
|
||||
{Region: "CA Montreal", IPs: []net.IP{{199, 229, 249, 130}, {199, 229, 249, 136}, {199, 229, 249, 141}, {199, 229, 249, 146}, {199, 229, 249, 149}, {199, 229, 249, 151}, {199, 229, 249, 155}, {199, 229, 249, 157}, {199, 229, 249, 178}, {199, 229, 249, 184}, {199, 229, 249, 185}, {199, 229, 249, 189}, {199, 229, 249, 190}, {199, 229, 249, 200}}},
|
||||
{Region: "CA Toronto", IPs: []net.IP{{172, 98, 67, 5}, {172, 98, 67, 6}, {172, 98, 67, 9}, {172, 98, 67, 12}, {172, 98, 67, 16}, {172, 98, 67, 17}, {172, 98, 67, 20}, {172, 98, 67, 31}, {172, 98, 67, 34}, {172, 98, 67, 45}, {172, 98, 67, 47}, {172, 98, 67, 48}, {172, 98, 67, 49}, {172, 98, 67, 60}, {172, 98, 67, 68}, {172, 98, 67, 73}, {172, 98, 67, 76}, {172, 98, 67, 82}, {172, 98, 67, 90}, {172, 98, 67, 95}}},
|
||||
{Region: "CA Vancouver", IPs: []net.IP{{107, 181, 189, 71}, {107, 181, 189, 77}, {107, 181, 189, 83}, {172, 83, 40, 20}, {172, 83, 40, 23}, {172, 83, 40, 26}, {172, 83, 40, 99}, {172, 83, 40, 104}, {172, 83, 40, 106}, {172, 83, 40, 111}, {172, 83, 40, 112}}},
|
||||
{Region: "Czech Republic", IPs: []net.IP{{89, 238, 186, 228}, {89, 238, 186, 229}, {89, 238, 186, 230}, {185, 216, 35, 66}, {185, 216, 35, 67}, {185, 216, 35, 68}, {185, 216, 35, 69}, {185, 242, 6, 26}, {185, 242, 6, 27}, {185, 242, 6, 28}, {185, 242, 6, 30}}},
|
||||
{Region: "DE Berlin", IPs: []net.IP{{185, 230, 127, 228}, {185, 230, 127, 231}, {185, 230, 127, 233}, {185, 230, 127, 234}, {185, 230, 127, 236}, {185, 230, 127, 237}, {185, 230, 127, 240}, {185, 230, 127, 241}, {185, 230, 127, 243}, {193, 176, 86, 122}, {193, 176, 86, 123}, {193, 176, 86, 124}, {193, 176, 86, 130}, {193, 176, 86, 142}, {193, 176, 86, 146}, {193, 176, 86, 154}, {193, 176, 86, 158}, {193, 176, 86, 166}, {193, 176, 86, 178}, {194, 36, 108, 6}}},
|
||||
{Region: "DE Frankfurt", IPs: []net.IP{{185, 220, 70, 132}, {185, 220, 70, 133}, {185, 220, 70, 134}, {185, 220, 70, 136}, {185, 220, 70, 138}, {185, 220, 70, 139}, {185, 220, 70, 140}, {185, 220, 70, 143}, {185, 220, 70, 145}, {185, 220, 70, 147}, {185, 220, 70, 148}, {185, 220, 70, 149}, {185, 220, 70, 150}, {185, 220, 70, 152}, {185, 220, 70, 153}, {185, 220, 70, 162}, {185, 220, 70, 164}, {185, 220, 70, 166}, {185, 220, 70, 172}, {185, 220, 70, 174}}},
|
||||
{Region: "Denmark", IPs: []net.IP{{82, 102, 20, 162}, {82, 102, 20, 163}, {82, 102, 20, 164}, {82, 102, 20, 165}, {82, 102, 20, 166}, {82, 102, 20, 168}, {82, 102, 20, 169}, {82, 102, 20, 170}, {82, 102, 20, 171}, {82, 102, 20, 172}, {82, 102, 20, 173}, {82, 102, 20, 174}, {82, 102, 20, 175}, {82, 102, 20, 176}, {82, 102, 20, 177}, {82, 102, 20, 178}, {82, 102, 20, 179}, {82, 102, 20, 180}, {82, 102, 20, 182}, {82, 102, 20, 183}}},
|
||||
{Region: "Finlan", IPs: []net.IP{{196, 244, 191, 2}, {196, 244, 191, 10}, {196, 244, 191, 18}, {196, 244, 191, 26}, {196, 244, 191, 42}, {196, 244, 191, 50}, {196, 244, 191, 58}, {196, 244, 191, 74}, {196, 244, 191, 82}, {196, 244, 191, 90}, {196, 244, 191, 98}, {196, 244, 191, 106}, {196, 244, 191, 114}, {196, 244, 191, 122}, {196, 244, 191, 138}, {196, 244, 191, 146}}},
|
||||
{Region: "France", IPs: []net.IP{{194, 99, 106, 148}, {194, 187, 249, 35}, {194, 187, 249, 37}, {194, 187, 249, 38}, {194, 187, 249, 39}, {194, 187, 249, 43}, {194, 187, 249, 44}, {194, 187, 249, 47}, {194, 187, 249, 48}, {194, 187, 249, 54}, {194, 187, 249, 57}, {194, 187, 249, 59}, {194, 187, 249, 61}, {194, 187, 249, 62}, {194, 187, 249, 179}, {194, 187, 249, 180}, {194, 187, 249, 182}, {194, 187, 249, 183}, {194, 187, 249, 187}, {194, 187, 249, 190}}},
|
||||
{Region: "Hong Kong", IPs: []net.IP{{84, 17, 37, 1}, {84, 17, 37, 23}, {84, 17, 37, 45}, {119, 81, 135, 2}, {119, 81, 135, 5}, {119, 81, 135, 28}, {119, 81, 135, 29}, {119, 81, 135, 47}, {119, 81, 135, 51}, {119, 81, 135, 53}, {119, 81, 253, 212}, {119, 81, 253, 218}, {119, 81, 253, 226}, {119, 81, 253, 227}, {119, 81, 253, 229}, {119, 81, 253, 230}, {119, 81, 253, 241}, {119, 81, 253, 242}, {161, 202, 39, 240}, {161, 202, 44, 94}}},
|
||||
{Region: "Hungary", IPs: []net.IP{{185, 128, 26, 18}, {185, 128, 26, 19}, {185, 128, 26, 20}, {185, 128, 26, 21}, {185, 128, 26, 22}, {185, 128, 26, 23}, {185, 128, 26, 24}, {185, 189, 114, 98}}},
|
||||
{Region: "India", IPs: []net.IP{{150, 242, 12, 155}, {150, 242, 12, 171}, {150, 242, 12, 187}}},
|
||||
{Region: "Ireland", IPs: []net.IP{{23, 92, 127, 2}, {23, 92, 127, 10}, {23, 92, 127, 18}, {23, 92, 127, 34}, {23, 92, 127, 42}, {23, 92, 127, 50}, {23, 92, 127, 58}, {23, 92, 127, 66}}},
|
||||
{Region: "Israel", IPs: []net.IP{{31, 168, 172, 136}, {31, 168, 172, 142}, {31, 168, 172, 143}, {31, 168, 172, 145}, {31, 168, 172, 146}, {31, 168, 172, 147}}},
|
||||
{Region: "Italy", IPs: []net.IP{{82, 102, 21, 98}, {82, 102, 21, 211}, {82, 102, 21, 214}, {82, 102, 21, 217}}},
|
||||
{Region: "Japan", IPs: []net.IP{{103, 208, 220, 130}, {103, 208, 220, 132}, {103, 208, 220, 135}, {103, 208, 220, 138}}},
|
||||
{Region: "Luxembourg", IPs: []net.IP{{92, 223, 89, 133}, {92, 223, 89, 134}, {92, 223, 89, 135}, {92, 223, 89, 136}, {92, 223, 89, 137}, {92, 223, 89, 138}, {92, 223, 89, 140}, {92, 223, 89, 142}}},
|
||||
{Region: "Mexico", IPs: []net.IP{{169, 57, 0, 200}, {169, 57, 0, 205}, {169, 57, 0, 211}, {169, 57, 0, 212}, {169, 57, 0, 214}, {169, 57, 0, 217}, {169, 57, 0, 218}, {169, 57, 0, 219}, {169, 57, 0, 221}, {169, 57, 0, 224}, {169, 57, 0, 225}, {169, 57, 0, 229}, {169, 57, 0, 230}, {169, 57, 0, 231}, {169, 57, 0, 233}, {169, 57, 0, 235}, {169, 57, 0, 238}, {169, 57, 0, 243}, {169, 57, 0, 247}, {169, 57, 0, 248}}},
|
||||
{Region: "Netherlands", IPs: []net.IP{{46, 166, 138, 145}, {46, 166, 138, 161}, {46, 166, 138, 170}, {46, 166, 138, 175}, {46, 166, 186, 247}, {46, 166, 188, 202}, {46, 166, 188, 216}, {46, 166, 190, 176}, {46, 166, 190, 179}, {46, 166, 190, 182}, {46, 166, 190, 183}, {46, 166, 190, 184}, {46, 166, 190, 186}, {46, 166, 190, 194}, {46, 166, 190, 219}, {46, 166, 190, 222}, {46, 166, 190, 227}, {46, 166, 190, 236}, {77, 247, 182, 241}, {109, 201, 154, 182}}},
|
||||
{Region: "New Zealand", IPs: []net.IP{{103, 231, 90, 171}, {103, 231, 90, 172}, {103, 231, 90, 173}, {103, 231, 90, 174}, {103, 231, 91, 34}, {103, 231, 91, 66}, {103, 231, 91, 67}, {103, 231, 91, 69}, {103, 231, 91, 70}, {103, 231, 91, 74}}},
|
||||
{Region: "Norway", IPs: []net.IP{{82, 102, 27, 50}, {82, 102, 27, 51}, {82, 102, 27, 52}, {82, 102, 27, 53}, {82, 102, 27, 54}, {82, 102, 27, 55}, {82, 102, 27, 56}, {82, 102, 27, 57}, {82, 102, 27, 74}, {82, 102, 27, 75}, {82, 102, 27, 76}, {82, 102, 27, 116}, {82, 102, 27, 117}, {82, 102, 27, 118}, {82, 102, 27, 125}, {82, 102, 27, 126}, {185, 206, 225, 222}, {185, 253, 97, 226}, {185, 253, 97, 227}, {185, 253, 97, 228}}},
|
||||
{Region: "Poland", IPs: []net.IP{{185, 244, 214, 14}, {185, 244, 214, 194}, {185, 244, 214, 196}, {185, 244, 214, 197}, {185, 244, 214, 198}, {185, 244, 214, 199}, {185, 244, 214, 200}}},
|
||||
{Region: "Romania", IPs: []net.IP{{86, 105, 25, 66}, {86, 105, 25, 68}, {86, 105, 25, 69}, {86, 105, 25, 70}, {86, 105, 25, 74}, {86, 105, 25, 75}, {86, 105, 25, 76}, {86, 105, 25, 77}, {86, 105, 25, 78}, {89, 33, 8, 38}, {89, 33, 8, 42}, {94, 176, 148, 34}, {94, 176, 148, 35}, {185, 45, 12, 126}, {185, 210, 218, 98}, {185, 210, 218, 99}, {185, 210, 218, 100}, {185, 210, 218, 101}, {185, 210, 218, 104}, {185, 210, 218, 105}}},
|
||||
{Region: "Singapore", IPs: []net.IP{{37, 120, 208, 66}, {37, 120, 208, 67}, {37, 120, 208, 68}, {37, 120, 208, 69}, {37, 120, 208, 71}, {37, 120, 208, 72}, {37, 120, 208, 73}, {37, 120, 208, 74}, {37, 120, 208, 75}, {37, 120, 208, 76}, {37, 120, 208, 77}, {37, 120, 208, 78}, {37, 120, 208, 79}, {37, 120, 208, 80}, {37, 120, 208, 81}, {37, 120, 208, 82}, {37, 120, 208, 83}}},
|
||||
{Region: "Spain", IPs: []net.IP{{37, 120, 148, 86}, {185, 230, 124, 53}, {194, 99, 104, 30}}},
|
||||
{Region: "Sweden", IPs: []net.IP{{45, 12, 220, 165}, {45, 12, 220, 171}, {45, 12, 220, 197}, {45, 12, 220, 199}, {45, 12, 220, 203}, {45, 12, 220, 205}, {45, 12, 220, 207}, {45, 12, 220, 208}, {45, 12, 220, 210}, {45, 12, 220, 213}, {45, 12, 220, 215}, {45, 12, 220, 221}, {45, 12, 220, 222}, {45, 12, 220, 236}, {45, 12, 220, 241}, {45, 12, 220, 249}, {45, 12, 220, 253}, {45, 83, 91, 20}, {45, 83, 91, 26}, {45, 83, 91, 28}}},
|
||||
{Region: "Switzerland", IPs: []net.IP{{82, 102, 24, 250}, {82, 102, 24, 252}, {91, 132, 136, 45}, {91, 132, 136, 53}, {185, 156, 175, 86}, {185, 156, 175, 93}, {185, 212, 170, 180}, {185, 212, 170, 183}, {185, 230, 125, 34}, {185, 230, 125, 35}, {185, 230, 125, 36}, {185, 230, 125, 38}, {185, 230, 125, 43}, {185, 230, 125, 45}, {185, 230, 125, 49}, {185, 230, 125, 51}, {185, 230, 125, 86}, {195, 206, 105, 215}, {195, 206, 105, 216}, {212, 102, 36, 1}}},
|
||||
{Region: "UAE", IPs: []net.IP{{45, 9, 250, 42}, {45, 9, 250, 46}, {45, 9, 250, 62}}},
|
||||
{Region: "UK London", IPs: []net.IP{{89, 238, 150, 8}, {89, 238, 150, 10}, {89, 238, 150, 17}, {89, 238, 150, 20}, {89, 238, 150, 21}, {89, 238, 150, 22}, {89, 238, 150, 23}, {89, 238, 154, 19}, {89, 238, 154, 116}, {89, 238, 154, 117}, {89, 238, 154, 124}, {89, 238, 154, 125}, {89, 238, 154, 165}, {89, 238, 154, 169}, {89, 238, 154, 171}, {89, 238, 154, 173}, {89, 238, 154, 228}, {89, 238, 154, 239}, {89, 238, 154, 247}, {185, 253, 98, 94}}},
|
||||
{Region: "UK Manchester", IPs: []net.IP{{89, 238, 137, 37}, {89, 238, 137, 39}, {89, 238, 137, 40}, {89, 238, 137, 41}, {89, 238, 137, 42}, {89, 238, 137, 43}, {89, 238, 139, 4}, {89, 238, 139, 5}, {89, 238, 139, 7}, {89, 238, 139, 8}, {89, 238, 139, 9}, {89, 238, 139, 10}, {89, 238, 139, 11}, {89, 238, 139, 12}, {89, 238, 139, 13}, {89, 238, 139, 52}, {89, 238, 139, 53}, {89, 238, 139, 55}, {89, 238, 139, 57}, {89, 238, 139, 58}}},
|
||||
{Region: "UK Southampton", IPs: []net.IP{{31, 24, 226, 132}, {31, 24, 226, 136}, {31, 24, 226, 147}, {31, 24, 226, 186}, {31, 24, 226, 188}, {31, 24, 226, 204}, {31, 24, 226, 205}, {31, 24, 226, 209}, {31, 24, 226, 219}, {31, 24, 226, 220}, {31, 24, 226, 222}, {31, 24, 226, 224}, {31, 24, 226, 225}, {31, 24, 226, 227}, {31, 24, 226, 232}, {31, 24, 226, 233}, {31, 24, 226, 235}, {31, 24, 226, 236}, {31, 24, 226, 241}, {31, 24, 226, 244}}},
|
||||
{Region: "US Atlanta", IPs: []net.IP{{66, 115, 168, 10}, {66, 115, 168, 19}, {66, 115, 168, 21}, {66, 115, 168, 23}, {66, 115, 168, 26}, {66, 115, 168, 28}, {66, 115, 169, 195}, {66, 115, 169, 209}, {66, 115, 169, 217}, {66, 115, 169, 218}, {66, 115, 169, 221}, {66, 115, 169, 226}, {66, 115, 169, 230}, {66, 115, 169, 233}, {66, 115, 169, 235}, {66, 115, 169, 237}, {66, 115, 169, 239}, {66, 115, 169, 240}, {66, 115, 169, 242}, {66, 115, 169, 244}}},
|
||||
{Region: "US California", IPs: []net.IP{{91, 207, 175, 53}, {91, 207, 175, 70}, {91, 207, 175, 71}, {91, 207, 175, 99}, {91, 207, 175, 101}, {91, 207, 175, 104}, {91, 207, 175, 110}, {91, 207, 175, 112}, {91, 207, 175, 166}, {91, 207, 175, 170}, {91, 207, 175, 177}, {91, 207, 175, 178}, {91, 207, 175, 207}, {91, 207, 175, 227}, {91, 207, 175, 228}, {91, 207, 175, 236}, {91, 207, 175, 252}, {185, 245, 87, 179}, {185, 245, 87, 216}, {212, 103, 49, 162}}},
|
||||
{Region: "US Chicago", IPs: []net.IP{{104, 200, 153, 96}, {199, 116, 115, 130}, {199, 116, 115, 131}, {199, 116, 115, 132}, {199, 116, 115, 133}, {199, 116, 115, 134}, {199, 116, 115, 135}, {199, 116, 115, 136}, {199, 116, 115, 137}, {199, 116, 115, 138}, {199, 116, 115, 139}, {199, 116, 115, 140}, {199, 116, 115, 141}, {199, 116, 115, 142}, {199, 116, 115, 143}, {199, 116, 115, 144}, {199, 116, 115, 145}, {199, 116, 115, 146}, {199, 116, 115, 147}, {199, 116, 115, 148}}},
|
||||
{Region: "US Denver", IPs: []net.IP{{174, 128, 225, 2}, {174, 128, 225, 106}, {174, 128, 225, 186}, {174, 128, 226, 10}, {174, 128, 226, 18}, {174, 128, 227, 226}, {174, 128, 242, 234}, {174, 128, 243, 114}, {174, 128, 243, 122}, {174, 128, 245, 106}, {174, 128, 250, 18}, {198, 148, 82, 82}, {198, 148, 88, 250}, {199, 115, 97, 202}, {199, 115, 98, 146}, {199, 115, 98, 226}, {199, 115, 99, 82}, {199, 115, 99, 218}, {199, 115, 101, 178}, {199, 115, 102, 154}}},
|
||||
{Region: "US East", IPs: []net.IP{{193, 37, 253, 50}, {193, 37, 253, 52}, {193, 37, 253, 105}, {193, 37, 253, 136}, {193, 37, 253, 137}, {194, 59, 251, 27}, {194, 59, 251, 37}, {194, 59, 251, 52}, {194, 59, 251, 68}, {194, 59, 251, 78}, {194, 59, 251, 80}, {194, 59, 251, 85}, {194, 59, 251, 87}, {194, 59, 251, 108}, {194, 59, 251, 136}, {194, 59, 251, 141}, {194, 59, 251, 166}, {194, 59, 251, 168}, {194, 59, 251, 218}, {194, 59, 251, 248}}},
|
||||
{Region: "US Florida", IPs: []net.IP{{193, 37, 252, 3}, {193, 37, 252, 6}, {193, 37, 252, 8}, {193, 37, 252, 11}, {193, 37, 252, 16}, {193, 37, 252, 19}, {193, 37, 252, 21}, {193, 37, 252, 48}, {193, 37, 252, 51}, {193, 37, 252, 53}, {193, 37, 252, 54}, {193, 37, 252, 58}, {193, 37, 252, 59}, {193, 37, 252, 70}, {193, 37, 252, 78}, {193, 37, 252, 82}, {193, 37, 252, 102}, {193, 37, 252, 105}, {193, 37, 252, 123}, {193, 37, 252, 126}}},
|
||||
{Region: "US Houston", IPs: []net.IP{{74, 81, 88, 26}, {74, 81, 88, 42}, {74, 81, 88, 58}, {74, 81, 88, 66}, {74, 81, 88, 114}, {74, 81, 88, 130}, {205, 251, 148, 34}, {205, 251, 148, 42}, {205, 251, 148, 66}, {205, 251, 148, 74}, {205, 251, 148, 82}, {205, 251, 148, 98}, {205, 251, 148, 138}, {205, 251, 150, 146}, {205, 251, 150, 194}, {205, 251, 150, 210}, {205, 251, 150, 218}, {205, 251, 150, 226}, {205, 251, 150, 234}, {205, 251, 151, 42}}},
|
||||
{Region: "US Las Vegas", IPs: []net.IP{{162, 251, 236, 2}, {162, 251, 236, 4}, {162, 251, 236, 5}, {162, 251, 236, 7}, {162, 251, 236, 8}, {162, 251, 236, 9}, {199, 127, 56, 82}, {199, 127, 56, 83}, {199, 127, 56, 84}, {199, 127, 56, 86}, {199, 127, 56, 87}, {199, 127, 56, 88}, {199, 127, 56, 89}, {199, 127, 56, 91}, {199, 127, 56, 114}, {199, 127, 56, 115}, {199, 127, 56, 117}, {199, 127, 56, 118}, {199, 127, 56, 119}, {199, 127, 56, 121}}},
|
||||
{Region: "US New York City", IPs: []net.IP{{107, 182, 231, 32}, {107, 182, 231, 37}, {107, 182, 231, 39}, {173, 244, 223, 122}, {209, 95, 50, 14}, {209, 95, 50, 16}, {209, 95, 50, 50}, {209, 95, 50, 55}, {209, 95, 50, 85}, {209, 95, 50, 89}, {209, 95, 50, 92}, {209, 95, 50, 93}, {209, 95, 50, 95}, {209, 95, 50, 99}, {209, 95, 50, 107}, {209, 95, 50, 113}, {209, 95, 50, 132}, {209, 95, 50, 133}, {209, 95, 50, 135}, {209, 95, 51, 22}}},
|
||||
{Region: "US Seattle", IPs: []net.IP{{104, 200, 154, 9}, {104, 200, 154, 11}, {104, 200, 154, 19}, {104, 200, 154, 21}, {104, 200, 154, 29}, {104, 200, 154, 37}, {104, 200, 154, 41}, {104, 200, 154, 44}, {104, 200, 154, 51}, {104, 200, 154, 58}, {104, 200, 154, 63}, {104, 200, 154, 69}, {104, 200, 154, 70}, {104, 200, 154, 72}, {104, 200, 154, 78}, {104, 200, 154, 79}, {104, 200, 154, 84}, {104, 200, 154, 87}, {104, 200, 154, 88}, {104, 200, 154, 97}}},
|
||||
{Region: "US Silicon Valley", IPs: []net.IP{{199, 116, 118, 134}, {199, 116, 118, 137}, {199, 116, 118, 140}, {199, 116, 118, 148}, {199, 116, 118, 150}, {199, 116, 118, 156}, {199, 116, 118, 163}, {199, 116, 118, 166}, {199, 116, 118, 168}, {199, 116, 118, 169}, {199, 116, 118, 196}, {199, 116, 118, 202}, {199, 116, 118, 209}, {199, 116, 118, 211}, {199, 116, 118, 215}, {199, 116, 118, 226}, {199, 116, 118, 227}, {199, 116, 118, 236}, {199, 116, 118, 237}, {199, 116, 118, 246}}},
|
||||
{Region: "US Texas", IPs: []net.IP{{162, 216, 46, 21}, {162, 216, 46, 25}, {162, 216, 46, 40}, {162, 216, 46, 51}, {162, 216, 46, 56}, {162, 216, 46, 57}, {162, 216, 46, 72}, {162, 216, 46, 76}, {162, 216, 46, 81}, {162, 216, 46, 106}, {162, 216, 46, 107}, {162, 216, 46, 117}, {162, 216, 46, 119}, {162, 216, 46, 121}, {162, 216, 46, 131}, {162, 216, 46, 136}, {162, 216, 46, 139}, {162, 216, 46, 141}, {162, 216, 46, 164}, {162, 216, 46, 171}}},
|
||||
{Region: "US Washington DC", IPs: []net.IP{{70, 32, 0, 24}, {70, 32, 0, 46}, {70, 32, 0, 55}, {70, 32, 0, 76}, {70, 32, 0, 121}, {70, 32, 0, 137}, {70, 32, 0, 153}, {70, 32, 0, 155}, {70, 32, 0, 165}, {70, 32, 0, 166}, {70, 32, 0, 167}, {70, 32, 0, 168}, {70, 32, 0, 169}, {70, 32, 0, 170}, {70, 32, 0, 172}, {70, 32, 0, 173}, {70, 32, 0, 176}, {70, 32, 0, 177}, {70, 32, 0, 178}, {70, 32, 0, 179}}},
|
||||
{Region: "US West", IPs: []net.IP{{104, 200, 151, 9}, {104, 200, 151, 13}, {104, 200, 151, 16}, {104, 200, 151, 17}, {104, 200, 151, 23}, {104, 200, 151, 24}, {104, 200, 151, 32}, {104, 200, 151, 35}, {104, 200, 151, 36}, {104, 200, 151, 37}, {104, 200, 151, 39}, {104, 200, 151, 41}, {104, 200, 151, 43}, {104, 200, 151, 47}, {104, 200, 151, 54}, {104, 200, 151, 59}, {104, 200, 151, 73}, {104, 200, 151, 75}, {104, 200, 151, 76}, {104, 200, 151, 88}}},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ package constants
|
||||
|
||||
const (
|
||||
// Announcement is a message announcement
|
||||
Announcement = "New VPN provider supported surfshark.com"
|
||||
Announcement = "Big code refactor, things may break but I'll fix them quickly!"
|
||||
// AnnouncementExpiration is the expiration date of the announcement in format yyyy-mm-dd
|
||||
AnnouncementExpiration = "2020-06-20"
|
||||
AnnouncementExpiration = "2020-06-25"
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@@ -11,164 +11,164 @@ const (
|
||||
SurfsharkOpenvpnStaticKeyV1 = "b02cb1d7c6fee5d4f89b8de72b51a8d0c7b282631d6fc19be1df6ebae9e2779e6d9f097058a31c97f57f0c35526a44ae09a01d1284b50b954d9246725a1ead1ff224a102ed9ab3da0152a15525643b2eee226c37041dc55539d475183b889a10e18bb94f079a4a49888da566b99783460ece01daaf93548beea6c827d9674897e7279ff1a19cb092659e8c1860fbad0db4ad0ad5732f1af4655dbd66214e552f04ed8fd0104e1d4bf99c249ac229ce169d9ba22068c6c0ab742424760911d4636aafb4b85f0c952a9ce4275bc821391aa65fcd0d2394f006e3fba0fd34c4bc4ab260f4b45dec3285875589c97d3087c9134d3a3aa2f904512e85aa2dc2202498"
|
||||
)
|
||||
|
||||
func SurfsharkServers() []models.SurfsharkServer {
|
||||
return []models.SurfsharkServer{
|
||||
{Region: models.SurfsharkRegion("Albania"), IPs: []net.IP{{31, 171, 152, 195}, {31, 171, 152, 197}, {31, 171, 154, 147}, {31, 171, 154, 149}, {31, 171, 154, 163}, {31, 171, 154, 165}}},
|
||||
{Region: models.SurfsharkRegion("Australia Adelaide"), IPs: []net.IP{{45, 248, 79, 19}, {45, 248, 79, 21}, {45, 248, 79, 27}, {45, 248, 79, 29}, {45, 248, 79, 35}, {45, 248, 79, 37}, {45, 248, 79, 51}, {45, 248, 79, 53}, {45, 248, 79, 67}, {45, 248, 79, 69}, {45, 248, 79, 83}, {45, 248, 79, 85}}},
|
||||
{Region: models.SurfsharkRegion("Australia Brisbane"), IPs: []net.IP{{45, 248, 77, 235}, {45, 248, 77, 237}, {144, 48, 39, 11}, {144, 48, 39, 13}, {144, 48, 39, 67}, {144, 48, 39, 69}, {144, 48, 39, 83}, {144, 48, 39, 85}, {144, 48, 39, 107}, {144, 48, 39, 109}, {144, 48, 39, 123}, {144, 48, 39, 125}, {144, 48, 39, 131}, {144, 48, 39, 133}}},
|
||||
{Region: models.SurfsharkRegion("Australia Melbourne"), IPs: []net.IP{{103, 192, 80, 131}, {103, 192, 80, 133}, {103, 192, 80, 139}, {103, 192, 80, 141}, {103, 192, 80, 147}, {103, 192, 80, 149}, {144, 48, 38, 19}, {144, 48, 38, 21}, {144, 48, 38, 139}, {144, 48, 38, 141}, {144, 48, 38, 147}, {144, 48, 38, 149}, {144, 48, 38, 179}, {144, 48, 38, 181}, {144, 48, 38, 183}}},
|
||||
{Region: models.SurfsharkRegion("Australia Perth"), IPs: []net.IP{{45, 248, 78, 43}, {45, 248, 78, 45}, {124, 150, 139, 27}, {124, 150, 139, 29}, {124, 150, 139, 35}, {124, 150, 139, 37}, {124, 150, 139, 43}, {124, 150, 139, 45}, {124, 150, 139, 123}, {124, 150, 139, 125}, {124, 150, 139, 179}, {124, 150, 139, 181}}},
|
||||
{Region: models.SurfsharkRegion("Australia Sydney"), IPs: []net.IP{{45, 125, 247, 43}, {45, 125, 247, 45}, {45, 125, 247, 91}, {45, 125, 247, 93}, {45, 125, 247, 195}, {45, 125, 247, 197}, {45, 248, 76, 171}, {45, 248, 76, 173}, {103, 25, 59, 51}, {103, 25, 59, 53}, {103, 25, 59, 83}, {103, 25, 59, 85}, {103, 25, 59, 87}, {180, 149, 228, 115}, {180, 149, 228, 117}}},
|
||||
{Region: models.SurfsharkRegion("Australia US"), IPs: []net.IP{{45, 76, 117, 108}}},
|
||||
{Region: models.SurfsharkRegion("Austria"), IPs: []net.IP{{5, 253, 207, 51}, {5, 253, 207, 53}, {5, 253, 207, 83}, {5, 253, 207, 85}, {37, 120, 212, 75}, {37, 120, 212, 77}, {37, 120, 212, 131}, {37, 120, 212, 133}, {37, 120, 212, 139}, {37, 120, 212, 141}, {37, 120, 212, 147}, {37, 120, 212, 149}, {91, 132, 139, 99}, {91, 132, 139, 101}, {91, 132, 139, 105}, {91, 132, 139, 107}}},
|
||||
{Region: models.SurfsharkRegion("Azerbaijan"), IPs: []net.IP{{94, 20, 21, 85}, {94, 20, 21, 87}}},
|
||||
{Region: models.SurfsharkRegion("Belgium"), IPs: []net.IP{{5, 253, 205, 99}, {5, 253, 205, 101}, {5, 253, 205, 179}, {5, 253, 205, 181}, {5, 253, 205, 211}, {5, 253, 205, 213}, {5, 253, 205, 227}, {5, 253, 205, 229}, {37, 120, 143, 117}, {37, 120, 143, 121}, {37, 120, 143, 125}, {37, 120, 218, 251}, {37, 120, 218, 253}, {89, 249, 73, 195}, {89, 249, 73, 197}, {185, 104, 186, 75}, {185, 104, 186, 77}, {185, 232, 21, 51}, {185, 232, 21, 53}}},
|
||||
{Region: models.SurfsharkRegion("Bosnia and Herzegovina "), IPs: []net.IP{{185, 99, 3, 12}, {185, 99, 3, 207}, {185, 99, 3, 214}, {185, 164, 34, 252}, {185, 212, 111, 6}, {185, 212, 111, 41}, {185, 212, 111, 59}}},
|
||||
{Region: models.SurfsharkRegion("Brazil"), IPs: []net.IP{{181, 215, 183, 244}, {181, 215, 183, 248}, {191, 96, 70, 171}}},
|
||||
{Region: models.SurfsharkRegion("Bulgaria"), IPs: []net.IP{{37, 120, 152, 35}, {37, 120, 152, 37}, {37, 120, 152, 39}, {37, 120, 152, 195}, {37, 120, 152, 197}, {217, 138, 202, 19}, {217, 138, 202, 21}}},
|
||||
{Region: models.SurfsharkRegion("Canada Montreal"), IPs: []net.IP{{172, 98, 82, 83}, {172, 98, 82, 85}, {172, 98, 82, 243}, {172, 98, 82, 245}, {198, 8, 85, 3}, {198, 8, 85, 5}, {198, 8, 85, 19}, {198, 8, 85, 21}, {198, 8, 85, 35}, {198, 8, 85, 37}, {198, 8, 85, 40}, {198, 8, 85, 42}, {198, 8, 85, 45}, {198, 8, 85, 47}, {198, 8, 85, 69}, {198, 8, 85, 72}, {198, 8, 85, 74}, {198, 8, 85, 77}, {198, 8, 85, 79}, {198, 8, 85, 82}, {198, 8, 85, 84}, {198, 8, 85, 87}, {198, 8, 85, 131}, {198, 8, 85, 133}}},
|
||||
{Region: models.SurfsharkRegion("Canada Toronto"), IPs: []net.IP{{68, 71, 244, 131}, {68, 71, 244, 134}, {68, 71, 244, 195}, {68, 71, 244, 197}, {68, 71, 244, 200}, {68, 71, 244, 202}, {68, 71, 244, 210}, {68, 71, 244, 212}, {68, 71, 244, 215}, {68, 71, 244, 217}, {68, 71, 244, 220}, {68, 71, 244, 222}, {104, 200, 138, 3}, {104, 200, 138, 5}, {104, 200, 138, 7}, {104, 200, 138, 147}, {104, 200, 138, 149}, {104, 200, 138, 152}, {104, 200, 138, 154}, {104, 200, 138, 163}, {104, 200, 138, 165}, {162, 253, 71, 211}, {162, 253, 71, 213}, {162, 253, 71, 215}}},
|
||||
{Region: models.SurfsharkRegion("Canada US"), IPs: []net.IP{{159, 203, 57, 80}}},
|
||||
{Region: models.SurfsharkRegion("Canada Vancouver"), IPs: []net.IP{{66, 115, 147, 67}, {66, 115, 147, 69}, {66, 115, 147, 72}, {66, 115, 147, 74}, {66, 115, 147, 79}, {66, 115, 147, 82}, {66, 115, 147, 84}, {66, 115, 147, 87}, {66, 115, 147, 89}, {66, 115, 147, 92}, {66, 115, 147, 94}, {104, 200, 132, 35}, {104, 200, 132, 37}, {104, 200, 132, 39}, {107, 181, 177, 179}, {107, 181, 177, 181}, {107, 181, 177, 183}, {172, 83, 40, 147}, {172, 83, 40, 149}, {208, 78, 41, 195}, {208, 78, 41, 197}, {208, 78, 41, 200}, {208, 78, 41, 202}}},
|
||||
{Region: models.SurfsharkRegion("Chile"), IPs: []net.IP{{31, 169, 121, 16}, {131, 221, 32, 195}}},
|
||||
{Region: models.SurfsharkRegion("Colombia"), IPs: []net.IP{{45, 129, 32, 15}}},
|
||||
{Region: models.SurfsharkRegion("Costa Rica"), IPs: []net.IP{{176, 227, 241, 21}}},
|
||||
{Region: models.SurfsharkRegion("Croatia"), IPs: []net.IP{{85, 10, 56, 226}, {85, 10, 56, 228}, {89, 164, 99, 109}, {89, 164, 99, 111}}},
|
||||
{Region: models.SurfsharkRegion("Cyprus"), IPs: []net.IP{{195, 47, 194, 40}, {195, 47, 194, 42}}},
|
||||
{Region: models.SurfsharkRegion("Czech Republic"), IPs: []net.IP{{95, 168, 209, 111}, {185, 152, 64, 151}, {185, 152, 64, 178}, {193, 9, 112, 179}, {193, 9, 112, 181}, {193, 9, 112, 183}, {193, 9, 112, 195}, {193, 9, 112, 197}, {193, 9, 112, 199}}},
|
||||
{Region: models.SurfsharkRegion("Denmark"), IPs: []net.IP{{37, 120, 145, 19}, {37, 120, 145, 21}, {37, 120, 194, 91}, {37, 120, 194, 93}, {37, 120, 194, 99}, {37, 120, 194, 101}, {37, 120, 194, 107}, {37, 120, 194, 109}, {37, 120, 194, 115}, {37, 120, 194, 117}, {37, 120, 194, 123}, {37, 120, 194, 125}, {37, 120, 194, 163}, {37, 120, 194, 165}, {45, 12, 221, 163}, {45, 12, 221, 165}, {45, 12, 221, 167}, {45, 12, 221, 179}, {45, 12, 221, 181}, {45, 12, 221, 183}, {95, 174, 65, 67}, {95, 174, 65, 69}, {95, 174, 65, 71}}},
|
||||
{Region: models.SurfsharkRegion("Estonia"), IPs: []net.IP{{165, 231, 163, 3}, {165, 231, 163, 5}, {165, 231, 163, 7}, {165, 231, 163, 19}, {165, 231, 163, 21}, {165, 231, 163, 23}, {185, 174, 159, 51}, {185, 174, 159, 53}, {185, 174, 159, 59}, {185, 174, 159, 61}, {185, 174, 159, 67}, {185, 174, 159, 69}}},
|
||||
{Region: models.SurfsharkRegion("Finland"), IPs: []net.IP{{196, 244, 191, 163}, {196, 244, 191, 165}, {196, 244, 191, 195}, {196, 244, 191, 197}}},
|
||||
{Region: models.SurfsharkRegion("France Bordeaux"), IPs: []net.IP{{185, 108, 106, 19}, {185, 108, 106, 21}, {185, 108, 106, 51}, {185, 108, 106, 53}, {185, 108, 106, 67}, {185, 108, 106, 69}, {185, 108, 106, 140}, {185, 108, 106, 142}, {185, 108, 106, 144}, {185, 108, 106, 146}, {185, 108, 106, 148}, {185, 108, 106, 150}, {185, 108, 106, 152}, {185, 108, 106, 154}, {185, 108, 106, 158}, {185, 108, 106, 160}, {185, 108, 106, 162}, {185, 108, 106, 164}, {185, 108, 106, 166}}},
|
||||
{Region: models.SurfsharkRegion("France Marseilles"), IPs: []net.IP{{185, 166, 84, 5}, {185, 166, 84, 19}, {185, 166, 84, 23}, {185, 166, 84, 29}, {185, 166, 84, 31}, {185, 166, 84, 36}, {185, 166, 84, 38}, {185, 166, 84, 51}, {185, 166, 84, 55}, {185, 166, 84, 57}, {185, 166, 84, 59}, {185, 166, 84, 61}, {185, 166, 84, 63}, {185, 166, 84, 75}, {185, 166, 84, 79}, {185, 166, 84, 81}, {185, 166, 84, 87}, {185, 166, 84, 89}, {185, 166, 84, 93}, {185, 166, 84, 95}}},
|
||||
{Region: models.SurfsharkRegion("France Paris"), IPs: []net.IP{{45, 83, 90, 179}, {45, 83, 90, 181}, {45, 83, 90, 183}, {45, 89, 174, 59}, {45, 89, 174, 61}, {45, 89, 174, 85}, {45, 89, 174, 91}, {45, 89, 174, 93}, {45, 89, 174, 101}, {45, 89, 174, 103}, {84, 17, 43, 178}, {84, 17, 43, 180}, {84, 17, 43, 183}, {84, 17, 43, 185}, {84, 17, 60, 235}, {84, 17, 60, 250}, {84, 247, 51, 235}, {84, 247, 51, 243}, {84, 247, 51, 245}, {84, 247, 51, 253}, {185, 246, 211, 69}, {185, 246, 211, 103}, {217, 138, 207, 243}, {217, 138, 207, 245}}},
|
||||
{Region: models.SurfsharkRegion("France Sweden"), IPs: []net.IP{{199, 247, 8, 20}}},
|
||||
{Region: models.SurfsharkRegion("Germany Berlin"), IPs: []net.IP{{37, 120, 217, 131}, {37, 120, 217, 147}, {37, 120, 217, 149}, {37, 120, 217, 179}, {37, 120, 217, 181}, {152, 89, 163, 19}, {152, 89, 163, 21}, {152, 89, 163, 23}, {152, 89, 163, 227}, {152, 89, 163, 229}, {152, 89, 163, 231}, {152, 89, 163, 243}, {193, 176, 86, 195}, {193, 176, 86, 199}, {217, 138, 216, 59}, {217, 138, 216, 61}, {217, 138, 216, 219}, {217, 138, 216, 227}, {217, 138, 216, 229}, {217, 138, 216, 235}, {217, 138, 216, 237}, {217, 138, 216, 243}, {217, 138, 216, 245}, {217, 138, 216, 251}, {217, 138, 216, 253}}},
|
||||
{Region: models.SurfsharkRegion("Germany Frankfurt am Main st001"), IPs: []net.IP{{45, 87, 212, 179}}},
|
||||
{Region: models.SurfsharkRegion("Germany Frankfurt am Main st002"), IPs: []net.IP{{45, 87, 212, 181}}},
|
||||
{Region: models.SurfsharkRegion("Germany Frankfurt am Main st003"), IPs: []net.IP{{45, 87, 212, 183}}},
|
||||
{Region: models.SurfsharkRegion("Germany Frankfurt am Main"), IPs: []net.IP{{37, 120, 196, 53}, {37, 120, 196, 59}, {37, 120, 196, 61}, {37, 120, 196, 173}, {37, 120, 197, 11}, {37, 120, 197, 13}, {82, 102, 16, 99}, {82, 102, 16, 101}, {84, 16, 240, 174}, {84, 16, 240, 176}, {89, 187, 169, 104}, {89, 187, 169, 119}, {185, 59, 220, 144}, {185, 59, 220, 150}, {185, 59, 220, 168}, {185, 59, 220, 172}, {185, 93, 180, 101}, {185, 102, 219, 6}, {185, 102, 219, 47}, {185, 102, 219, 49}, {185, 158, 135, 36}}},
|
||||
{Region: models.SurfsharkRegion("Germany Munich"), IPs: []net.IP{{178, 238, 231, 53}, {178, 238, 231, 55}}},
|
||||
{Region: models.SurfsharkRegion("Germany Nuremberg"), IPs: []net.IP{{62, 171, 149, 160}, {62, 171, 149, 162}, {62, 171, 151, 180}, {62, 171, 151, 182}}},
|
||||
{Region: models.SurfsharkRegion("Germany Singapour"), IPs: []net.IP{{159, 89, 14, 157}}},
|
||||
{Region: models.SurfsharkRegion("Germany UK"), IPs: []net.IP{{46, 101, 250, 73}}},
|
||||
{Region: models.SurfsharkRegion("Greece"), IPs: []net.IP{{87, 239, 248, 78}, {87, 239, 248, 80}, {87, 239, 248, 82}, {87, 239, 248, 85}, {87, 239, 248, 87}, {185, 226, 65, 150}}},
|
||||
{Region: models.SurfsharkRegion("Hong Kong"), IPs: []net.IP{{64, 120, 121, 216}, {64, 120, 121, 232}, {64, 120, 121, 234}, {64, 120, 121, 236}, {64, 120, 121, 238}, {64, 120, 121, 240}, {64, 120, 121, 244}, {64, 120, 121, 246}, {64, 120, 121, 248}, {84, 17, 37, 154}, {84, 17, 37, 156}, {84, 17, 37, 158}, {84, 17, 37, 160}, {84, 17, 57, 185}, {209, 58, 186, 10}, {209, 58, 186, 12}, {209, 58, 186, 14}, {209, 58, 186, 16}, {209, 58, 186, 18}}},
|
||||
{Region: models.SurfsharkRegion("Hungary"), IPs: []net.IP{{37, 120, 144, 147}, {37, 120, 144, 149}, {37, 120, 144, 151}, {37, 120, 144, 197}, {37, 120, 144, 199}, {37, 120, 144, 211}, {37, 120, 144, 213}, {37, 120, 144, 215}, {37, 120, 144, 243}, {37, 120, 144, 245}}},
|
||||
{Region: models.SurfsharkRegion("Iceland"), IPs: []net.IP{{82, 221, 128, 156}}},
|
||||
{Region: models.SurfsharkRegion("India Chennai"), IPs: []net.IP{{103, 94, 27, 99}, {103, 94, 27, 101}, {103, 94, 27, 115}, {103, 94, 27, 117}, {103, 94, 27, 179}, {103, 94, 27, 181}, {103, 94, 27, 227}, {103, 94, 27, 229}, {103, 108, 117, 131}, {103, 108, 117, 133}, {103, 108, 117, 147}, {103, 108, 117, 149}, {103, 108, 117, 151}}},
|
||||
{Region: models.SurfsharkRegion("India Indore"), IPs: []net.IP{{103, 39, 132, 187}, {103, 39, 132, 189}, {103, 73, 189, 219}, {103, 73, 189, 221}, {137, 59, 52, 107}, {137, 59, 52, 109}}},
|
||||
{Region: models.SurfsharkRegion("India Mumbai"), IPs: []net.IP{{103, 221, 233, 61}, {103, 221, 233, 86}, {103, 221, 233, 88}, {103, 221, 233, 89}, {103, 221, 233, 91}, {165, 231, 253, 147}, {165, 231, 253, 149}, {165, 231, 253, 163}}},
|
||||
{Region: models.SurfsharkRegion("India UK"), IPs: []net.IP{{134, 209, 148, 122}}},
|
||||
{Region: models.SurfsharkRegion("Indonesia"), IPs: []net.IP{{103, 227, 255, 211}, {103, 227, 255, 213}, {103, 227, 255, 215}}},
|
||||
{Region: models.SurfsharkRegion("Ireland"), IPs: []net.IP{{185, 108, 128, 114}, {185, 108, 128, 118}, {185, 108, 128, 159}, {185, 108, 128, 161}, {185, 108, 128, 181}, {185, 108, 128, 183}, {185, 108, 128, 185}, {217, 138, 222, 43}, {217, 138, 222, 45}, {217, 138, 222, 51}, {217, 138, 222, 53}}},
|
||||
{Region: models.SurfsharkRegion("Israel"), IPs: []net.IP{{87, 239, 255, 107}, {87, 239, 255, 109}, {87, 239, 255, 111}, {87, 239, 255, 114}, {87, 239, 255, 116}, {87, 239, 255, 119}, {87, 239, 255, 121}}},
|
||||
{Region: models.SurfsharkRegion("Italy Milan"), IPs: []net.IP{{37, 120, 201, 23}, {37, 120, 201, 67}, {37, 120, 201, 69}, {37, 120, 201, 71}, {45, 9, 251, 163}, {84, 17, 58, 136}, {84, 17, 58, 146}, {84, 17, 58, 148}, {84, 17, 58, 150}, {84, 17, 58, 152}, {84, 17, 58, 154}, {84, 17, 58, 156}, {84, 17, 58, 159}, {84, 17, 58, 161}, {84, 17, 58, 190}, {84, 17, 58, 195}, {84, 17, 58, 197}, {84, 17, 58, 200}, {84, 17, 58, 207}, {95, 174, 64, 69}, {95, 174, 64, 71}, {185, 128, 27, 41}, {212, 102, 54, 145}, {212, 102, 54, 160}, {212, 102, 54, 162}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st001"), IPs: []net.IP{{45, 87, 213, 19}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st002"), IPs: []net.IP{{45, 87, 213, 21}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st003"), IPs: []net.IP{{45, 87, 213, 23}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st004"), IPs: []net.IP{{217, 138, 212, 19}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st005"), IPs: []net.IP{{217, 138, 212, 21}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st006"), IPs: []net.IP{{82, 102, 28, 123}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo st007"), IPs: []net.IP{{82, 102, 28, 125}}},
|
||||
{Region: models.SurfsharkRegion("Japan Tokyo"), IPs: []net.IP{{45, 87, 213, 3}, {45, 87, 213, 5}, {45, 87, 213, 7}, {45, 87, 213, 83}, {45, 87, 213, 85}, {45, 87, 213, 87}, {45, 87, 213, 101}, {45, 87, 213, 103}, {45, 87, 213, 105}, {45, 87, 213, 211}, {45, 87, 213, 213}, {45, 87, 213, 243}, {45, 87, 213, 245}, {84, 17, 34, 24}, {84, 17, 34, 26}, {84, 17, 34, 44}, {84, 17, 34, 46}, {89, 187, 161, 2}, {89, 187, 161, 4}, {89, 187, 161, 239}, {89, 187, 161, 241}, {103, 208, 221, 227}, {103, 208, 221, 229}, {185, 242, 4, 163}}},
|
||||
{Region: models.SurfsharkRegion("Kazakhstan"), IPs: []net.IP{{45, 136, 56, 54}, {45, 136, 56, 57}, {45, 136, 56, 61}, {45, 136, 56, 64}}},
|
||||
{Region: models.SurfsharkRegion("Korea"), IPs: []net.IP{{27, 255, 77, 195}, {27, 255, 77, 197}, {27, 255, 77, 226}, {61, 14, 210, 227}, {61, 14, 210, 229}, {61, 14, 210, 232}, {61, 14, 210, 234}, {61, 14, 210, 237}, {61, 14, 210, 239}, {61, 14, 210, 242}, {61, 14, 210, 244}, {61, 97, 243, 119}, {61, 97, 243, 124}, {103, 249, 28, 215}, {103, 249, 28, 227}, {103, 249, 28, 229}, {103, 249, 28, 231}}},
|
||||
{Region: models.SurfsharkRegion("Latvia"), IPs: []net.IP{{91, 203, 70, 186}, {91, 203, 70, 188}, {188, 92, 78, 135}, {188, 92, 78, 137}, {188, 92, 78, 140}, {188, 92, 78, 142}, {188, 92, 78, 145}, {188, 92, 78, 147}, {188, 92, 78, 150}, {188, 92, 78, 152}}},
|
||||
{Region: models.SurfsharkRegion("Libya"), IPs: []net.IP{{41, 208, 72, 157}, {41, 208, 72, 204}, {41, 208, 72, 207}}},
|
||||
{Region: models.SurfsharkRegion("Luxembourg"), IPs: []net.IP{{185, 153, 151, 60}, {185, 153, 151, 62}, {185, 153, 151, 64}, {185, 153, 151, 66}, {185, 153, 151, 68}, {185, 153, 151, 70}, {185, 153, 151, 73}, {185, 153, 151, 75}, {185, 153, 151, 78}, {185, 153, 151, 80}, {185, 153, 151, 82}, {185, 153, 151, 83}, {185, 153, 151, 85}, {185, 153, 151, 87}, {185, 153, 151, 91}}},
|
||||
{Region: models.SurfsharkRegion("Malaysia"), IPs: []net.IP{{42, 0, 30, 135}, {42, 0, 30, 160}, {42, 0, 30, 162}, {42, 0, 30, 164}, {42, 0, 30, 177}, {42, 0, 30, 179}, {42, 0, 30, 209}, {42, 0, 30, 213}, {42, 0, 30, 215}}},
|
||||
{Region: models.SurfsharkRegion("Moldova"), IPs: []net.IP{{178, 175, 148, 39}}},
|
||||
{Region: models.SurfsharkRegion("Netherlands Amsterdam st001"), IPs: []net.IP{{81, 19, 209, 51}}},
|
||||
{Region: models.SurfsharkRegion("Netherlands Amsterdam"), IPs: []net.IP{{81, 19, 208, 56}, {81, 19, 208, 68}, {81, 19, 209, 20}, {81, 19, 209, 57}, {81, 19, 209, 113}, {81, 19, 209, 124}, {89, 46, 223, 78}, {89, 46, 223, 86}, {89, 46, 223, 92}, {89, 46, 223, 100}, {89, 46, 223, 104}, {89, 46, 223, 106}, {89, 46, 223, 212}, {89, 46, 223, 214}, {89, 46, 223, 217}, {89, 46, 223, 222}, {89, 46, 223, 224}, {89, 46, 223, 227}, {89, 187, 174, 231}, {185, 59, 222, 92}, {185, 59, 222, 94}, {185, 59, 222, 166}, {185, 59, 222, 168}, {185, 232, 20, 131}}},
|
||||
{Region: models.SurfsharkRegion("Netherlands US"), IPs: []net.IP{{188, 166, 98, 91}}},
|
||||
{Region: models.SurfsharkRegion("New Zealand"), IPs: []net.IP{{180, 149, 231, 3}, {180, 149, 231, 11}, {180, 149, 231, 13}, {180, 149, 231, 43}, {180, 149, 231, 45}, {180, 149, 231, 67}, {180, 149, 231, 69}, {180, 149, 231, 115}, {180, 149, 231, 117}, {180, 149, 231, 119}, {180, 149, 231, 163}, {180, 149, 231, 165}}},
|
||||
{Region: models.SurfsharkRegion("Nigeria"), IPs: []net.IP{{102, 165, 23, 4}, {102, 165, 23, 6}, {102, 165, 23, 38}, {102, 165, 23, 40}, {102, 165, 23, 42}}},
|
||||
{Region: models.SurfsharkRegion("North Macedonia"), IPs: []net.IP{{185, 225, 28, 67}, {185, 225, 28, 69}, {185, 225, 28, 83}, {185, 225, 28, 85}, {185, 225, 28, 91}, {185, 225, 28, 93}, {185, 225, 28, 99}, {185, 225, 28, 101}, {185, 225, 28, 107}, {185, 225, 28, 109}}},
|
||||
{Region: models.SurfsharkRegion("Norway"), IPs: []net.IP{{45, 12, 223, 67}, {45, 12, 223, 69}, {45, 12, 223, 71}, {45, 12, 223, 195}, {45, 12, 223, 197}, {45, 12, 223, 211}, {45, 12, 223, 213}, {84, 247, 50, 27}, {84, 247, 50, 29}, {84, 247, 50, 67}, {84, 247, 50, 69}, {95, 174, 66, 35}, {95, 174, 66, 37}, {95, 174, 66, 39}, {95, 174, 66, 41}}},
|
||||
{Region: models.SurfsharkRegion("Paraguay"), IPs: []net.IP{{181, 40, 18, 47}, {181, 40, 18, 56}, {181, 40, 18, 59}, {186, 16, 32, 163}, {186, 16, 32, 173}}},
|
||||
{Region: models.SurfsharkRegion("Philippines"), IPs: []net.IP{{45, 134, 224, 3}, {45, 134, 224, 5}, {45, 134, 224, 8}, {45, 134, 224, 10}}},
|
||||
{Region: models.SurfsharkRegion("Poland Gdansk"), IPs: []net.IP{{5, 187, 49, 187}, {5, 187, 49, 189}, {5, 187, 53, 51}, {5, 187, 53, 53}, {5, 187, 53, 55}}},
|
||||
{Region: models.SurfsharkRegion("Poland Warsaw"), IPs: []net.IP{{5, 253, 206, 67}, {5, 253, 206, 69}, {5, 253, 206, 71}, {5, 253, 206, 227}, {5, 253, 206, 229}, {84, 17, 55, 132}, {84, 17, 55, 134}, {185, 246, 208, 72}, {185, 246, 208, 77}, {185, 246, 208, 105}, {185, 246, 208, 107}, {185, 246, 208, 176}, {185, 246, 208, 182}}},
|
||||
{Region: models.SurfsharkRegion("Portugal Lisbon"), IPs: []net.IP{{5, 154, 174, 26}, {5, 154, 174, 65}, {5, 154, 174, 67}, {5, 154, 174, 75}, {5, 154, 174, 77}, {5, 154, 174, 99}, {5, 154, 174, 101}, {5, 154, 174, 115}, {5, 154, 174, 117}, {5, 154, 174, 171}, {5, 154, 174, 173}, {5, 154, 174, 179}, {5, 154, 174, 181}, {5, 154, 174, 187}, {5, 154, 174, 189}, {5, 154, 174, 211}, {5, 154, 174, 213}, {5, 154, 174, 219}, {5, 154, 174, 221}, {5, 154, 174, 227}, {5, 154, 174, 229}}},
|
||||
{Region: models.SurfsharkRegion("Portugal Loule"), IPs: []net.IP{{176, 61, 146, 84}, {176, 61, 146, 86}, {176, 61, 146, 106}, {176, 61, 146, 108}, {176, 61, 146, 113}, {176, 61, 146, 116}, {176, 61, 146, 118}, {176, 61, 146, 121}, {176, 61, 146, 123}, {176, 61, 148, 60}, {176, 61, 148, 62}}},
|
||||
{Region: models.SurfsharkRegion("Portugal Porto"), IPs: []net.IP{{194, 39, 127, 21}, {194, 39, 127, 23}, {194, 39, 127, 36}, {194, 39, 127, 38}, {194, 39, 127, 231}, {194, 39, 127, 233}, {194, 39, 127, 240}, {194, 39, 127, 242}, {194, 39, 127, 244}}},
|
||||
{Region: models.SurfsharkRegion("Romania"), IPs: []net.IP{{86, 106, 137, 147}, {86, 106, 137, 149}, {194, 68, 44, 61}}},
|
||||
{Region: models.SurfsharkRegion("Russia Moscow"), IPs: []net.IP{{213, 183, 56, 18}, {213, 183, 56, 145}, {213, 183, 56, 160}, {213, 183, 56, 166}, {213, 183, 56, 233}, {213, 183, 56, 236}}},
|
||||
{Region: models.SurfsharkRegion("Russia St. Petersburg"), IPs: []net.IP{{213, 183, 54, 23}, {213, 183, 54, 109}, {213, 183, 54, 143}, {213, 183, 54, 165}}},
|
||||
{Region: models.SurfsharkRegion("Serbia"), IPs: []net.IP{{37, 120, 193, 51}, {37, 120, 193, 53}, {152, 89, 160, 115}, {152, 89, 160, 117}, {152, 89, 160, 119}, {152, 89, 160, 121}, {152, 89, 160, 123}, {152, 89, 160, 125}, {152, 89, 160, 211}, {152, 89, 160, 213}, {152, 89, 160, 215}}},
|
||||
{Region: models.SurfsharkRegion("Singapore Hong Kong"), IPs: []net.IP{{206, 189, 83, 129}}},
|
||||
{Region: models.SurfsharkRegion("Singapore Netherlands"), IPs: []net.IP{{104, 248, 148, 18}}},
|
||||
{Region: models.SurfsharkRegion("Singapore st001"), IPs: []net.IP{{217, 138, 201, 91}}},
|
||||
{Region: models.SurfsharkRegion("Singapore st002"), IPs: []net.IP{{217, 138, 201, 93}}},
|
||||
{Region: models.SurfsharkRegion("Singapore st003"), IPs: []net.IP{{84, 247, 49, 19}}},
|
||||
{Region: models.SurfsharkRegion("Singapore st004"), IPs: []net.IP{{84, 247, 49, 21}}},
|
||||
{Region: models.SurfsharkRegion("Singapore"), IPs: []net.IP{{89, 187, 163, 130}, {89, 187, 163, 132}, {89, 187, 163, 134}, {89, 187, 163, 136}, {103, 254, 153, 171}, {103, 254, 153, 176}, {103, 254, 155, 229}, {103, 254, 155, 241}, {209, 58, 170, 134}, {209, 58, 170, 142}, {209, 58, 170, 144}, {209, 58, 170, 146}, {209, 58, 170, 159}, {209, 58, 170, 163}, {209, 58, 170, 164}, {209, 58, 170, 169}, {209, 58, 170, 172}, {209, 58, 176, 43}, {209, 58, 176, 45}, {209, 58, 176, 47}}},
|
||||
{Region: models.SurfsharkRegion("Slovekia"), IPs: []net.IP{{37, 120, 221, 3}, {37, 120, 221, 5}, {193, 37, 255, 35}, {193, 37, 255, 37}, {193, 37, 255, 39}, {193, 37, 255, 41}}},
|
||||
{Region: models.SurfsharkRegion("Slovenia"), IPs: []net.IP{{195, 158, 249, 36}, {195, 158, 249, 38}, {195, 158, 249, 40}, {195, 158, 249, 42}}},
|
||||
{Region: models.SurfsharkRegion("South Africa"), IPs: []net.IP{{154, 127, 49, 226}, {154, 127, 49, 228}, {154, 127, 49, 230}, {154, 127, 49, 232}, {196, 251, 250, 111}}},
|
||||
{Region: models.SurfsharkRegion("Spain Barcelona"), IPs: []net.IP{{37, 120, 142, 133}, {37, 120, 142, 135}, {185, 188, 61, 5}, {185, 188, 61, 7}}},
|
||||
{Region: models.SurfsharkRegion("Spain Madrid"), IPs: []net.IP{{37, 120, 148, 213}, {82, 102, 17, 179}, {82, 102, 17, 181}, {82, 102, 17, 183}, {82, 102, 17, 185}, {84, 17, 62, 163}, {84, 17, 62, 165}, {84, 17, 62, 181}, {89, 37, 95, 7}, {89, 37, 95, 9}, {89, 37, 95, 11}, {89, 37, 95, 15}, {89, 37, 95, 17}, {89, 37, 95, 19}, {89, 37, 95, 25}, {188, 208, 141, 98}, {188, 208, 141, 114}, {212, 102, 48, 2}, {212, 102, 48, 4}, {212, 102, 48, 8}, {212, 102, 48, 10}, {212, 102, 48, 13}, {212, 102, 48, 15}, {212, 102, 48, 18}, {212, 102, 48, 20}}},
|
||||
{Region: models.SurfsharkRegion("Spain Valencia"), IPs: []net.IP{{185, 153, 150, 44}, {185, 153, 150, 46}, {185, 153, 150, 48}, {185, 153, 150, 50}, {185, 153, 150, 52}, {185, 153, 150, 54}, {185, 153, 150, 56}, {185, 153, 150, 58}, {196, 196, 150, 67}, {196, 196, 150, 69}, {196, 196, 150, 71}, {196, 196, 150, 83}, {196, 196, 150, 85}}},
|
||||
{Region: models.SurfsharkRegion("Sweden"), IPs: []net.IP{{45, 83, 91, 131}, {45, 83, 91, 133}, {45, 83, 91, 135}, {45, 83, 91, 147}, {45, 83, 91, 149}, {45, 83, 91, 151}, {46, 227, 69, 23}, {46, 227, 69, 25}, {46, 227, 69, 27}, {46, 227, 69, 29}, {185, 76, 9, 34}, {185, 76, 9, 36}, {185, 76, 9, 39}, {185, 76, 9, 41}, {185, 76, 9, 44}, {185, 76, 9, 46}, {185, 76, 9, 49}, {185, 76, 9, 51}}},
|
||||
{Region: models.SurfsharkRegion("Switzerland"), IPs: []net.IP{{37, 120, 213, 3}, {37, 120, 213, 7}, {45, 12, 222, 245}, {84, 17, 53, 86}, {84, 17, 53, 166}, {84, 17, 53, 168}, {84, 17, 53, 208}, {84, 17, 53, 210}, {84, 17, 53, 212}, {84, 17, 53, 216}, {84, 17, 53, 219}, {84, 17, 53, 221}, {84, 17, 53, 223}, {84, 17, 53, 225}, {84, 17, 53, 227}, {84, 39, 112, 35}}},
|
||||
{Region: models.SurfsharkRegion("Taiwan"), IPs: []net.IP{{2, 58, 241, 3}, {2, 58, 241, 5}, {2, 58, 242, 43}, {2, 58, 242, 45}, {2, 58, 242, 155}, {2, 58, 242, 157}, {2, 58, 243, 51}, {2, 58, 243, 53}, {103, 51, 140, 70}, {103, 51, 140, 72}, {103, 51, 140, 74}, {103, 98, 74, 227}, {103, 98, 74, 229}, {103, 98, 75, 71}, {103, 98, 75, 73}, {103, 103, 128, 30}}},
|
||||
{Region: models.SurfsharkRegion("Thailand"), IPs: []net.IP{{45, 64, 186, 134}, {45, 64, 186, 163}, {103, 253, 74, 7}}},
|
||||
{Region: models.SurfsharkRegion("Turkey"), IPs: []net.IP{{185, 195, 79, 3}}},
|
||||
{Region: models.SurfsharkRegion("UK France"), IPs: []net.IP{{188, 166, 168, 247}}},
|
||||
{Region: models.SurfsharkRegion("UK Germany"), IPs: []net.IP{{45, 77, 58, 16}}},
|
||||
{Region: models.SurfsharkRegion("UK Glasgow"), IPs: []net.IP{{185, 108, 105, 5}, {185, 108, 105, 13}, {185, 108, 105, 18}, {185, 108, 105, 20}, {185, 108, 105, 22}, {185, 108, 105, 40}}},
|
||||
{Region: models.SurfsharkRegion("UK London st001"), IPs: []net.IP{{217, 146, 82, 83}}},
|
||||
{Region: models.SurfsharkRegion("UK London st002"), IPs: []net.IP{{185, 134, 22, 80}}},
|
||||
{Region: models.SurfsharkRegion("UK London st003"), IPs: []net.IP{{185, 134, 22, 92}}},
|
||||
{Region: models.SurfsharkRegion("UK London st004"), IPs: []net.IP{{185, 44, 76, 186}}},
|
||||
{Region: models.SurfsharkRegion("UK London st005"), IPs: []net.IP{{185, 44, 76, 188}}},
|
||||
{Region: models.SurfsharkRegion("UK London"), IPs: []net.IP{{5, 226, 139, 65}, {5, 226, 139, 225}, {81, 19, 210, 234}, {89, 35, 29, 71}, {178, 239, 166, 222}, {178, 239, 166, 227}, {178, 239, 166, 234}, {178, 239, 166, 250}, {185, 16, 206, 69}, {185, 38, 148, 228}, {185, 38, 150, 41}, {185, 38, 150, 88}, {185, 38, 150, 124}, {185, 44, 76, 167}, {185, 44, 76, 172}, {185, 114, 224, 53}, {185, 114, 224, 115}, {185, 114, 224, 119}, {185, 125, 207, 155}, {185, 125, 207, 177}, {185, 134, 22, 191}, {185, 193, 36, 208}, {195, 140, 215, 42}}},
|
||||
{Region: models.SurfsharkRegion("UK Manchester"), IPs: []net.IP{{37, 120, 200, 2}, {86, 106, 136, 67}, {86, 106, 136, 69}, {86, 106, 136, 85}, {89, 238, 130, 196}, {89, 238, 140, 226}, {89, 238, 140, 227}, {89, 238, 140, 229}, {89, 238, 143, 100}, {89, 238, 143, 101}, {89, 238, 143, 103}, {89, 238, 143, 105}, {92, 119, 176, 19}, {92, 119, 176, 21}, {92, 119, 176, 23}, {192, 145, 126, 130}, {192, 145, 126, 131}, {192, 145, 126, 133}, {193, 148, 17, 82}, {193, 148, 17, 130}, {195, 12, 48, 212}, {195, 12, 48, 213}, {195, 12, 48, 215}, {195, 12, 48, 217}, {217, 138, 196, 91}}},
|
||||
{Region: models.SurfsharkRegion("US Atlanta"), IPs: []net.IP{{66, 115, 154, 131}, {66, 115, 154, 133}, {66, 115, 154, 135}, {66, 115, 154, 147}, {66, 115, 154, 149}, {66, 115, 154, 151}, {66, 115, 169, 35}, {66, 115, 175, 35}, {66, 115, 175, 37}, {66, 115, 175, 40}, {66, 115, 175, 42}, {66, 115, 175, 45}, {66, 115, 175, 47}, {66, 115, 175, 50}, {66, 115, 175, 52}, {185, 93, 0, 143}, {185, 93, 0, 146}}},
|
||||
{Region: models.SurfsharkRegion("US Bend"), IPs: []net.IP{{45, 43, 14, 73}, {45, 43, 14, 75}, {45, 43, 14, 83}, {45, 43, 14, 85}, {45, 43, 14, 93}, {45, 43, 14, 95}, {45, 43, 14, 103}, {45, 43, 14, 105}, {154, 16, 168, 184}, {154, 16, 168, 186}, {154, 16, 168, 188}}},
|
||||
{Region: models.SurfsharkRegion("US Boston"), IPs: []net.IP{{173, 237, 207, 11}, {173, 237, 207, 13}, {173, 237, 207, 15}, {173, 237, 207, 21}, {173, 237, 207, 25}, {173, 237, 207, 30}, {173, 237, 207, 32}, {173, 237, 207, 36}, {173, 237, 207, 38}, {173, 237, 207, 42}, {173, 237, 207, 44}, {192, 34, 83, 230}, {192, 34, 83, 232}, {192, 34, 83, 234}, {192, 34, 83, 236}, {199, 217, 107, 20}, {199, 217, 107, 22}, {199, 217, 107, 25}, {199, 217, 107, 27}}},
|
||||
{Region: models.SurfsharkRegion("US Buffalo"), IPs: []net.IP{{107, 174, 20, 130}, {107, 174, 20, 132}, {107, 174, 20, 134}, {107, 175, 104, 82}, {107, 175, 104, 84}, {107, 175, 104, 86}, {172, 93, 153, 146}, {172, 93, 153, 148}, {172, 93, 153, 150}}},
|
||||
{Region: models.SurfsharkRegion("US Charlotte"), IPs: []net.IP{{66, 11, 124, 136}, {66, 11, 124, 138}, {66, 11, 124, 140}, {66, 11, 124, 142}, {66, 11, 124, 144}, {155, 254, 28, 141}, {155, 254, 29, 163}, {155, 254, 29, 165}, {155, 254, 31, 182}, {155, 254, 31, 184}, {192, 154, 253, 67}, {192, 154, 253, 69}, {192, 154, 254, 135}, {192, 154, 254, 137}, {192, 154, 255, 52}, {192, 154, 255, 54}}},
|
||||
{Region: models.SurfsharkRegion("US Chicago"), IPs: []net.IP{{74, 119, 146, 115}, {74, 119, 146, 117}, {74, 119, 146, 119}, {74, 119, 146, 133}, {74, 119, 146, 179}, {74, 119, 146, 181}, {74, 119, 146, 183}, {74, 119, 146, 195}, {74, 119, 146, 197}, {74, 119, 146, 199}, {74, 119, 146, 211}, {89, 187, 182, 173}, {89, 187, 182, 175}, {107, 152, 100, 19}, {107, 152, 100, 21}, {107, 152, 100, 24}, {107, 152, 100, 26}, {184, 170, 250, 69}, {184, 170, 250, 74}, {184, 170, 250, 149}, {184, 170, 250, 154}}},
|
||||
{Region: models.SurfsharkRegion("US Dallas"), IPs: []net.IP{{66, 115, 177, 131}, {66, 115, 177, 133}, {66, 115, 177, 136}, {66, 115, 177, 138}, {66, 115, 177, 141}, {66, 115, 177, 143}, {66, 115, 177, 146}, {66, 115, 177, 148}, {66, 115, 177, 151}, {66, 115, 177, 153}, {66, 115, 177, 156}, {66, 115, 177, 158}, {89, 187, 175, 165}, {89, 187, 175, 167}, {107, 181, 173, 163}, {172, 241, 114, 87}, {212, 102, 40, 66}, {212, 102, 40, 68}, {212, 102, 40, 71}, {212, 102, 40, 73}, {212, 102, 40, 76}, {212, 102, 40, 78}, {212, 102, 40, 81}}},
|
||||
{Region: models.SurfsharkRegion("US Denver"), IPs: []net.IP{{174, 128, 245, 3}, {174, 128, 245, 5}, {212, 102, 44, 66}, {212, 102, 44, 68}, {212, 102, 44, 71}, {212, 102, 44, 73}, {212, 102, 44, 76}, {212, 102, 44, 78}, {212, 102, 44, 81}, {212, 102, 44, 83}, {212, 102, 44, 86}, {212, 102, 44, 88}, {212, 102, 44, 91}, {212, 102, 44, 93}}},
|
||||
{Region: models.SurfsharkRegion("US Gahanna"), IPs: []net.IP{{104, 244, 208, 35}, {104, 244, 208, 37}, {104, 244, 208, 99}, {104, 244, 208, 101}, {104, 244, 208, 107}, {104, 244, 208, 203}, {104, 244, 208, 205}, {104, 244, 208, 229}, {104, 244, 208, 231}, {104, 244, 209, 51}, {104, 244, 209, 53}, {104, 244, 211, 139}, {104, 244, 211, 141}, {104, 244, 211, 171}, {104, 244, 211, 173}, {104, 244, 211, 179}}},
|
||||
{Region: models.SurfsharkRegion("US Houston"), IPs: []net.IP{{104, 148, 30, 35}, {104, 148, 30, 37}, {104, 148, 30, 39}, {104, 148, 30, 53}, {104, 148, 30, 55}, {104, 148, 30, 83}, {104, 148, 30, 85}, {104, 148, 30, 87}, {199, 10, 64, 67}, {199, 10, 64, 69}, {199, 10, 64, 83}, {199, 10, 64, 85}, {199, 10, 64, 99}, {199, 10, 64, 101}, {199, 10, 64, 115}, {199, 10, 64, 117}}},
|
||||
{Region: models.SurfsharkRegion("US Kansas City"), IPs: []net.IP{{63, 141, 236, 243}, {63, 141, 248, 179}, {63, 141, 248, 181}, {107, 150, 39, 43}, {173, 208, 202, 59}, {173, 208, 202, 61}, {198, 204, 231, 147}, {198, 204, 231, 149}, {204, 12, 208, 115}, {204, 12, 208, 117}}},
|
||||
{Region: models.SurfsharkRegion("US Las Vegas"), IPs: []net.IP{{89, 187, 187, 147}, {89, 187, 187, 149}, {185, 242, 5, 211}, {185, 242, 5, 213}, {185, 242, 5, 215}}},
|
||||
{Region: models.SurfsharkRegion("US Latham"), IPs: []net.IP{{45, 43, 19, 66}, {45, 43, 19, 68}, {45, 43, 19, 74}, {45, 43, 19, 76}, {45, 43, 19, 82}, {45, 43, 19, 84}, {45, 43, 19, 90}, {45, 43, 19, 92}, {154, 16, 169, 3}, {154, 16, 169, 5}, {154, 16, 169, 7}}},
|
||||
{Region: models.SurfsharkRegion("US Los Angeles"), IPs: []net.IP{{38, 95, 110, 67}, {38, 95, 110, 71}, {89, 187, 187, 66}, {89, 187, 187, 68}, {89, 187, 187, 71}, {89, 187, 187, 73}, {89, 187, 187, 76}, {89, 187, 187, 78}, {89, 187, 187, 81}, {89, 187, 187, 83}, {89, 187, 187, 86}, {172, 83, 44, 83}, {184, 170, 243, 199}, {184, 170, 243, 211}, {192, 111, 134, 67}, {192, 111, 134, 78}, {192, 111, 134, 80}, {192, 111, 134, 195}, {192, 111, 134, 202}, {192, 111, 134, 207}, {192, 111, 134, 210}, {192, 111, 134, 215}, {192, 111, 134, 217}, {192, 111, 134, 220}, {192, 111, 134, 222}}},
|
||||
{Region: models.SurfsharkRegion("US Maryland"), IPs: []net.IP{{23, 82, 8, 173}, {23, 105, 160, 134}, {23, 105, 160, 138}, {23, 105, 160, 144}, {23, 105, 163, 94}, {207, 244, 67, 147}, {207, 244, 67, 149}, {207, 244, 84, 40}, {207, 244, 84, 42}, {207, 244, 84, 44}, {207, 244, 84, 58}, {207, 244, 127, 116}, {207, 244, 127, 118}}},
|
||||
{Region: models.SurfsharkRegion("US Miami"), IPs: []net.IP{{89, 187, 173, 250}, {107, 181, 164, 35}, {107, 181, 164, 37}, {172, 83, 42, 23}, {172, 83, 42, 39}, {172, 83, 42, 53}, {172, 83, 42, 55}, {172, 83, 42, 83}, {172, 83, 42, 85}, {172, 83, 42, 131}, {172, 83, 42, 133}, {172, 83, 42, 136}, {172, 83, 42, 138}, {172, 83, 42, 141}, {172, 83, 42, 143}, {172, 83, 42, 146}, {172, 83, 42, 151}, {172, 83, 42, 153}, {172, 83, 42, 156}, {172, 83, 42, 158}, {193, 37, 252, 195}, {193, 37, 252, 197}}},
|
||||
{Region: models.SurfsharkRegion("US Netherlands"), IPs: []net.IP{{142, 93, 58, 71}}},
|
||||
{Region: models.SurfsharkRegion("US New York City mp001"), IPs: []net.IP{{45, 55, 60, 159}}},
|
||||
{Region: models.SurfsharkRegion("US New York City st001"), IPs: []net.IP{{92, 119, 177, 19}}},
|
||||
{Region: models.SurfsharkRegion("US New York City st002"), IPs: []net.IP{{92, 119, 177, 21}}},
|
||||
{Region: models.SurfsharkRegion("US New York City st003"), IPs: []net.IP{{92, 119, 177, 23}}},
|
||||
{Region: models.SurfsharkRegion("US New York City st004"), IPs: []net.IP{{193, 148, 18, 51}}},
|
||||
{Region: models.SurfsharkRegion("US New York City st005"), IPs: []net.IP{{193, 148, 18, 53}}},
|
||||
{Region: models.SurfsharkRegion("US New York City"), IPs: []net.IP{{37, 120, 202, 3}, {37, 120, 202, 5}, {84, 17, 35, 66}, {84, 17, 35, 73}, {84, 17, 35, 76}, {84, 17, 35, 78}, {84, 17, 35, 86}, {84, 17, 35, 91}, {89, 187, 177, 120}, {89, 187, 177, 122}, {89, 187, 178, 92}, {89, 187, 178, 94}, {98, 142, 220, 35}, {98, 142, 220, 37}, {107, 152, 101, 163}, {172, 98, 78, 227}, {192, 40, 59, 229}, {192, 40, 59, 240}, {199, 36, 221, 85}, {199, 36, 221, 99}, {199, 36, 221, 104}, {199, 36, 221, 111}, {199, 36, 221, 114}, {199, 36, 221, 116}, {199, 36, 221, 119}}},
|
||||
{Region: models.SurfsharkRegion("US Orlando"), IPs: []net.IP{{198, 147, 22, 83}, {198, 147, 22, 85}, {198, 147, 22, 87}, {198, 147, 22, 131}, {198, 147, 22, 133}, {198, 147, 22, 135}, {198, 147, 22, 147}, {198, 147, 22, 149}, {198, 147, 22, 151}, {198, 147, 22, 163}, {198, 147, 22, 165}, {198, 147, 22, 167}, {198, 147, 22, 195}, {198, 147, 22, 197}, {198, 147, 22, 211}, {198, 147, 22, 213}}},
|
||||
{Region: models.SurfsharkRegion("US Phoenix"), IPs: []net.IP{{23, 83, 128, 233}, {23, 83, 128, 235}, {23, 83, 128, 239}, {23, 83, 128, 241}, {23, 83, 128, 243}, {107, 181, 184, 115}, {107, 181, 184, 117}, {172, 98, 87, 35}, {172, 98, 87, 37}, {184, 170, 240, 147}, {184, 170, 240, 149}, {184, 170, 240, 151}, {184, 170, 240, 179}, {184, 170, 240, 181}, {199, 58, 187, 3}, {199, 58, 187, 5}, {199, 58, 187, 8}, {199, 58, 187, 10}, {199, 58, 187, 13}, {199, 58, 187, 15}, {199, 58, 187, 18}, {199, 58, 187, 23}, {199, 58, 187, 25}, {199, 58, 187, 67}, {199, 58, 187, 69}}},
|
||||
{Region: models.SurfsharkRegion("US Portugal"), IPs: []net.IP{{142, 93, 81, 242}}},
|
||||
{Region: models.SurfsharkRegion("US Saint Louis"), IPs: []net.IP{{148, 72, 170, 108}, {148, 72, 174, 36}, {148, 72, 174, 38}, {148, 72, 174, 41}, {148, 72, 174, 43}, {148, 72, 174, 46}, {148, 72, 174, 51}, {148, 72, 174, 53}}},
|
||||
{Region: models.SurfsharkRegion("US Salt Lake City"), IPs: []net.IP{{104, 200, 131, 5}, {104, 200, 131, 7}, {104, 200, 131, 9}, {104, 200, 131, 165}, {104, 200, 131, 167}, {104, 200, 131, 170}, {104, 200, 131, 172}}},
|
||||
{Region: models.SurfsharkRegion("US San Francisco"), IPs: []net.IP{{107, 181, 166, 35}, {107, 181, 166, 37}, {107, 181, 166, 39}, {107, 181, 166, 51}, {107, 181, 166, 55}, {107, 181, 166, 83}, {107, 181, 166, 85}, {107, 181, 166, 227}, {107, 181, 166, 229}, {198, 8, 81, 35}, {198, 8, 81, 37}, {209, 58, 128, 48}, {209, 58, 128, 50}}},
|
||||
{Region: models.SurfsharkRegion("US Seatle"), IPs: []net.IP{{84, 17, 41, 73}, {84, 17, 41, 75}, {84, 17, 41, 77}, {84, 17, 41, 79}, {84, 17, 41, 81}, {84, 17, 41, 83}, {84, 17, 41, 85}, {104, 200, 129, 243}, {104, 200, 129, 245}, {198, 8, 80, 83}, {198, 8, 80, 85}, {198, 8, 80, 87}, {198, 8, 80, 227}, {198, 8, 80, 229}, {199, 229, 250, 163}, {199, 229, 250, 165}, {199, 229, 250, 167}}},
|
||||
{Region: models.SurfsharkRegion("US Tampa"), IPs: []net.IP{{66, 206, 23, 5}, {74, 50, 117, 106}, {74, 50, 117, 119}, {74, 50, 117, 121}, {74, 50, 117, 125}, {162, 220, 56, 98}, {162, 220, 56, 100}, {162, 220, 63, 226}, {162, 220, 63, 232}, {162, 220, 63, 246}, {162, 220, 63, 248}, {209, 216, 92, 197}, {209, 216, 92, 200}, {209, 216, 92, 202}, {209, 216, 92, 205}, {209, 216, 92, 207}, {209, 216, 92, 210}, {209, 216, 92, 212}, {209, 216, 92, 215}, {209, 216, 92, 217}, {209, 216, 92, 220}, {209, 216, 92, 222}, {209, 216, 92, 225}, {209, 216, 92, 227}}},
|
||||
{Region: models.SurfsharkRegion("Ukraine"), IPs: []net.IP{{45, 9, 238, 23}, {45, 9, 238, 30}, {45, 9, 238, 38}, {45, 9, 238, 47}}},
|
||||
{Region: models.SurfsharkRegion("United Arab Emirates"), IPs: []net.IP{{45, 9, 249, 243}, {45, 9, 249, 245}, {45, 9, 249, 247}, {45, 9, 250, 99}, {45, 9, 250, 101}, {45, 9, 250, 103}}},
|
||||
{Region: models.SurfsharkRegion("Vietnam"), IPs: []net.IP{{202, 143, 110, 32}}},
|
||||
{Region: models.SurfsharkRegion("italy Rome"), IPs: []net.IP{{82, 102, 26, 61}, {82, 102, 26, 114}, {82, 102, 26, 115}, {82, 102, 26, 117}, {87, 101, 94, 210}, {87, 101, 94, 211}, {87, 101, 94, 213}, {87, 101, 94, 215}, {87, 101, 94, 226}, {185, 217, 71, 2}, {185, 217, 71, 3}, {185, 217, 71, 5}, {185, 217, 71, 18}, {185, 217, 71, 50}, {185, 217, 71, 187}, {185, 217, 71, 195}, {185, 217, 71, 197}, {185, 217, 71, 211}, {185, 217, 71, 243}, {185, 217, 71, 251}, {185, 217, 71, 253}, {217, 138, 219, 235}, {217, 138, 219, 237}, {217, 138, 219, 251}}},
|
||||
}
|
||||
}
|
||||
|
||||
func SurfsharkRegionChoices() (choices []string) {
|
||||
servers := SurfsharkServers()
|
||||
choices = make([]string, len(servers))
|
||||
for i := range servers {
|
||||
choices[i] = string(servers[i].Region)
|
||||
choices[i] = servers[i].Region
|
||||
}
|
||||
return choices
|
||||
}
|
||||
|
||||
func SurfsharkServers() []models.SurfsharkServer {
|
||||
return []models.SurfsharkServer{
|
||||
{Region: "Albania", IPs: []net.IP{{31, 171, 152, 195}, {31, 171, 152, 197}, {31, 171, 154, 147}, {31, 171, 154, 149}, {31, 171, 154, 163}, {31, 171, 154, 165}}},
|
||||
{Region: "Australia Adelaide", IPs: []net.IP{{45, 248, 79, 19}, {45, 248, 79, 21}, {45, 248, 79, 27}, {45, 248, 79, 29}, {45, 248, 79, 35}, {45, 248, 79, 37}, {45, 248, 79, 51}, {45, 248, 79, 53}, {45, 248, 79, 67}, {45, 248, 79, 69}, {45, 248, 79, 83}, {45, 248, 79, 85}}},
|
||||
{Region: "Australia Brisbane", IPs: []net.IP{{45, 248, 77, 235}, {45, 248, 77, 237}, {144, 48, 39, 11}, {144, 48, 39, 13}, {144, 48, 39, 67}, {144, 48, 39, 69}, {144, 48, 39, 83}, {144, 48, 39, 85}, {144, 48, 39, 107}, {144, 48, 39, 109}, {144, 48, 39, 123}, {144, 48, 39, 125}, {144, 48, 39, 131}, {144, 48, 39, 133}}},
|
||||
{Region: "Australia Melbourne", IPs: []net.IP{{103, 192, 80, 131}, {103, 192, 80, 133}, {103, 192, 80, 139}, {103, 192, 80, 141}, {103, 192, 80, 147}, {103, 192, 80, 149}, {144, 48, 38, 19}, {144, 48, 38, 21}, {144, 48, 38, 139}, {144, 48, 38, 141}, {144, 48, 38, 147}, {144, 48, 38, 149}, {144, 48, 38, 179}, {144, 48, 38, 181}, {144, 48, 38, 183}}},
|
||||
{Region: "Australia Perth", IPs: []net.IP{{45, 248, 78, 43}, {45, 248, 78, 45}, {124, 150, 139, 27}, {124, 150, 139, 29}, {124, 150, 139, 35}, {124, 150, 139, 37}, {124, 150, 139, 43}, {124, 150, 139, 45}, {124, 150, 139, 123}, {124, 150, 139, 125}, {124, 150, 139, 179}, {124, 150, 139, 181}}},
|
||||
{Region: "Australia Sydney", IPs: []net.IP{{45, 125, 247, 43}, {45, 125, 247, 45}, {45, 125, 247, 91}, {45, 125, 247, 93}, {45, 125, 247, 195}, {45, 125, 247, 197}, {45, 248, 76, 171}, {45, 248, 76, 173}, {103, 25, 59, 51}, {103, 25, 59, 53}, {103, 25, 59, 83}, {103, 25, 59, 85}, {103, 25, 59, 87}, {180, 149, 228, 115}, {180, 149, 228, 117}}},
|
||||
{Region: "Australia US", IPs: []net.IP{{45, 76, 117, 108}}},
|
||||
{Region: "Austria", IPs: []net.IP{{5, 253, 207, 51}, {5, 253, 207, 53}, {5, 253, 207, 83}, {5, 253, 207, 85}, {37, 120, 212, 75}, {37, 120, 212, 77}, {37, 120, 212, 131}, {37, 120, 212, 133}, {37, 120, 212, 139}, {37, 120, 212, 141}, {37, 120, 212, 147}, {37, 120, 212, 149}, {91, 132, 139, 99}, {91, 132, 139, 101}, {91, 132, 139, 105}, {91, 132, 139, 107}}},
|
||||
{Region: "Azerbaijan", IPs: []net.IP{{94, 20, 21, 85}, {94, 20, 21, 87}}},
|
||||
{Region: "Belgium", IPs: []net.IP{{5, 253, 205, 99}, {5, 253, 205, 101}, {5, 253, 205, 179}, {5, 253, 205, 181}, {5, 253, 205, 211}, {5, 253, 205, 213}, {5, 253, 205, 227}, {5, 253, 205, 229}, {37, 120, 143, 117}, {37, 120, 143, 121}, {37, 120, 143, 125}, {37, 120, 218, 251}, {37, 120, 218, 253}, {89, 249, 73, 195}, {89, 249, 73, 197}, {185, 104, 186, 75}, {185, 104, 186, 77}, {185, 232, 21, 51}, {185, 232, 21, 53}}},
|
||||
{Region: "Bosnia and Herzegovina ", IPs: []net.IP{{185, 99, 3, 12}, {185, 99, 3, 207}, {185, 99, 3, 214}, {185, 164, 34, 252}, {185, 212, 111, 6}, {185, 212, 111, 41}, {185, 212, 111, 59}}},
|
||||
{Region: "Brazil", IPs: []net.IP{{181, 215, 183, 244}, {181, 215, 183, 248}, {191, 96, 70, 171}}},
|
||||
{Region: "Bulgaria", IPs: []net.IP{{37, 120, 152, 35}, {37, 120, 152, 37}, {37, 120, 152, 39}, {37, 120, 152, 195}, {37, 120, 152, 197}, {217, 138, 202, 19}, {217, 138, 202, 21}}},
|
||||
{Region: "Canada Montreal", IPs: []net.IP{{172, 98, 82, 83}, {172, 98, 82, 85}, {172, 98, 82, 243}, {172, 98, 82, 245}, {198, 8, 85, 3}, {198, 8, 85, 5}, {198, 8, 85, 19}, {198, 8, 85, 21}, {198, 8, 85, 35}, {198, 8, 85, 37}, {198, 8, 85, 40}, {198, 8, 85, 42}, {198, 8, 85, 45}, {198, 8, 85, 47}, {198, 8, 85, 69}, {198, 8, 85, 72}, {198, 8, 85, 74}, {198, 8, 85, 77}, {198, 8, 85, 79}, {198, 8, 85, 82}, {198, 8, 85, 84}, {198, 8, 85, 87}, {198, 8, 85, 131}, {198, 8, 85, 133}}},
|
||||
{Region: "Canada Toronto", IPs: []net.IP{{68, 71, 244, 131}, {68, 71, 244, 134}, {68, 71, 244, 195}, {68, 71, 244, 197}, {68, 71, 244, 200}, {68, 71, 244, 202}, {68, 71, 244, 210}, {68, 71, 244, 212}, {68, 71, 244, 215}, {68, 71, 244, 217}, {68, 71, 244, 220}, {68, 71, 244, 222}, {104, 200, 138, 3}, {104, 200, 138, 5}, {104, 200, 138, 7}, {104, 200, 138, 147}, {104, 200, 138, 149}, {104, 200, 138, 152}, {104, 200, 138, 154}, {104, 200, 138, 163}, {104, 200, 138, 165}, {162, 253, 71, 211}, {162, 253, 71, 213}, {162, 253, 71, 215}}},
|
||||
{Region: "Canada US", IPs: []net.IP{{159, 203, 57, 80}}},
|
||||
{Region: "Canada Vancouver", IPs: []net.IP{{66, 115, 147, 67}, {66, 115, 147, 69}, {66, 115, 147, 72}, {66, 115, 147, 74}, {66, 115, 147, 79}, {66, 115, 147, 82}, {66, 115, 147, 84}, {66, 115, 147, 87}, {66, 115, 147, 89}, {66, 115, 147, 92}, {66, 115, 147, 94}, {104, 200, 132, 35}, {104, 200, 132, 37}, {104, 200, 132, 39}, {107, 181, 177, 179}, {107, 181, 177, 181}, {107, 181, 177, 183}, {172, 83, 40, 147}, {172, 83, 40, 149}, {208, 78, 41, 195}, {208, 78, 41, 197}, {208, 78, 41, 200}, {208, 78, 41, 202}}},
|
||||
{Region: "Chile", IPs: []net.IP{{31, 169, 121, 16}, {131, 221, 32, 195}}},
|
||||
{Region: "Colombia", IPs: []net.IP{{45, 129, 32, 15}}},
|
||||
{Region: "Costa Rica", IPs: []net.IP{{176, 227, 241, 21}}},
|
||||
{Region: "Croatia", IPs: []net.IP{{85, 10, 56, 226}, {85, 10, 56, 228}, {89, 164, 99, 109}, {89, 164, 99, 111}}},
|
||||
{Region: "Cyprus", IPs: []net.IP{{195, 47, 194, 40}, {195, 47, 194, 42}}},
|
||||
{Region: "Czech Republic", IPs: []net.IP{{95, 168, 209, 111}, {185, 152, 64, 151}, {185, 152, 64, 178}, {193, 9, 112, 179}, {193, 9, 112, 181}, {193, 9, 112, 183}, {193, 9, 112, 195}, {193, 9, 112, 197}, {193, 9, 112, 199}}},
|
||||
{Region: "Denmark", IPs: []net.IP{{37, 120, 145, 19}, {37, 120, 145, 21}, {37, 120, 194, 91}, {37, 120, 194, 93}, {37, 120, 194, 99}, {37, 120, 194, 101}, {37, 120, 194, 107}, {37, 120, 194, 109}, {37, 120, 194, 115}, {37, 120, 194, 117}, {37, 120, 194, 123}, {37, 120, 194, 125}, {37, 120, 194, 163}, {37, 120, 194, 165}, {45, 12, 221, 163}, {45, 12, 221, 165}, {45, 12, 221, 167}, {45, 12, 221, 179}, {45, 12, 221, 181}, {45, 12, 221, 183}, {95, 174, 65, 67}, {95, 174, 65, 69}, {95, 174, 65, 71}}},
|
||||
{Region: "Estonia", IPs: []net.IP{{165, 231, 163, 3}, {165, 231, 163, 5}, {165, 231, 163, 7}, {165, 231, 163, 19}, {165, 231, 163, 21}, {165, 231, 163, 23}, {185, 174, 159, 51}, {185, 174, 159, 53}, {185, 174, 159, 59}, {185, 174, 159, 61}, {185, 174, 159, 67}, {185, 174, 159, 69}}},
|
||||
{Region: "Finland", IPs: []net.IP{{196, 244, 191, 163}, {196, 244, 191, 165}, {196, 244, 191, 195}, {196, 244, 191, 197}}},
|
||||
{Region: "France Bordeaux", IPs: []net.IP{{185, 108, 106, 19}, {185, 108, 106, 21}, {185, 108, 106, 51}, {185, 108, 106, 53}, {185, 108, 106, 67}, {185, 108, 106, 69}, {185, 108, 106, 140}, {185, 108, 106, 142}, {185, 108, 106, 144}, {185, 108, 106, 146}, {185, 108, 106, 148}, {185, 108, 106, 150}, {185, 108, 106, 152}, {185, 108, 106, 154}, {185, 108, 106, 158}, {185, 108, 106, 160}, {185, 108, 106, 162}, {185, 108, 106, 164}, {185, 108, 106, 166}}},
|
||||
{Region: "France Marseilles", IPs: []net.IP{{185, 166, 84, 5}, {185, 166, 84, 19}, {185, 166, 84, 23}, {185, 166, 84, 29}, {185, 166, 84, 31}, {185, 166, 84, 36}, {185, 166, 84, 38}, {185, 166, 84, 51}, {185, 166, 84, 55}, {185, 166, 84, 57}, {185, 166, 84, 59}, {185, 166, 84, 61}, {185, 166, 84, 63}, {185, 166, 84, 75}, {185, 166, 84, 79}, {185, 166, 84, 81}, {185, 166, 84, 87}, {185, 166, 84, 89}, {185, 166, 84, 93}, {185, 166, 84, 95}}},
|
||||
{Region: "France Paris", IPs: []net.IP{{45, 83, 90, 179}, {45, 83, 90, 181}, {45, 83, 90, 183}, {45, 89, 174, 59}, {45, 89, 174, 61}, {45, 89, 174, 85}, {45, 89, 174, 91}, {45, 89, 174, 93}, {45, 89, 174, 101}, {45, 89, 174, 103}, {84, 17, 43, 178}, {84, 17, 43, 180}, {84, 17, 43, 183}, {84, 17, 43, 185}, {84, 17, 60, 235}, {84, 17, 60, 250}, {84, 247, 51, 235}, {84, 247, 51, 243}, {84, 247, 51, 245}, {84, 247, 51, 253}, {185, 246, 211, 69}, {185, 246, 211, 103}, {217, 138, 207, 243}, {217, 138, 207, 245}}},
|
||||
{Region: "France Sweden", IPs: []net.IP{{199, 247, 8, 20}}},
|
||||
{Region: "Germany Berlin", IPs: []net.IP{{37, 120, 217, 131}, {37, 120, 217, 147}, {37, 120, 217, 149}, {37, 120, 217, 179}, {37, 120, 217, 181}, {152, 89, 163, 19}, {152, 89, 163, 21}, {152, 89, 163, 23}, {152, 89, 163, 227}, {152, 89, 163, 229}, {152, 89, 163, 231}, {152, 89, 163, 243}, {193, 176, 86, 195}, {193, 176, 86, 199}, {217, 138, 216, 59}, {217, 138, 216, 61}, {217, 138, 216, 219}, {217, 138, 216, 227}, {217, 138, 216, 229}, {217, 138, 216, 235}, {217, 138, 216, 237}, {217, 138, 216, 243}, {217, 138, 216, 245}, {217, 138, 216, 251}, {217, 138, 216, 253}}},
|
||||
{Region: "Germany Frankfurt am Main st001", IPs: []net.IP{{45, 87, 212, 179}}},
|
||||
{Region: "Germany Frankfurt am Main st002", IPs: []net.IP{{45, 87, 212, 181}}},
|
||||
{Region: "Germany Frankfurt am Main st003", IPs: []net.IP{{45, 87, 212, 183}}},
|
||||
{Region: "Germany Frankfurt am Main", IPs: []net.IP{{37, 120, 196, 53}, {37, 120, 196, 59}, {37, 120, 196, 61}, {37, 120, 196, 173}, {37, 120, 197, 11}, {37, 120, 197, 13}, {82, 102, 16, 99}, {82, 102, 16, 101}, {84, 16, 240, 174}, {84, 16, 240, 176}, {89, 187, 169, 104}, {89, 187, 169, 119}, {185, 59, 220, 144}, {185, 59, 220, 150}, {185, 59, 220, 168}, {185, 59, 220, 172}, {185, 93, 180, 101}, {185, 102, 219, 6}, {185, 102, 219, 47}, {185, 102, 219, 49}, {185, 158, 135, 36}}},
|
||||
{Region: "Germany Munich", IPs: []net.IP{{178, 238, 231, 53}, {178, 238, 231, 55}}},
|
||||
{Region: "Germany Nuremberg", IPs: []net.IP{{62, 171, 149, 160}, {62, 171, 149, 162}, {62, 171, 151, 180}, {62, 171, 151, 182}}},
|
||||
{Region: "Germany Singapour", IPs: []net.IP{{159, 89, 14, 157}}},
|
||||
{Region: "Germany UK", IPs: []net.IP{{46, 101, 250, 73}}},
|
||||
{Region: "Greece", IPs: []net.IP{{87, 239, 248, 78}, {87, 239, 248, 80}, {87, 239, 248, 82}, {87, 239, 248, 85}, {87, 239, 248, 87}, {185, 226, 65, 150}}},
|
||||
{Region: "Hong Kong", IPs: []net.IP{{64, 120, 121, 216}, {64, 120, 121, 232}, {64, 120, 121, 234}, {64, 120, 121, 236}, {64, 120, 121, 238}, {64, 120, 121, 240}, {64, 120, 121, 244}, {64, 120, 121, 246}, {64, 120, 121, 248}, {84, 17, 37, 154}, {84, 17, 37, 156}, {84, 17, 37, 158}, {84, 17, 37, 160}, {84, 17, 57, 185}, {209, 58, 186, 10}, {209, 58, 186, 12}, {209, 58, 186, 14}, {209, 58, 186, 16}, {209, 58, 186, 18}}},
|
||||
{Region: "Hungary", IPs: []net.IP{{37, 120, 144, 147}, {37, 120, 144, 149}, {37, 120, 144, 151}, {37, 120, 144, 197}, {37, 120, 144, 199}, {37, 120, 144, 211}, {37, 120, 144, 213}, {37, 120, 144, 215}, {37, 120, 144, 243}, {37, 120, 144, 245}}},
|
||||
{Region: "Iceland", IPs: []net.IP{{82, 221, 128, 156}}},
|
||||
{Region: "India Chennai", IPs: []net.IP{{103, 94, 27, 99}, {103, 94, 27, 101}, {103, 94, 27, 115}, {103, 94, 27, 117}, {103, 94, 27, 179}, {103, 94, 27, 181}, {103, 94, 27, 227}, {103, 94, 27, 229}, {103, 108, 117, 131}, {103, 108, 117, 133}, {103, 108, 117, 147}, {103, 108, 117, 149}, {103, 108, 117, 151}}},
|
||||
{Region: "India Indore", IPs: []net.IP{{103, 39, 132, 187}, {103, 39, 132, 189}, {103, 73, 189, 219}, {103, 73, 189, 221}, {137, 59, 52, 107}, {137, 59, 52, 109}}},
|
||||
{Region: "India Mumbai", IPs: []net.IP{{103, 221, 233, 61}, {103, 221, 233, 86}, {103, 221, 233, 88}, {103, 221, 233, 89}, {103, 221, 233, 91}, {165, 231, 253, 147}, {165, 231, 253, 149}, {165, 231, 253, 163}}},
|
||||
{Region: "India UK", IPs: []net.IP{{134, 209, 148, 122}}},
|
||||
{Region: "Indonesia", IPs: []net.IP{{103, 227, 255, 211}, {103, 227, 255, 213}, {103, 227, 255, 215}}},
|
||||
{Region: "Ireland", IPs: []net.IP{{185, 108, 128, 114}, {185, 108, 128, 118}, {185, 108, 128, 159}, {185, 108, 128, 161}, {185, 108, 128, 181}, {185, 108, 128, 183}, {185, 108, 128, 185}, {217, 138, 222, 43}, {217, 138, 222, 45}, {217, 138, 222, 51}, {217, 138, 222, 53}}},
|
||||
{Region: "Israel", IPs: []net.IP{{87, 239, 255, 107}, {87, 239, 255, 109}, {87, 239, 255, 111}, {87, 239, 255, 114}, {87, 239, 255, 116}, {87, 239, 255, 119}, {87, 239, 255, 121}}},
|
||||
{Region: "Italy Milan", IPs: []net.IP{{37, 120, 201, 23}, {37, 120, 201, 67}, {37, 120, 201, 69}, {37, 120, 201, 71}, {45, 9, 251, 163}, {84, 17, 58, 136}, {84, 17, 58, 146}, {84, 17, 58, 148}, {84, 17, 58, 150}, {84, 17, 58, 152}, {84, 17, 58, 154}, {84, 17, 58, 156}, {84, 17, 58, 159}, {84, 17, 58, 161}, {84, 17, 58, 190}, {84, 17, 58, 195}, {84, 17, 58, 197}, {84, 17, 58, 200}, {84, 17, 58, 207}, {95, 174, 64, 69}, {95, 174, 64, 71}, {185, 128, 27, 41}, {212, 102, 54, 145}, {212, 102, 54, 160}, {212, 102, 54, 162}}},
|
||||
{Region: "Japan Tokyo st001", IPs: []net.IP{{45, 87, 213, 19}}},
|
||||
{Region: "Japan Tokyo st002", IPs: []net.IP{{45, 87, 213, 21}}},
|
||||
{Region: "Japan Tokyo st003", IPs: []net.IP{{45, 87, 213, 23}}},
|
||||
{Region: "Japan Tokyo st004", IPs: []net.IP{{217, 138, 212, 19}}},
|
||||
{Region: "Japan Tokyo st005", IPs: []net.IP{{217, 138, 212, 21}}},
|
||||
{Region: "Japan Tokyo st006", IPs: []net.IP{{82, 102, 28, 123}}},
|
||||
{Region: "Japan Tokyo st007", IPs: []net.IP{{82, 102, 28, 125}}},
|
||||
{Region: "Japan Tokyo", IPs: []net.IP{{45, 87, 213, 3}, {45, 87, 213, 5}, {45, 87, 213, 7}, {45, 87, 213, 83}, {45, 87, 213, 85}, {45, 87, 213, 87}, {45, 87, 213, 101}, {45, 87, 213, 103}, {45, 87, 213, 105}, {45, 87, 213, 211}, {45, 87, 213, 213}, {45, 87, 213, 243}, {45, 87, 213, 245}, {84, 17, 34, 24}, {84, 17, 34, 26}, {84, 17, 34, 44}, {84, 17, 34, 46}, {89, 187, 161, 2}, {89, 187, 161, 4}, {89, 187, 161, 239}, {89, 187, 161, 241}, {103, 208, 221, 227}, {103, 208, 221, 229}, {185, 242, 4, 163}}},
|
||||
{Region: "Kazakhstan", IPs: []net.IP{{45, 136, 56, 54}, {45, 136, 56, 57}, {45, 136, 56, 61}, {45, 136, 56, 64}}},
|
||||
{Region: "Korea", IPs: []net.IP{{27, 255, 77, 195}, {27, 255, 77, 197}, {27, 255, 77, 226}, {61, 14, 210, 227}, {61, 14, 210, 229}, {61, 14, 210, 232}, {61, 14, 210, 234}, {61, 14, 210, 237}, {61, 14, 210, 239}, {61, 14, 210, 242}, {61, 14, 210, 244}, {61, 97, 243, 119}, {61, 97, 243, 124}, {103, 249, 28, 215}, {103, 249, 28, 227}, {103, 249, 28, 229}, {103, 249, 28, 231}}},
|
||||
{Region: "Latvia", IPs: []net.IP{{91, 203, 70, 186}, {91, 203, 70, 188}, {188, 92, 78, 135}, {188, 92, 78, 137}, {188, 92, 78, 140}, {188, 92, 78, 142}, {188, 92, 78, 145}, {188, 92, 78, 147}, {188, 92, 78, 150}, {188, 92, 78, 152}}},
|
||||
{Region: "Libya", IPs: []net.IP{{41, 208, 72, 157}, {41, 208, 72, 204}, {41, 208, 72, 207}}},
|
||||
{Region: "Luxembourg", IPs: []net.IP{{185, 153, 151, 60}, {185, 153, 151, 62}, {185, 153, 151, 64}, {185, 153, 151, 66}, {185, 153, 151, 68}, {185, 153, 151, 70}, {185, 153, 151, 73}, {185, 153, 151, 75}, {185, 153, 151, 78}, {185, 153, 151, 80}, {185, 153, 151, 82}, {185, 153, 151, 83}, {185, 153, 151, 85}, {185, 153, 151, 87}, {185, 153, 151, 91}}},
|
||||
{Region: "Malaysia", IPs: []net.IP{{42, 0, 30, 135}, {42, 0, 30, 160}, {42, 0, 30, 162}, {42, 0, 30, 164}, {42, 0, 30, 177}, {42, 0, 30, 179}, {42, 0, 30, 209}, {42, 0, 30, 213}, {42, 0, 30, 215}}},
|
||||
{Region: "Moldova", IPs: []net.IP{{178, 175, 148, 39}}},
|
||||
{Region: "Netherlands Amsterdam st001", IPs: []net.IP{{81, 19, 209, 51}}},
|
||||
{Region: "Netherlands Amsterdam", IPs: []net.IP{{81, 19, 208, 56}, {81, 19, 208, 68}, {81, 19, 209, 20}, {81, 19, 209, 57}, {81, 19, 209, 113}, {81, 19, 209, 124}, {89, 46, 223, 78}, {89, 46, 223, 86}, {89, 46, 223, 92}, {89, 46, 223, 100}, {89, 46, 223, 104}, {89, 46, 223, 106}, {89, 46, 223, 212}, {89, 46, 223, 214}, {89, 46, 223, 217}, {89, 46, 223, 222}, {89, 46, 223, 224}, {89, 46, 223, 227}, {89, 187, 174, 231}, {185, 59, 222, 92}, {185, 59, 222, 94}, {185, 59, 222, 166}, {185, 59, 222, 168}, {185, 232, 20, 131}}},
|
||||
{Region: "Netherlands US", IPs: []net.IP{{188, 166, 98, 91}}},
|
||||
{Region: "New Zealand", IPs: []net.IP{{180, 149, 231, 3}, {180, 149, 231, 11}, {180, 149, 231, 13}, {180, 149, 231, 43}, {180, 149, 231, 45}, {180, 149, 231, 67}, {180, 149, 231, 69}, {180, 149, 231, 115}, {180, 149, 231, 117}, {180, 149, 231, 119}, {180, 149, 231, 163}, {180, 149, 231, 165}}},
|
||||
{Region: "Nigeria", IPs: []net.IP{{102, 165, 23, 4}, {102, 165, 23, 6}, {102, 165, 23, 38}, {102, 165, 23, 40}, {102, 165, 23, 42}}},
|
||||
{Region: "North Macedonia", IPs: []net.IP{{185, 225, 28, 67}, {185, 225, 28, 69}, {185, 225, 28, 83}, {185, 225, 28, 85}, {185, 225, 28, 91}, {185, 225, 28, 93}, {185, 225, 28, 99}, {185, 225, 28, 101}, {185, 225, 28, 107}, {185, 225, 28, 109}}},
|
||||
{Region: "Norway", IPs: []net.IP{{45, 12, 223, 67}, {45, 12, 223, 69}, {45, 12, 223, 71}, {45, 12, 223, 195}, {45, 12, 223, 197}, {45, 12, 223, 211}, {45, 12, 223, 213}, {84, 247, 50, 27}, {84, 247, 50, 29}, {84, 247, 50, 67}, {84, 247, 50, 69}, {95, 174, 66, 35}, {95, 174, 66, 37}, {95, 174, 66, 39}, {95, 174, 66, 41}}},
|
||||
{Region: "Paraguay", IPs: []net.IP{{181, 40, 18, 47}, {181, 40, 18, 56}, {181, 40, 18, 59}, {186, 16, 32, 163}, {186, 16, 32, 173}}},
|
||||
{Region: "Philippines", IPs: []net.IP{{45, 134, 224, 3}, {45, 134, 224, 5}, {45, 134, 224, 8}, {45, 134, 224, 10}}},
|
||||
{Region: "Poland Gdansk", IPs: []net.IP{{5, 187, 49, 187}, {5, 187, 49, 189}, {5, 187, 53, 51}, {5, 187, 53, 53}, {5, 187, 53, 55}}},
|
||||
{Region: "Poland Warsaw", IPs: []net.IP{{5, 253, 206, 67}, {5, 253, 206, 69}, {5, 253, 206, 71}, {5, 253, 206, 227}, {5, 253, 206, 229}, {84, 17, 55, 132}, {84, 17, 55, 134}, {185, 246, 208, 72}, {185, 246, 208, 77}, {185, 246, 208, 105}, {185, 246, 208, 107}, {185, 246, 208, 176}, {185, 246, 208, 182}}},
|
||||
{Region: "Portugal Lisbon", IPs: []net.IP{{5, 154, 174, 26}, {5, 154, 174, 65}, {5, 154, 174, 67}, {5, 154, 174, 75}, {5, 154, 174, 77}, {5, 154, 174, 99}, {5, 154, 174, 101}, {5, 154, 174, 115}, {5, 154, 174, 117}, {5, 154, 174, 171}, {5, 154, 174, 173}, {5, 154, 174, 179}, {5, 154, 174, 181}, {5, 154, 174, 187}, {5, 154, 174, 189}, {5, 154, 174, 211}, {5, 154, 174, 213}, {5, 154, 174, 219}, {5, 154, 174, 221}, {5, 154, 174, 227}, {5, 154, 174, 229}}},
|
||||
{Region: "Portugal Loule", IPs: []net.IP{{176, 61, 146, 84}, {176, 61, 146, 86}, {176, 61, 146, 106}, {176, 61, 146, 108}, {176, 61, 146, 113}, {176, 61, 146, 116}, {176, 61, 146, 118}, {176, 61, 146, 121}, {176, 61, 146, 123}, {176, 61, 148, 60}, {176, 61, 148, 62}}},
|
||||
{Region: "Portugal Porto", IPs: []net.IP{{194, 39, 127, 21}, {194, 39, 127, 23}, {194, 39, 127, 36}, {194, 39, 127, 38}, {194, 39, 127, 231}, {194, 39, 127, 233}, {194, 39, 127, 240}, {194, 39, 127, 242}, {194, 39, 127, 244}}},
|
||||
{Region: "Romania", IPs: []net.IP{{86, 106, 137, 147}, {86, 106, 137, 149}, {194, 68, 44, 61}}},
|
||||
{Region: "Russia Moscow", IPs: []net.IP{{213, 183, 56, 18}, {213, 183, 56, 145}, {213, 183, 56, 160}, {213, 183, 56, 166}, {213, 183, 56, 233}, {213, 183, 56, 236}}},
|
||||
{Region: "Russia St. Petersburg", IPs: []net.IP{{213, 183, 54, 23}, {213, 183, 54, 109}, {213, 183, 54, 143}, {213, 183, 54, 165}}},
|
||||
{Region: "Serbia", IPs: []net.IP{{37, 120, 193, 51}, {37, 120, 193, 53}, {152, 89, 160, 115}, {152, 89, 160, 117}, {152, 89, 160, 119}, {152, 89, 160, 121}, {152, 89, 160, 123}, {152, 89, 160, 125}, {152, 89, 160, 211}, {152, 89, 160, 213}, {152, 89, 160, 215}}},
|
||||
{Region: "Singapore Hong Kong", IPs: []net.IP{{206, 189, 83, 129}}},
|
||||
{Region: "Singapore Netherlands", IPs: []net.IP{{104, 248, 148, 18}}},
|
||||
{Region: "Singapore st001", IPs: []net.IP{{217, 138, 201, 91}}},
|
||||
{Region: "Singapore st002", IPs: []net.IP{{217, 138, 201, 93}}},
|
||||
{Region: "Singapore st003", IPs: []net.IP{{84, 247, 49, 19}}},
|
||||
{Region: "Singapore st004", IPs: []net.IP{{84, 247, 49, 21}}},
|
||||
{Region: "Singapore", IPs: []net.IP{{89, 187, 163, 130}, {89, 187, 163, 132}, {89, 187, 163, 134}, {89, 187, 163, 136}, {103, 254, 153, 171}, {103, 254, 153, 176}, {103, 254, 155, 229}, {103, 254, 155, 241}, {209, 58, 170, 134}, {209, 58, 170, 142}, {209, 58, 170, 144}, {209, 58, 170, 146}, {209, 58, 170, 159}, {209, 58, 170, 163}, {209, 58, 170, 164}, {209, 58, 170, 169}, {209, 58, 170, 172}, {209, 58, 176, 43}, {209, 58, 176, 45}, {209, 58, 176, 47}}},
|
||||
{Region: "Slovekia", IPs: []net.IP{{37, 120, 221, 3}, {37, 120, 221, 5}, {193, 37, 255, 35}, {193, 37, 255, 37}, {193, 37, 255, 39}, {193, 37, 255, 41}}},
|
||||
{Region: "Slovenia", IPs: []net.IP{{195, 158, 249, 36}, {195, 158, 249, 38}, {195, 158, 249, 40}, {195, 158, 249, 42}}},
|
||||
{Region: "South Africa", IPs: []net.IP{{154, 127, 49, 226}, {154, 127, 49, 228}, {154, 127, 49, 230}, {154, 127, 49, 232}, {196, 251, 250, 111}}},
|
||||
{Region: "Spain Barcelona", IPs: []net.IP{{37, 120, 142, 133}, {37, 120, 142, 135}, {185, 188, 61, 5}, {185, 188, 61, 7}}},
|
||||
{Region: "Spain Madrid", IPs: []net.IP{{37, 120, 148, 213}, {82, 102, 17, 179}, {82, 102, 17, 181}, {82, 102, 17, 183}, {82, 102, 17, 185}, {84, 17, 62, 163}, {84, 17, 62, 165}, {84, 17, 62, 181}, {89, 37, 95, 7}, {89, 37, 95, 9}, {89, 37, 95, 11}, {89, 37, 95, 15}, {89, 37, 95, 17}, {89, 37, 95, 19}, {89, 37, 95, 25}, {188, 208, 141, 98}, {188, 208, 141, 114}, {212, 102, 48, 2}, {212, 102, 48, 4}, {212, 102, 48, 8}, {212, 102, 48, 10}, {212, 102, 48, 13}, {212, 102, 48, 15}, {212, 102, 48, 18}, {212, 102, 48, 20}}},
|
||||
{Region: "Spain Valencia", IPs: []net.IP{{185, 153, 150, 44}, {185, 153, 150, 46}, {185, 153, 150, 48}, {185, 153, 150, 50}, {185, 153, 150, 52}, {185, 153, 150, 54}, {185, 153, 150, 56}, {185, 153, 150, 58}, {196, 196, 150, 67}, {196, 196, 150, 69}, {196, 196, 150, 71}, {196, 196, 150, 83}, {196, 196, 150, 85}}},
|
||||
{Region: "Sweden", IPs: []net.IP{{45, 83, 91, 131}, {45, 83, 91, 133}, {45, 83, 91, 135}, {45, 83, 91, 147}, {45, 83, 91, 149}, {45, 83, 91, 151}, {46, 227, 69, 23}, {46, 227, 69, 25}, {46, 227, 69, 27}, {46, 227, 69, 29}, {185, 76, 9, 34}, {185, 76, 9, 36}, {185, 76, 9, 39}, {185, 76, 9, 41}, {185, 76, 9, 44}, {185, 76, 9, 46}, {185, 76, 9, 49}, {185, 76, 9, 51}}},
|
||||
{Region: "Switzerland", IPs: []net.IP{{37, 120, 213, 3}, {37, 120, 213, 7}, {45, 12, 222, 245}, {84, 17, 53, 86}, {84, 17, 53, 166}, {84, 17, 53, 168}, {84, 17, 53, 208}, {84, 17, 53, 210}, {84, 17, 53, 212}, {84, 17, 53, 216}, {84, 17, 53, 219}, {84, 17, 53, 221}, {84, 17, 53, 223}, {84, 17, 53, 225}, {84, 17, 53, 227}, {84, 39, 112, 35}}},
|
||||
{Region: "Taiwan", IPs: []net.IP{{2, 58, 241, 3}, {2, 58, 241, 5}, {2, 58, 242, 43}, {2, 58, 242, 45}, {2, 58, 242, 155}, {2, 58, 242, 157}, {2, 58, 243, 51}, {2, 58, 243, 53}, {103, 51, 140, 70}, {103, 51, 140, 72}, {103, 51, 140, 74}, {103, 98, 74, 227}, {103, 98, 74, 229}, {103, 98, 75, 71}, {103, 98, 75, 73}, {103, 103, 128, 30}}},
|
||||
{Region: "Thailand", IPs: []net.IP{{45, 64, 186, 134}, {45, 64, 186, 163}, {103, 253, 74, 7}}},
|
||||
{Region: "Turkey", IPs: []net.IP{{185, 195, 79, 3}}},
|
||||
{Region: "UK France", IPs: []net.IP{{188, 166, 168, 247}}},
|
||||
{Region: "UK Germany", IPs: []net.IP{{45, 77, 58, 16}}},
|
||||
{Region: "UK Glasgow", IPs: []net.IP{{185, 108, 105, 5}, {185, 108, 105, 13}, {185, 108, 105, 18}, {185, 108, 105, 20}, {185, 108, 105, 22}, {185, 108, 105, 40}}},
|
||||
{Region: "UK London st001", IPs: []net.IP{{217, 146, 82, 83}}},
|
||||
{Region: "UK London st002", IPs: []net.IP{{185, 134, 22, 80}}},
|
||||
{Region: "UK London st003", IPs: []net.IP{{185, 134, 22, 92}}},
|
||||
{Region: "UK London st004", IPs: []net.IP{{185, 44, 76, 186}}},
|
||||
{Region: "UK London st005", IPs: []net.IP{{185, 44, 76, 188}}},
|
||||
{Region: "UK London", IPs: []net.IP{{5, 226, 139, 65}, {5, 226, 139, 225}, {81, 19, 210, 234}, {89, 35, 29, 71}, {178, 239, 166, 222}, {178, 239, 166, 227}, {178, 239, 166, 234}, {178, 239, 166, 250}, {185, 16, 206, 69}, {185, 38, 148, 228}, {185, 38, 150, 41}, {185, 38, 150, 88}, {185, 38, 150, 124}, {185, 44, 76, 167}, {185, 44, 76, 172}, {185, 114, 224, 53}, {185, 114, 224, 115}, {185, 114, 224, 119}, {185, 125, 207, 155}, {185, 125, 207, 177}, {185, 134, 22, 191}, {185, 193, 36, 208}, {195, 140, 215, 42}}},
|
||||
{Region: "UK Manchester", IPs: []net.IP{{37, 120, 200, 2}, {86, 106, 136, 67}, {86, 106, 136, 69}, {86, 106, 136, 85}, {89, 238, 130, 196}, {89, 238, 140, 226}, {89, 238, 140, 227}, {89, 238, 140, 229}, {89, 238, 143, 100}, {89, 238, 143, 101}, {89, 238, 143, 103}, {89, 238, 143, 105}, {92, 119, 176, 19}, {92, 119, 176, 21}, {92, 119, 176, 23}, {192, 145, 126, 130}, {192, 145, 126, 131}, {192, 145, 126, 133}, {193, 148, 17, 82}, {193, 148, 17, 130}, {195, 12, 48, 212}, {195, 12, 48, 213}, {195, 12, 48, 215}, {195, 12, 48, 217}, {217, 138, 196, 91}}},
|
||||
{Region: "US Atlanta", IPs: []net.IP{{66, 115, 154, 131}, {66, 115, 154, 133}, {66, 115, 154, 135}, {66, 115, 154, 147}, {66, 115, 154, 149}, {66, 115, 154, 151}, {66, 115, 169, 35}, {66, 115, 175, 35}, {66, 115, 175, 37}, {66, 115, 175, 40}, {66, 115, 175, 42}, {66, 115, 175, 45}, {66, 115, 175, 47}, {66, 115, 175, 50}, {66, 115, 175, 52}, {185, 93, 0, 143}, {185, 93, 0, 146}}},
|
||||
{Region: "US Bend", IPs: []net.IP{{45, 43, 14, 73}, {45, 43, 14, 75}, {45, 43, 14, 83}, {45, 43, 14, 85}, {45, 43, 14, 93}, {45, 43, 14, 95}, {45, 43, 14, 103}, {45, 43, 14, 105}, {154, 16, 168, 184}, {154, 16, 168, 186}, {154, 16, 168, 188}}},
|
||||
{Region: "US Boston", IPs: []net.IP{{173, 237, 207, 11}, {173, 237, 207, 13}, {173, 237, 207, 15}, {173, 237, 207, 21}, {173, 237, 207, 25}, {173, 237, 207, 30}, {173, 237, 207, 32}, {173, 237, 207, 36}, {173, 237, 207, 38}, {173, 237, 207, 42}, {173, 237, 207, 44}, {192, 34, 83, 230}, {192, 34, 83, 232}, {192, 34, 83, 234}, {192, 34, 83, 236}, {199, 217, 107, 20}, {199, 217, 107, 22}, {199, 217, 107, 25}, {199, 217, 107, 27}}},
|
||||
{Region: "US Buffalo", IPs: []net.IP{{107, 174, 20, 130}, {107, 174, 20, 132}, {107, 174, 20, 134}, {107, 175, 104, 82}, {107, 175, 104, 84}, {107, 175, 104, 86}, {172, 93, 153, 146}, {172, 93, 153, 148}, {172, 93, 153, 150}}},
|
||||
{Region: "US Charlotte", IPs: []net.IP{{66, 11, 124, 136}, {66, 11, 124, 138}, {66, 11, 124, 140}, {66, 11, 124, 142}, {66, 11, 124, 144}, {155, 254, 28, 141}, {155, 254, 29, 163}, {155, 254, 29, 165}, {155, 254, 31, 182}, {155, 254, 31, 184}, {192, 154, 253, 67}, {192, 154, 253, 69}, {192, 154, 254, 135}, {192, 154, 254, 137}, {192, 154, 255, 52}, {192, 154, 255, 54}}},
|
||||
{Region: "US Chicago", IPs: []net.IP{{74, 119, 146, 115}, {74, 119, 146, 117}, {74, 119, 146, 119}, {74, 119, 146, 133}, {74, 119, 146, 179}, {74, 119, 146, 181}, {74, 119, 146, 183}, {74, 119, 146, 195}, {74, 119, 146, 197}, {74, 119, 146, 199}, {74, 119, 146, 211}, {89, 187, 182, 173}, {89, 187, 182, 175}, {107, 152, 100, 19}, {107, 152, 100, 21}, {107, 152, 100, 24}, {107, 152, 100, 26}, {184, 170, 250, 69}, {184, 170, 250, 74}, {184, 170, 250, 149}, {184, 170, 250, 154}}},
|
||||
{Region: "US Dallas", IPs: []net.IP{{66, 115, 177, 131}, {66, 115, 177, 133}, {66, 115, 177, 136}, {66, 115, 177, 138}, {66, 115, 177, 141}, {66, 115, 177, 143}, {66, 115, 177, 146}, {66, 115, 177, 148}, {66, 115, 177, 151}, {66, 115, 177, 153}, {66, 115, 177, 156}, {66, 115, 177, 158}, {89, 187, 175, 165}, {89, 187, 175, 167}, {107, 181, 173, 163}, {172, 241, 114, 87}, {212, 102, 40, 66}, {212, 102, 40, 68}, {212, 102, 40, 71}, {212, 102, 40, 73}, {212, 102, 40, 76}, {212, 102, 40, 78}, {212, 102, 40, 81}}},
|
||||
{Region: "US Denver", IPs: []net.IP{{174, 128, 245, 3}, {174, 128, 245, 5}, {212, 102, 44, 66}, {212, 102, 44, 68}, {212, 102, 44, 71}, {212, 102, 44, 73}, {212, 102, 44, 76}, {212, 102, 44, 78}, {212, 102, 44, 81}, {212, 102, 44, 83}, {212, 102, 44, 86}, {212, 102, 44, 88}, {212, 102, 44, 91}, {212, 102, 44, 93}}},
|
||||
{Region: "US Gahanna", IPs: []net.IP{{104, 244, 208, 35}, {104, 244, 208, 37}, {104, 244, 208, 99}, {104, 244, 208, 101}, {104, 244, 208, 107}, {104, 244, 208, 203}, {104, 244, 208, 205}, {104, 244, 208, 229}, {104, 244, 208, 231}, {104, 244, 209, 51}, {104, 244, 209, 53}, {104, 244, 211, 139}, {104, 244, 211, 141}, {104, 244, 211, 171}, {104, 244, 211, 173}, {104, 244, 211, 179}}},
|
||||
{Region: "US Houston", IPs: []net.IP{{104, 148, 30, 35}, {104, 148, 30, 37}, {104, 148, 30, 39}, {104, 148, 30, 53}, {104, 148, 30, 55}, {104, 148, 30, 83}, {104, 148, 30, 85}, {104, 148, 30, 87}, {199, 10, 64, 67}, {199, 10, 64, 69}, {199, 10, 64, 83}, {199, 10, 64, 85}, {199, 10, 64, 99}, {199, 10, 64, 101}, {199, 10, 64, 115}, {199, 10, 64, 117}}},
|
||||
{Region: "US Kansas City", IPs: []net.IP{{63, 141, 236, 243}, {63, 141, 248, 179}, {63, 141, 248, 181}, {107, 150, 39, 43}, {173, 208, 202, 59}, {173, 208, 202, 61}, {198, 204, 231, 147}, {198, 204, 231, 149}, {204, 12, 208, 115}, {204, 12, 208, 117}}},
|
||||
{Region: "US Las Vegas", IPs: []net.IP{{89, 187, 187, 147}, {89, 187, 187, 149}, {185, 242, 5, 211}, {185, 242, 5, 213}, {185, 242, 5, 215}}},
|
||||
{Region: "US Latham", IPs: []net.IP{{45, 43, 19, 66}, {45, 43, 19, 68}, {45, 43, 19, 74}, {45, 43, 19, 76}, {45, 43, 19, 82}, {45, 43, 19, 84}, {45, 43, 19, 90}, {45, 43, 19, 92}, {154, 16, 169, 3}, {154, 16, 169, 5}, {154, 16, 169, 7}}},
|
||||
{Region: "US Los Angeles", IPs: []net.IP{{38, 95, 110, 67}, {38, 95, 110, 71}, {89, 187, 187, 66}, {89, 187, 187, 68}, {89, 187, 187, 71}, {89, 187, 187, 73}, {89, 187, 187, 76}, {89, 187, 187, 78}, {89, 187, 187, 81}, {89, 187, 187, 83}, {89, 187, 187, 86}, {172, 83, 44, 83}, {184, 170, 243, 199}, {184, 170, 243, 211}, {192, 111, 134, 67}, {192, 111, 134, 78}, {192, 111, 134, 80}, {192, 111, 134, 195}, {192, 111, 134, 202}, {192, 111, 134, 207}, {192, 111, 134, 210}, {192, 111, 134, 215}, {192, 111, 134, 217}, {192, 111, 134, 220}, {192, 111, 134, 222}}},
|
||||
{Region: "US Maryland", IPs: []net.IP{{23, 82, 8, 173}, {23, 105, 160, 134}, {23, 105, 160, 138}, {23, 105, 160, 144}, {23, 105, 163, 94}, {207, 244, 67, 147}, {207, 244, 67, 149}, {207, 244, 84, 40}, {207, 244, 84, 42}, {207, 244, 84, 44}, {207, 244, 84, 58}, {207, 244, 127, 116}, {207, 244, 127, 118}}},
|
||||
{Region: "US Miami", IPs: []net.IP{{89, 187, 173, 250}, {107, 181, 164, 35}, {107, 181, 164, 37}, {172, 83, 42, 23}, {172, 83, 42, 39}, {172, 83, 42, 53}, {172, 83, 42, 55}, {172, 83, 42, 83}, {172, 83, 42, 85}, {172, 83, 42, 131}, {172, 83, 42, 133}, {172, 83, 42, 136}, {172, 83, 42, 138}, {172, 83, 42, 141}, {172, 83, 42, 143}, {172, 83, 42, 146}, {172, 83, 42, 151}, {172, 83, 42, 153}, {172, 83, 42, 156}, {172, 83, 42, 158}, {193, 37, 252, 195}, {193, 37, 252, 197}}},
|
||||
{Region: "US Netherlands", IPs: []net.IP{{142, 93, 58, 71}}},
|
||||
{Region: "US New York City mp001", IPs: []net.IP{{45, 55, 60, 159}}},
|
||||
{Region: "US New York City st001", IPs: []net.IP{{92, 119, 177, 19}}},
|
||||
{Region: "US New York City st002", IPs: []net.IP{{92, 119, 177, 21}}},
|
||||
{Region: "US New York City st003", IPs: []net.IP{{92, 119, 177, 23}}},
|
||||
{Region: "US New York City st004", IPs: []net.IP{{193, 148, 18, 51}}},
|
||||
{Region: "US New York City st005", IPs: []net.IP{{193, 148, 18, 53}}},
|
||||
{Region: "US New York City", IPs: []net.IP{{37, 120, 202, 3}, {37, 120, 202, 5}, {84, 17, 35, 66}, {84, 17, 35, 73}, {84, 17, 35, 76}, {84, 17, 35, 78}, {84, 17, 35, 86}, {84, 17, 35, 91}, {89, 187, 177, 120}, {89, 187, 177, 122}, {89, 187, 178, 92}, {89, 187, 178, 94}, {98, 142, 220, 35}, {98, 142, 220, 37}, {107, 152, 101, 163}, {172, 98, 78, 227}, {192, 40, 59, 229}, {192, 40, 59, 240}, {199, 36, 221, 85}, {199, 36, 221, 99}, {199, 36, 221, 104}, {199, 36, 221, 111}, {199, 36, 221, 114}, {199, 36, 221, 116}, {199, 36, 221, 119}}},
|
||||
{Region: "US Orlando", IPs: []net.IP{{198, 147, 22, 83}, {198, 147, 22, 85}, {198, 147, 22, 87}, {198, 147, 22, 131}, {198, 147, 22, 133}, {198, 147, 22, 135}, {198, 147, 22, 147}, {198, 147, 22, 149}, {198, 147, 22, 151}, {198, 147, 22, 163}, {198, 147, 22, 165}, {198, 147, 22, 167}, {198, 147, 22, 195}, {198, 147, 22, 197}, {198, 147, 22, 211}, {198, 147, 22, 213}}},
|
||||
{Region: "US Phoenix", IPs: []net.IP{{23, 83, 128, 233}, {23, 83, 128, 235}, {23, 83, 128, 239}, {23, 83, 128, 241}, {23, 83, 128, 243}, {107, 181, 184, 115}, {107, 181, 184, 117}, {172, 98, 87, 35}, {172, 98, 87, 37}, {184, 170, 240, 147}, {184, 170, 240, 149}, {184, 170, 240, 151}, {184, 170, 240, 179}, {184, 170, 240, 181}, {199, 58, 187, 3}, {199, 58, 187, 5}, {199, 58, 187, 8}, {199, 58, 187, 10}, {199, 58, 187, 13}, {199, 58, 187, 15}, {199, 58, 187, 18}, {199, 58, 187, 23}, {199, 58, 187, 25}, {199, 58, 187, 67}, {199, 58, 187, 69}}},
|
||||
{Region: "US Portugal", IPs: []net.IP{{142, 93, 81, 242}}},
|
||||
{Region: "US Saint Louis", IPs: []net.IP{{148, 72, 170, 108}, {148, 72, 174, 36}, {148, 72, 174, 38}, {148, 72, 174, 41}, {148, 72, 174, 43}, {148, 72, 174, 46}, {148, 72, 174, 51}, {148, 72, 174, 53}}},
|
||||
{Region: "US Salt Lake City", IPs: []net.IP{{104, 200, 131, 5}, {104, 200, 131, 7}, {104, 200, 131, 9}, {104, 200, 131, 165}, {104, 200, 131, 167}, {104, 200, 131, 170}, {104, 200, 131, 172}}},
|
||||
{Region: "US San Francisco", IPs: []net.IP{{107, 181, 166, 35}, {107, 181, 166, 37}, {107, 181, 166, 39}, {107, 181, 166, 51}, {107, 181, 166, 55}, {107, 181, 166, 83}, {107, 181, 166, 85}, {107, 181, 166, 227}, {107, 181, 166, 229}, {198, 8, 81, 35}, {198, 8, 81, 37}, {209, 58, 128, 48}, {209, 58, 128, 50}}},
|
||||
{Region: "US Seatle", IPs: []net.IP{{84, 17, 41, 73}, {84, 17, 41, 75}, {84, 17, 41, 77}, {84, 17, 41, 79}, {84, 17, 41, 81}, {84, 17, 41, 83}, {84, 17, 41, 85}, {104, 200, 129, 243}, {104, 200, 129, 245}, {198, 8, 80, 83}, {198, 8, 80, 85}, {198, 8, 80, 87}, {198, 8, 80, 227}, {198, 8, 80, 229}, {199, 229, 250, 163}, {199, 229, 250, 165}, {199, 229, 250, 167}}},
|
||||
{Region: "US Tampa", IPs: []net.IP{{66, 206, 23, 5}, {74, 50, 117, 106}, {74, 50, 117, 119}, {74, 50, 117, 121}, {74, 50, 117, 125}, {162, 220, 56, 98}, {162, 220, 56, 100}, {162, 220, 63, 226}, {162, 220, 63, 232}, {162, 220, 63, 246}, {162, 220, 63, 248}, {209, 216, 92, 197}, {209, 216, 92, 200}, {209, 216, 92, 202}, {209, 216, 92, 205}, {209, 216, 92, 207}, {209, 216, 92, 210}, {209, 216, 92, 212}, {209, 216, 92, 215}, {209, 216, 92, 217}, {209, 216, 92, 220}, {209, 216, 92, 222}, {209, 216, 92, 225}, {209, 216, 92, 227}}},
|
||||
{Region: "Ukraine", IPs: []net.IP{{45, 9, 238, 23}, {45, 9, 238, 30}, {45, 9, 238, 38}, {45, 9, 238, 47}}},
|
||||
{Region: "United Arab Emirates", IPs: []net.IP{{45, 9, 249, 243}, {45, 9, 249, 245}, {45, 9, 249, 247}, {45, 9, 250, 99}, {45, 9, 250, 101}, {45, 9, 250, 103}}},
|
||||
{Region: "Vietnam", IPs: []net.IP{{202, 143, 110, 32}}},
|
||||
{Region: "italy Rome", IPs: []net.IP{{82, 102, 26, 61}, {82, 102, 26, 114}, {82, 102, 26, 115}, {82, 102, 26, 117}, {87, 101, 94, 210}, {87, 101, 94, 211}, {87, 101, 94, 213}, {87, 101, 94, 215}, {87, 101, 94, 226}, {185, 217, 71, 2}, {185, 217, 71, 3}, {185, 217, 71, 5}, {185, 217, 71, 18}, {185, 217, 71, 50}, {185, 217, 71, 187}, {185, 217, 71, 195}, {185, 217, 71, 197}, {185, 217, 71, 211}, {185, 217, 71, 243}, {185, 217, 71, 251}, {185, 217, 71, 253}, {217, 138, 219, 235}, {217, 138, 219, 237}, {217, 138, 219, 251}}},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,82 +12,84 @@ const (
|
||||
)
|
||||
|
||||
func WindscribeRegionChoices() (choices []string) {
|
||||
for _, server := range WindscribeServers() {
|
||||
choices = append(choices, string(server.Region))
|
||||
servers := WindscribeServers()
|
||||
choices = make([]string, len(servers))
|
||||
for i := range servers {
|
||||
choices[i] = servers[i].Region
|
||||
}
|
||||
return choices
|
||||
}
|
||||
|
||||
func WindscribeServers() []models.WindscribeServer {
|
||||
return []models.WindscribeServer{
|
||||
{Region: models.WindscribeRegion("Albania"), IPs: []net.IP{{31, 171, 152, 179}}},
|
||||
{Region: models.WindscribeRegion("Argentina"), IPs: []net.IP{{167, 250, 6, 121}, {190, 105, 236, 19}, {190, 105, 236, 32}, {190, 105, 236, 50}}},
|
||||
{Region: models.WindscribeRegion("Australia"), IPs: []net.IP{{43, 245, 160, 35}, {45, 121, 208, 160}, {45, 121, 209, 160}, {45, 121, 210, 208}, {103, 62, 50, 208}, {103, 77, 233, 67}, {103, 77, 234, 211}, {103, 108, 92, 83}, {116, 90, 72, 243}, {116, 206, 228, 67}, {116, 206, 229, 131}}},
|
||||
{Region: models.WindscribeRegion("Austria"), IPs: []net.IP{{89, 187, 168, 66}, {217, 64, 127, 11}}},
|
||||
{Region: models.WindscribeRegion("Azerbaijan"), IPs: []net.IP{{85, 132, 61, 123}}},
|
||||
{Region: models.WindscribeRegion("Belgium"), IPs: []net.IP{{185, 232, 21, 131}, {194, 187, 251, 147}}},
|
||||
{Region: models.WindscribeRegion("Bosnia"), IPs: []net.IP{{185, 99, 3, 24}}},
|
||||
{Region: models.WindscribeRegion("Brazil"), IPs: []net.IP{{177, 54, 144, 68}, {177, 67, 80, 59}, {189, 1, 172, 12}}},
|
||||
{Region: models.WindscribeRegion("Bulgaria"), IPs: []net.IP{{185, 94, 192, 35}}},
|
||||
{Region: models.WindscribeRegion("Canada East"), IPs: []net.IP{{23, 154, 160, 177}, {66, 70, 148, 80}, {104, 227, 235, 129}, {104, 254, 92, 11}, {104, 254, 92, 91}, {144, 168, 163, 160}, {144, 168, 163, 193}, {184, 75, 212, 91}, {192, 190, 19, 65}, {192, 190, 19, 97}, {198, 8, 85, 195}, {198, 8, 85, 210}, {199, 204, 208, 158}}},
|
||||
{Region: models.WindscribeRegion("Canada West"), IPs: []net.IP{{104, 218, 61, 1}, {104, 218, 61, 33}, {162, 221, 207, 95}, {208, 78, 41, 1}, {208, 78, 41, 131}, {208, 78, 41, 163}}},
|
||||
{Region: models.WindscribeRegion("Colombia"), IPs: []net.IP{{138, 121, 203, 203}, {138, 186, 141, 155}}},
|
||||
{Region: models.WindscribeRegion("Croatia"), IPs: []net.IP{{85, 10, 56, 252}}},
|
||||
{Region: models.WindscribeRegion("Cyprus"), IPs: []net.IP{{157, 97, 132, 43}}},
|
||||
{Region: models.WindscribeRegion("Czech Republic"), IPs: []net.IP{{185, 156, 174, 11}, {185, 246, 210, 2}}},
|
||||
{Region: models.WindscribeRegion("Denmark"), IPs: []net.IP{{134, 90, 149, 147}, {185, 206, 224, 195}}},
|
||||
{Region: models.WindscribeRegion("Estona"), IPs: []net.IP{{46, 22, 211, 251}, {196, 196, 216, 131}}},
|
||||
{Region: models.WindscribeRegion("Fake Antarctica"), IPs: []net.IP{{23, 154, 160, 212}, {23, 154, 160, 222}}},
|
||||
{Region: models.WindscribeRegion("Finland"), IPs: []net.IP{{185, 112, 82, 227}, {194, 34, 133, 82}}},
|
||||
{Region: models.WindscribeRegion("France"), IPs: []net.IP{{45, 89, 174, 35}, {82, 102, 18, 35}, {84, 17, 42, 2}, {84, 17, 42, 34}, {185, 156, 173, 187}}},
|
||||
{Region: models.WindscribeRegion("Georgia"), IPs: []net.IP{{188, 93, 90, 83}}},
|
||||
{Region: models.WindscribeRegion("Germany"), IPs: []net.IP{{45, 87, 212, 51}, {89, 249, 65, 19}, {185, 130, 184, 195}, {195, 181, 170, 66}, {195, 181, 175, 98}, {217, 138, 194, 115}}},
|
||||
{Region: models.WindscribeRegion("Greece"), IPs: []net.IP{{78, 108, 38, 155}, {185, 226, 64, 111}, {188, 123, 126, 146}}},
|
||||
{Region: models.WindscribeRegion("Hong Kong"), IPs: []net.IP{{84, 17, 57, 114}, {103, 10, 197, 99}}},
|
||||
{Region: models.WindscribeRegion("Hungary"), IPs: []net.IP{{185, 104, 187, 43}}},
|
||||
{Region: models.WindscribeRegion("Iceland"), IPs: []net.IP{{82, 221, 139, 38}, {185, 165, 170, 2}}},
|
||||
{Region: models.WindscribeRegion("India"), IPs: []net.IP{{103, 205, 140, 227}, {169, 38, 68, 188}, {169, 38, 72, 12}, {169, 38, 72, 14}}},
|
||||
{Region: models.WindscribeRegion("Indonesia"), IPs: []net.IP{{45, 127, 134, 91}}},
|
||||
{Region: models.WindscribeRegion("Ireland"), IPs: []net.IP{{185, 24, 232, 146}, {185, 104, 219, 2}}},
|
||||
{Region: models.WindscribeRegion("Israel"), IPs: []net.IP{{160, 116, 0, 27}, {185, 191, 205, 139}}},
|
||||
{Region: models.WindscribeRegion("Italy"), IPs: []net.IP{{37, 120, 135, 83}, {37, 120, 207, 19}, {84, 17, 59, 66}, {87, 101, 94, 195}, {89, 40, 182, 3}}},
|
||||
{Region: models.WindscribeRegion("Japan"), IPs: []net.IP{{89, 187, 161, 114}, {193, 148, 16, 243}}},
|
||||
{Region: models.WindscribeRegion("Latvia"), IPs: []net.IP{{85, 254, 72, 23}}},
|
||||
{Region: models.WindscribeRegion("Lithuania"), IPs: []net.IP{{85, 206, 163, 225}}},
|
||||
{Region: models.WindscribeRegion("Macedonia"), IPs: []net.IP{{185, 225, 28, 51}}},
|
||||
{Region: models.WindscribeRegion("Malaysia"), IPs: []net.IP{{103, 106, 250, 31}, {103, 212, 69, 232}}},
|
||||
{Region: models.WindscribeRegion("Mexico"), IPs: []net.IP{{143, 255, 57, 67}, {190, 103, 179, 211}, {190, 103, 179, 217}, {201, 131, 125, 107}}},
|
||||
{Region: models.WindscribeRegion("Moldova"), IPs: []net.IP{{178, 175, 144, 123}}},
|
||||
{Region: models.WindscribeRegion("Netherlands"), IPs: []net.IP{{37, 120, 192, 19}, {46, 166, 143, 98}, {72, 11, 157, 35}, {72, 11, 157, 67}, {84, 17, 46, 2}, {185, 212, 171, 131}, {185, 253, 96, 3}}},
|
||||
{Region: models.WindscribeRegion("New Zealand"), IPs: []net.IP{{103, 62, 49, 113}, {103, 108, 94, 163}}},
|
||||
{Region: models.WindscribeRegion("Norway"), IPs: []net.IP{{37, 120, 203, 67}, {185, 206, 225, 131}}},
|
||||
{Region: models.WindscribeRegion("Philippines"), IPs: []net.IP{{103, 103, 0, 118}}},
|
||||
{Region: models.WindscribeRegion("Poland"), IPs: []net.IP{{5, 133, 11, 116}, {84, 17, 55, 98}, {185, 244, 214, 35}}},
|
||||
{Region: models.WindscribeRegion("Portugal"), IPs: []net.IP{{94, 46, 13, 215}, {185, 15, 21, 66}}},
|
||||
{Region: models.WindscribeRegion("Romania"), IPs: []net.IP{{89, 46, 103, 147}, {91, 207, 102, 147}}},
|
||||
{Region: models.WindscribeRegion("Russia"), IPs: []net.IP{{94, 242, 62, 19}, {94, 242, 62, 67}, {95, 213, 193, 195}, {95, 213, 193, 227}, {185, 22, 175, 132}, {188, 124, 42, 99}, {188, 124, 42, 115}}},
|
||||
{Region: models.WindscribeRegion("Serbia"), IPs: []net.IP{{141, 98, 103, 19}}},
|
||||
{Region: models.WindscribeRegion("Singapore"), IPs: []net.IP{{82, 102, 25, 131}, {89, 187, 162, 130}, {103, 62, 48, 224}, {185, 200, 117, 163}}},
|
||||
{Region: models.WindscribeRegion("Slovakia"), IPs: []net.IP{{185, 245, 85, 3}}},
|
||||
{Region: models.WindscribeRegion("Slovenia"), IPs: []net.IP{{146, 247, 24, 207}}},
|
||||
{Region: models.WindscribeRegion("South Africa"), IPs: []net.IP{{129, 232, 167, 211}, {165, 73, 248, 91}, {197, 242, 156, 53}, {197, 242, 157, 235}}},
|
||||
{Region: models.WindscribeRegion("South Korea"), IPs: []net.IP{{103, 212, 223, 3}, {218, 232, 76, 179}}},
|
||||
{Region: models.WindscribeRegion("Spain"), IPs: []net.IP{{37, 120, 142, 227}, {89, 238, 178, 43}, {185, 253, 99, 131}, {217, 138, 218, 99}}},
|
||||
{Region: models.WindscribeRegion("Sweden"), IPs: []net.IP{{31, 13, 191, 67}, {195, 181, 166, 129}}},
|
||||
{Region: models.WindscribeRegion("Switzerland"), IPs: []net.IP{{31, 7, 57, 242}, {37, 120, 213, 163}, {84, 17, 53, 2}, {89, 187, 165, 98}, {185, 156, 175, 179}}},
|
||||
{Region: models.WindscribeRegion("Thailand"), IPs: []net.IP{{27, 254, 130, 221}}},
|
||||
{Region: models.WindscribeRegion("Tunisia"), IPs: []net.IP{{41, 231, 5, 23}}},
|
||||
{Region: models.WindscribeRegion("Turkey"), IPs: []net.IP{{45, 123, 118, 156}, {45, 123, 119, 11}, {79, 98, 131, 43}, {176, 53, 113, 163}, {185, 125, 33, 227}}},
|
||||
{Region: models.WindscribeRegion("Ukraine"), IPs: []net.IP{{45, 141, 156, 11}, {45, 141, 156, 50}}},
|
||||
{Region: models.WindscribeRegion("United Arab Emirates"), IPs: []net.IP{{45, 9, 249, 43}}},
|
||||
{Region: models.WindscribeRegion("United kingdom"), IPs: []net.IP{{2, 58, 29, 17}, {81, 92, 207, 69}, {84, 17, 50, 130}, {89, 238, 131, 131}, {89, 238, 135, 133}, {89, 238, 150, 229}, {185, 212, 168, 133}, {212, 102, 63, 32}, {212, 102, 63, 62}, {217, 138, 254, 51}}},
|
||||
{Region: models.WindscribeRegion("US Central"), IPs: []net.IP{{67, 212, 238, 196}, {69, 12, 94, 67}, {104, 129, 18, 3}, {104, 223, 92, 163}, {107, 150, 31, 67}, {107, 150, 31, 131}, {107, 161, 86, 131}, {107, 182, 234, 240}, {161, 129, 70, 195}, {162, 222, 198, 67}, {172, 241, 26, 78}, {172, 241, 131, 129}, {198, 12, 76, 211}, {198, 54, 128, 116}, {198, 55, 125, 195}, {199, 115, 96, 83}, {204, 44, 112, 131}, {206, 217, 139, 19}, {206, 217, 143, 131}}},
|
||||
{Region: models.WindscribeRegion("Us East"), IPs: []net.IP{{23, 82, 136, 93}, {23, 83, 91, 170}, {23, 105, 170, 139}, {23, 226, 141, 195}, {38, 132, 118, 227}, {67, 21, 32, 145}, {68, 235, 35, 12}, {68, 235, 50, 227}, {86, 106, 87, 83}, {104, 168, 34, 147}, {104, 223, 127, 195}, {107, 150, 29, 131}, {142, 234, 200, 176}, {156, 96, 59, 102}, {162, 222, 195, 67}, {167, 160, 167, 195}, {167, 160, 172, 3}, {173, 44, 36, 67}, {173, 208, 45, 33}, {185, 232, 22, 195}, {198, 12, 64, 35}, {198, 147, 22, 225}, {206, 217, 128, 3}, {206, 217, 129, 227}, {217, 138, 255, 179}}},
|
||||
{Region: models.WindscribeRegion("US West"), IPs: []net.IP{{23, 83, 130, 166}, {23, 83, 131, 187}, {23, 94, 74, 99}, {37, 120, 147, 163}, {64, 120, 2, 174}, {66, 115, 176, 3}, {82, 102, 30, 67}, {89, 187, 185, 34}, {89, 187, 187, 98}, {104, 129, 3, 67}, {104, 129, 3, 163}, {104, 129, 56, 67}, {104, 129, 56, 131}, {104, 152, 222, 33}, {167, 88, 60, 227}, {167, 88, 60, 243}, {172, 241, 214, 202}, {172, 241, 250, 131}, {172, 255, 125, 141}, {185, 236, 200, 35}, {192, 3, 20, 51}, {198, 12, 116, 195}, {198, 23, 242, 147}, {209, 58, 129, 121}, {216, 45, 53, 131}, {217, 138, 217, 51}, {217, 138, 217, 211}}},
|
||||
{Region: models.WindscribeRegion("Vietnam"), IPs: []net.IP{{103, 9, 76, 197}, {103, 9, 79, 186}, {103, 9, 79, 219}}},
|
||||
{Region: models.WindscribeRegion("Windflix CA"), IPs: []net.IP{{104, 218, 60, 111}, {104, 254, 92, 99}}},
|
||||
{Region: models.WindscribeRegion("Windflix JP"), IPs: []net.IP{{5, 181, 235, 67}}},
|
||||
{Region: models.WindscribeRegion("Windflix UK"), IPs: []net.IP{{45, 9, 248, 3}, {81, 92, 200, 85}, {89, 47, 62, 83}}},
|
||||
{Region: models.WindscribeRegion("Windflix US"), IPs: []net.IP{{23, 105, 170, 130}, {23, 105, 170, 151}, {185, 232, 22, 131}, {204, 44, 112, 67}, {217, 138, 206, 211}}},
|
||||
{Region: "Albania", IPs: []net.IP{{31, 171, 152, 179}}},
|
||||
{Region: "Argentina", IPs: []net.IP{{167, 250, 6, 121}, {190, 105, 236, 19}, {190, 105, 236, 32}, {190, 105, 236, 50}}},
|
||||
{Region: "Australia", IPs: []net.IP{{43, 245, 160, 35}, {45, 121, 208, 160}, {45, 121, 209, 160}, {45, 121, 210, 208}, {103, 62, 50, 208}, {103, 77, 233, 67}, {103, 77, 234, 211}, {103, 108, 92, 83}, {116, 90, 72, 243}, {116, 206, 228, 67}, {116, 206, 229, 131}}},
|
||||
{Region: "Austria", IPs: []net.IP{{89, 187, 168, 66}, {217, 64, 127, 11}}},
|
||||
{Region: "Azerbaijan", IPs: []net.IP{{85, 132, 61, 123}}},
|
||||
{Region: "Belgium", IPs: []net.IP{{185, 232, 21, 131}, {194, 187, 251, 147}}},
|
||||
{Region: "Bosnia", IPs: []net.IP{{185, 99, 3, 24}}},
|
||||
{Region: "Brazil", IPs: []net.IP{{177, 54, 144, 68}, {177, 67, 80, 59}, {189, 1, 172, 12}}},
|
||||
{Region: "Bulgaria", IPs: []net.IP{{185, 94, 192, 35}}},
|
||||
{Region: "Canada East", IPs: []net.IP{{23, 154, 160, 177}, {66, 70, 148, 80}, {104, 227, 235, 129}, {104, 254, 92, 11}, {104, 254, 92, 91}, {144, 168, 163, 160}, {144, 168, 163, 193}, {184, 75, 212, 91}, {192, 190, 19, 65}, {192, 190, 19, 97}, {198, 8, 85, 195}, {198, 8, 85, 210}, {199, 204, 208, 158}}},
|
||||
{Region: "Canada West", IPs: []net.IP{{104, 218, 61, 1}, {104, 218, 61, 33}, {162, 221, 207, 95}, {208, 78, 41, 1}, {208, 78, 41, 131}, {208, 78, 41, 163}}},
|
||||
{Region: "Colombia", IPs: []net.IP{{138, 121, 203, 203}, {138, 186, 141, 155}}},
|
||||
{Region: "Croatia", IPs: []net.IP{{85, 10, 56, 252}}},
|
||||
{Region: "Cyprus", IPs: []net.IP{{157, 97, 132, 43}}},
|
||||
{Region: "Czech Republic", IPs: []net.IP{{185, 156, 174, 11}, {185, 246, 210, 2}}},
|
||||
{Region: "Denmark", IPs: []net.IP{{134, 90, 149, 147}, {185, 206, 224, 195}}},
|
||||
{Region: "Estona", IPs: []net.IP{{46, 22, 211, 251}, {196, 196, 216, 131}}},
|
||||
{Region: "Fake Antarctica", IPs: []net.IP{{23, 154, 160, 212}, {23, 154, 160, 222}}},
|
||||
{Region: "Finland", IPs: []net.IP{{185, 112, 82, 227}, {194, 34, 133, 82}}},
|
||||
{Region: "France", IPs: []net.IP{{45, 89, 174, 35}, {82, 102, 18, 35}, {84, 17, 42, 2}, {84, 17, 42, 34}, {185, 156, 173, 187}}},
|
||||
{Region: "Georgia", IPs: []net.IP{{188, 93, 90, 83}}},
|
||||
{Region: "Germany", IPs: []net.IP{{45, 87, 212, 51}, {89, 249, 65, 19}, {185, 130, 184, 195}, {195, 181, 170, 66}, {195, 181, 175, 98}, {217, 138, 194, 115}}},
|
||||
{Region: "Greece", IPs: []net.IP{{78, 108, 38, 155}, {185, 226, 64, 111}, {188, 123, 126, 146}}},
|
||||
{Region: "Hong Kong", IPs: []net.IP{{84, 17, 57, 114}, {103, 10, 197, 99}}},
|
||||
{Region: "Hungary", IPs: []net.IP{{185, 104, 187, 43}}},
|
||||
{Region: "Iceland", IPs: []net.IP{{82, 221, 139, 38}, {185, 165, 170, 2}}},
|
||||
{Region: "India", IPs: []net.IP{{103, 205, 140, 227}, {169, 38, 68, 188}, {169, 38, 72, 12}, {169, 38, 72, 14}}},
|
||||
{Region: "Indonesia", IPs: []net.IP{{45, 127, 134, 91}}},
|
||||
{Region: "Ireland", IPs: []net.IP{{185, 24, 232, 146}, {185, 104, 219, 2}}},
|
||||
{Region: "Israel", IPs: []net.IP{{160, 116, 0, 27}, {185, 191, 205, 139}}},
|
||||
{Region: "Italy", IPs: []net.IP{{37, 120, 135, 83}, {37, 120, 207, 19}, {84, 17, 59, 66}, {87, 101, 94, 195}, {89, 40, 182, 3}}},
|
||||
{Region: "Japan", IPs: []net.IP{{89, 187, 161, 114}, {193, 148, 16, 243}}},
|
||||
{Region: "Latvia", IPs: []net.IP{{85, 254, 72, 23}}},
|
||||
{Region: "Lithuania", IPs: []net.IP{{85, 206, 163, 225}}},
|
||||
{Region: "Macedonia", IPs: []net.IP{{185, 225, 28, 51}}},
|
||||
{Region: "Malaysia", IPs: []net.IP{{103, 106, 250, 31}, {103, 212, 69, 232}}},
|
||||
{Region: "Mexico", IPs: []net.IP{{143, 255, 57, 67}, {190, 103, 179, 211}, {190, 103, 179, 217}, {201, 131, 125, 107}}},
|
||||
{Region: "Moldova", IPs: []net.IP{{178, 175, 144, 123}}},
|
||||
{Region: "Netherlands", IPs: []net.IP{{37, 120, 192, 19}, {46, 166, 143, 98}, {72, 11, 157, 35}, {72, 11, 157, 67}, {84, 17, 46, 2}, {185, 212, 171, 131}, {185, 253, 96, 3}}},
|
||||
{Region: "New Zealand", IPs: []net.IP{{103, 62, 49, 113}, {103, 108, 94, 163}}},
|
||||
{Region: "Norway", IPs: []net.IP{{37, 120, 203, 67}, {185, 206, 225, 131}}},
|
||||
{Region: "Philippines", IPs: []net.IP{{103, 103, 0, 118}}},
|
||||
{Region: "Poland", IPs: []net.IP{{5, 133, 11, 116}, {84, 17, 55, 98}, {185, 244, 214, 35}}},
|
||||
{Region: "Portugal", IPs: []net.IP{{94, 46, 13, 215}, {185, 15, 21, 66}}},
|
||||
{Region: "Romania", IPs: []net.IP{{89, 46, 103, 147}, {91, 207, 102, 147}}},
|
||||
{Region: "Russia", IPs: []net.IP{{94, 242, 62, 19}, {94, 242, 62, 67}, {95, 213, 193, 195}, {95, 213, 193, 227}, {185, 22, 175, 132}, {188, 124, 42, 99}, {188, 124, 42, 115}}},
|
||||
{Region: "Serbia", IPs: []net.IP{{141, 98, 103, 19}}},
|
||||
{Region: "Singapore", IPs: []net.IP{{82, 102, 25, 131}, {89, 187, 162, 130}, {103, 62, 48, 224}, {185, 200, 117, 163}}},
|
||||
{Region: "Slovakia", IPs: []net.IP{{185, 245, 85, 3}}},
|
||||
{Region: "Slovenia", IPs: []net.IP{{146, 247, 24, 207}}},
|
||||
{Region: "South Africa", IPs: []net.IP{{129, 232, 167, 211}, {165, 73, 248, 91}, {197, 242, 156, 53}, {197, 242, 157, 235}}},
|
||||
{Region: "South Korea", IPs: []net.IP{{103, 212, 223, 3}, {218, 232, 76, 179}}},
|
||||
{Region: "Spain", IPs: []net.IP{{37, 120, 142, 227}, {89, 238, 178, 43}, {185, 253, 99, 131}, {217, 138, 218, 99}}},
|
||||
{Region: "Sweden", IPs: []net.IP{{31, 13, 191, 67}, {195, 181, 166, 129}}},
|
||||
{Region: "Switzerland", IPs: []net.IP{{31, 7, 57, 242}, {37, 120, 213, 163}, {84, 17, 53, 2}, {89, 187, 165, 98}, {185, 156, 175, 179}}},
|
||||
{Region: "Thailand", IPs: []net.IP{{27, 254, 130, 221}}},
|
||||
{Region: "Tunisia", IPs: []net.IP{{41, 231, 5, 23}}},
|
||||
{Region: "Turkey", IPs: []net.IP{{45, 123, 118, 156}, {45, 123, 119, 11}, {79, 98, 131, 43}, {176, 53, 113, 163}, {185, 125, 33, 227}}},
|
||||
{Region: "Ukraine", IPs: []net.IP{{45, 141, 156, 11}, {45, 141, 156, 50}}},
|
||||
{Region: "United Arab Emirates", IPs: []net.IP{{45, 9, 249, 43}}},
|
||||
{Region: "United kingdom", IPs: []net.IP{{2, 58, 29, 17}, {81, 92, 207, 69}, {84, 17, 50, 130}, {89, 238, 131, 131}, {89, 238, 135, 133}, {89, 238, 150, 229}, {185, 212, 168, 133}, {212, 102, 63, 32}, {212, 102, 63, 62}, {217, 138, 254, 51}}},
|
||||
{Region: "US Central", IPs: []net.IP{{67, 212, 238, 196}, {69, 12, 94, 67}, {104, 129, 18, 3}, {104, 223, 92, 163}, {107, 150, 31, 67}, {107, 150, 31, 131}, {107, 161, 86, 131}, {107, 182, 234, 240}, {161, 129, 70, 195}, {162, 222, 198, 67}, {172, 241, 26, 78}, {172, 241, 131, 129}, {198, 12, 76, 211}, {198, 54, 128, 116}, {198, 55, 125, 195}, {199, 115, 96, 83}, {204, 44, 112, 131}, {206, 217, 139, 19}, {206, 217, 143, 131}}},
|
||||
{Region: "Us East", IPs: []net.IP{{23, 82, 136, 93}, {23, 83, 91, 170}, {23, 105, 170, 139}, {23, 226, 141, 195}, {38, 132, 118, 227}, {67, 21, 32, 145}, {68, 235, 35, 12}, {68, 235, 50, 227}, {86, 106, 87, 83}, {104, 168, 34, 147}, {104, 223, 127, 195}, {107, 150, 29, 131}, {142, 234, 200, 176}, {156, 96, 59, 102}, {162, 222, 195, 67}, {167, 160, 167, 195}, {167, 160, 172, 3}, {173, 44, 36, 67}, {173, 208, 45, 33}, {185, 232, 22, 195}, {198, 12, 64, 35}, {198, 147, 22, 225}, {206, 217, 128, 3}, {206, 217, 129, 227}, {217, 138, 255, 179}}},
|
||||
{Region: "US West", IPs: []net.IP{{23, 83, 130, 166}, {23, 83, 131, 187}, {23, 94, 74, 99}, {37, 120, 147, 163}, {64, 120, 2, 174}, {66, 115, 176, 3}, {82, 102, 30, 67}, {89, 187, 185, 34}, {89, 187, 187, 98}, {104, 129, 3, 67}, {104, 129, 3, 163}, {104, 129, 56, 67}, {104, 129, 56, 131}, {104, 152, 222, 33}, {167, 88, 60, 227}, {167, 88, 60, 243}, {172, 241, 214, 202}, {172, 241, 250, 131}, {172, 255, 125, 141}, {185, 236, 200, 35}, {192, 3, 20, 51}, {198, 12, 116, 195}, {198, 23, 242, 147}, {209, 58, 129, 121}, {216, 45, 53, 131}, {217, 138, 217, 51}, {217, 138, 217, 211}}},
|
||||
{Region: "Vietnam", IPs: []net.IP{{103, 9, 76, 197}, {103, 9, 79, 186}, {103, 9, 79, 219}}},
|
||||
{Region: "Windflix CA", IPs: []net.IP{{104, 218, 60, 111}, {104, 254, 92, 99}}},
|
||||
{Region: "Windflix JP", IPs: []net.IP{{5, 181, 235, 67}}},
|
||||
{Region: "Windflix UK", IPs: []net.IP{{45, 9, 248, 3}, {81, 92, 200, 85}, {89, 47, 62, 83}}},
|
||||
{Region: "Windflix US", IPs: []net.IP{{23, 105, 170, 130}, {23, 105, 170, 151}, {185, 232, 22, 131}, {204, 44, 112, 67}, {217, 138, 206, 211}}},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
package cyberghost
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Configurator contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Configurator interface {
|
||||
GetOpenVPNConnections(group models.CyberghostGroup, region models.CyberghostRegion, protocol models.NetworkProtocol, targetIP net.IP) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, clientKey string, verbosity, uid, gid int, root bool, cipher, auth string) (err error)
|
||||
}
|
||||
|
||||
type configurator struct {
|
||||
fileManager files.FileManager
|
||||
}
|
||||
|
||||
// NewConfigurator returns a new Configurator object
|
||||
func NewConfigurator(fileManager files.FileManager) Configurator {
|
||||
return &configurator{fileManager: fileManager}
|
||||
}
|
||||
@@ -7,24 +7,6 @@ type (
|
||||
DNSProvider string
|
||||
// DNSHost is the DNS host to use for TLS validation
|
||||
DNSHost string
|
||||
// PIAEncryption defines the level of encryption for communication with PIA servers
|
||||
PIAEncryption string
|
||||
// PIARegion is used to define the list of regions available for PIA
|
||||
PIARegion string
|
||||
// MullvadCountry is used as the country for a Mullvad server
|
||||
MullvadCountry string
|
||||
// MullvadCity is used as the city for a Mullvad server
|
||||
MullvadCity string
|
||||
// MullvadProvider is used as the Internet service provider for a Mullvad server
|
||||
MullvadProvider string
|
||||
// WindscribeCity is used as the region for a Windscribe server
|
||||
WindscribeRegion string
|
||||
// SurfsharkRegion is used as the region for a Surfshark server
|
||||
SurfsharkRegion string
|
||||
// CyberghostRegion is the country name for a Cyberghost server
|
||||
CyberghostRegion string
|
||||
// CyberghostGroup is the server group for a Cyberghost server
|
||||
CyberghostGroup string
|
||||
// URL is an HTTP(s) URL address
|
||||
URL string
|
||||
// Filepath is a local filesytem file path
|
||||
@@ -32,7 +14,7 @@ type (
|
||||
// TinyProxyLogLevel is the log level for TinyProxy
|
||||
TinyProxyLogLevel string
|
||||
// VPNProvider is the name of the VPN provider to be used
|
||||
VPNProvider string
|
||||
VPNProvider string // TODO
|
||||
// NetworkProtocol contains the network protocol to be used to communicate with the VPN servers
|
||||
NetworkProtocol string
|
||||
)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type CyberghostServer struct {
|
||||
Region CyberghostRegion
|
||||
Group CyberghostGroup
|
||||
IPs []net.IP
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type MullvadServer struct {
|
||||
IPs []net.IP
|
||||
Country MullvadCountry
|
||||
City MullvadCity
|
||||
Provider MullvadProvider
|
||||
Owned bool
|
||||
DefaultPort uint16
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type PIAServer struct {
|
||||
IPs []net.IP
|
||||
Region PIARegion
|
||||
}
|
||||
100
internal/models/selection.go
Normal file
100
internal/models/selection.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ProviderSettings contains settings specific to a VPN provider
|
||||
type ProviderSettings struct {
|
||||
Name VPNProvider
|
||||
ServerSelection ServerSelection
|
||||
ExtraConfigOptions ExtraConfigOptions
|
||||
PortForwarding PortForwarding
|
||||
}
|
||||
|
||||
type ServerSelection struct {
|
||||
// Common
|
||||
Protocol NetworkProtocol
|
||||
TargetIP net.IP
|
||||
|
||||
// Cyberghost, PIA, Surfshark, Windscribe
|
||||
Region string
|
||||
|
||||
// Cyberghost
|
||||
Group string
|
||||
|
||||
// Mullvad
|
||||
Country string
|
||||
City string
|
||||
ISP string
|
||||
Owned bool
|
||||
|
||||
// Mullvad, Windscribe
|
||||
CustomPort uint16
|
||||
|
||||
// PIA
|
||||
EncryptionPreset string
|
||||
}
|
||||
|
||||
type ExtraConfigOptions struct {
|
||||
ClientKey string // Cyberghost
|
||||
EncryptionPreset string // PIA
|
||||
}
|
||||
|
||||
// PortForwarding contains settings for port forwarding
|
||||
type PortForwarding struct {
|
||||
Enabled bool
|
||||
Filepath Filepath
|
||||
}
|
||||
|
||||
func (p *PortForwarding) String() string {
|
||||
if p.Enabled {
|
||||
return fmt.Sprintf("on, saved in %s", p.Filepath)
|
||||
}
|
||||
return "off"
|
||||
}
|
||||
|
||||
func (p *ProviderSettings) String() string {
|
||||
settingsList := []string{
|
||||
fmt.Sprintf("%s settings:", strings.Title(string(p.Name))),
|
||||
"Network protocol: " + string(p.ServerSelection.Protocol),
|
||||
}
|
||||
switch strings.ToLower(string(p.Name)) {
|
||||
case "private internet access":
|
||||
settingsList = []string{
|
||||
"Region: " + p.ServerSelection.Region,
|
||||
"Encryption preset: " + p.ExtraConfigOptions.EncryptionPreset,
|
||||
"Port forwarding: " + p.PortForwarding.String(),
|
||||
}
|
||||
case "mullvad":
|
||||
settingsList = []string{
|
||||
"Country: " + p.ServerSelection.Country,
|
||||
"City: " + p.ServerSelection.City,
|
||||
"ISP: " + p.ServerSelection.ISP,
|
||||
"Custom port: " + string(p.ServerSelection.CustomPort),
|
||||
}
|
||||
case "windscribe":
|
||||
settingsList = []string{
|
||||
"Region: " + p.ServerSelection.Region,
|
||||
"Custom port: " + string(p.ServerSelection.CustomPort),
|
||||
}
|
||||
case "surfshark":
|
||||
settingsList = []string{
|
||||
"Region: " + p.ServerSelection.Region,
|
||||
}
|
||||
case "cyberghost":
|
||||
settingsList = []string{
|
||||
"ClientKey: [redacted]",
|
||||
"Group: " + p.ServerSelection.Group,
|
||||
"Region: " + p.ServerSelection.Region,
|
||||
}
|
||||
}
|
||||
if p.ServerSelection.TargetIP != nil {
|
||||
settingsList = append(settingsList,
|
||||
"Target IP address: "+string(p.ServerSelection.TargetIP),
|
||||
)
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
33
internal/models/servers.go
Normal file
33
internal/models/servers.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type PIAServer struct {
|
||||
IPs []net.IP
|
||||
Region string
|
||||
}
|
||||
|
||||
type MullvadServer struct {
|
||||
IPs []net.IP
|
||||
Country string
|
||||
City string
|
||||
ISP string
|
||||
Owned bool
|
||||
DefaultPort uint16
|
||||
}
|
||||
|
||||
type WindscribeServer struct {
|
||||
Region string
|
||||
IPs []net.IP
|
||||
}
|
||||
|
||||
type SurfsharkServer struct {
|
||||
Region string
|
||||
IPs []net.IP
|
||||
}
|
||||
|
||||
type CyberghostServer struct {
|
||||
Region string
|
||||
Group string
|
||||
IPs []net.IP
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type SurfsharkServer struct {
|
||||
Region SurfsharkRegion
|
||||
IPs []net.IP
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package models
|
||||
|
||||
import "net"
|
||||
|
||||
type WindscribeServer struct {
|
||||
Region WindscribeRegion
|
||||
IPs []net.IP
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package mullvad
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/golibs/logging"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Configurator contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Configurator interface {
|
||||
GetOpenVPNConnections(country models.MullvadCountry, city models.MullvadCity, provider models.MullvadProvider, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher string) (err error)
|
||||
}
|
||||
|
||||
type configurator struct {
|
||||
fileManager files.FileManager
|
||||
logger logging.Logger
|
||||
}
|
||||
|
||||
// NewConfigurator returns a new Configurator object
|
||||
func NewConfigurator(fileManager files.FileManager, logger logging.Logger) Configurator {
|
||||
return &configurator{
|
||||
fileManager: fileManager,
|
||||
logger: logger.WithPrefix("Mullvad configurator: "),
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,22 @@
|
||||
package params
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
libparams "github.com/qdm12/golibs/params"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// GetCyberghostGroup obtains the server group for the Cyberghost server from the
|
||||
// environment variable CYBERGHOST_GROUP
|
||||
func (p *reader) GetCyberghostGroup() (region models.CyberghostGroup, err error) {
|
||||
func (p *reader) GetCyberghostGroup() (group string, err error) {
|
||||
s, err := p.envParams.GetValueIfInside("CYBERGHOST_GROUP", constants.CyberghostGroupChoices())
|
||||
return models.CyberghostGroup(strings.ToLower(s)), err
|
||||
return s, err
|
||||
}
|
||||
|
||||
// GetCyberghostRegion obtains the country name for the Cyberghost server from the
|
||||
// environment variable REGION
|
||||
func (p *reader) GetCyberghostRegion() (region models.CyberghostRegion, err error) {
|
||||
func (p *reader) GetCyberghostRegion() (region string, err error) {
|
||||
s, err := p.envParams.GetValueIfInside("REGION", constants.CyberghostRegionChoices())
|
||||
return models.CyberghostRegion(strings.ToLower(s)), err
|
||||
return s, err
|
||||
}
|
||||
|
||||
// GetCyberghostClientKey obtains the one line client key to use for openvpn from the
|
||||
|
||||
@@ -1,35 +1,29 @@
|
||||
package params
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
libparams "github.com/qdm12/golibs/params"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// GetMullvadCountry obtains the country for the Mullvad server from the
|
||||
// environment variable COUNTRY
|
||||
func (r *reader) GetMullvadCountry() (country models.MullvadCountry, err error) {
|
||||
func (r *reader) GetMullvadCountry() (country string, err error) {
|
||||
choices := append(constants.MullvadCountryChoices(), "")
|
||||
s, err := r.envParams.GetValueIfInside("COUNTRY", choices)
|
||||
return models.MullvadCountry(strings.ToLower(s)), err
|
||||
return r.envParams.GetValueIfInside("COUNTRY", choices)
|
||||
}
|
||||
|
||||
// GetMullvadCity obtains the city for the Mullvad server from the
|
||||
// environment variable CITY
|
||||
func (r *reader) GetMullvadCity() (country models.MullvadCity, err error) {
|
||||
func (r *reader) GetMullvadCity() (country string, err error) {
|
||||
choices := append(constants.MullvadCityChoices(), "")
|
||||
s, err := r.envParams.GetValueIfInside("CITY", choices)
|
||||
return models.MullvadCity(strings.ToLower(s)), err
|
||||
return r.envParams.GetValueIfInside("CITY", choices)
|
||||
}
|
||||
|
||||
// GetMullvadISP obtains the ISP for the Mullvad server from the
|
||||
// environment variable ISP
|
||||
func (r *reader) GetMullvadISP() (country models.MullvadProvider, err error) {
|
||||
choices := append(constants.MullvadProviderChoices(), "")
|
||||
s, err := r.envParams.GetValueIfInside("ISP", choices)
|
||||
return models.MullvadProvider(strings.ToLower(s)), err
|
||||
func (r *reader) GetMullvadISP() (isp string, err error) {
|
||||
choices := append(constants.MullvadISPChoices(), "")
|
||||
return r.envParams.GetValueIfInside("ISP", choices)
|
||||
}
|
||||
|
||||
// GetMullvadPort obtains the port to reach the Mullvad server on from the
|
||||
|
||||
@@ -3,7 +3,6 @@ package params
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
libparams "github.com/qdm12/golibs/params"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
@@ -70,13 +69,11 @@ func (r *reader) GetTargetIP() (ip net.IP, err error) {
|
||||
// GetOpenVPNCipher obtains a custom cipher to use with OpenVPN
|
||||
// from the environment variable OPENVPN_CIPHER
|
||||
func (r *reader) GetOpenVPNCipher() (cipher string, err error) {
|
||||
cipher, err = r.envParams.GetEnv("OPENVPN_CIPHER")
|
||||
return strings.ToLower(cipher), err
|
||||
return r.envParams.GetEnv("OPENVPN_CIPHER")
|
||||
}
|
||||
|
||||
// GetOpenVPNAuth obtains a custom auth algorithm to use with OpenVPN
|
||||
// from the environment variable OPENVPN_AUTH
|
||||
func (r *reader) GetOpenVPNAuth() (auth string, err error) {
|
||||
auth, err = r.envParams.GetEnv("OPENVPN_AUTH")
|
||||
return strings.ToLower(auth), err
|
||||
return r.envParams.GetEnv("OPENVPN_AUTH")
|
||||
}
|
||||
|
||||
@@ -53,25 +53,25 @@ type Reader interface {
|
||||
// PIA getters
|
||||
GetPortForwarding() (activated bool, err error)
|
||||
GetPortForwardingStatusFilepath() (filepath models.Filepath, err error)
|
||||
GetPIAEncryption() (models.PIAEncryption, error)
|
||||
GetPIARegion() (models.PIARegion, error)
|
||||
GetPIAEncryptionPreset() (preset string, err error)
|
||||
GetPIARegion() (region string, err error)
|
||||
|
||||
// Mullvad getters
|
||||
GetMullvadCountry() (country models.MullvadCountry, err error)
|
||||
GetMullvadCity() (country models.MullvadCity, err error)
|
||||
GetMullvadISP() (country models.MullvadProvider, err error)
|
||||
GetMullvadCountry() (country string, err error)
|
||||
GetMullvadCity() (country string, err error)
|
||||
GetMullvadISP() (country string, err error)
|
||||
GetMullvadPort() (port uint16, err error)
|
||||
|
||||
// Windscribe getters
|
||||
GetWindscribeRegion() (country models.WindscribeRegion, err error)
|
||||
GetWindscribeRegion() (country string, err error)
|
||||
GetWindscribePort(protocol models.NetworkProtocol) (port uint16, err error)
|
||||
|
||||
// Surfshark getters
|
||||
GetSurfsharkRegion() (country models.SurfsharkRegion, err error)
|
||||
GetSurfsharkRegion() (country string, err error)
|
||||
|
||||
// Cyberghost getters
|
||||
GetCyberghostGroup() (region models.CyberghostGroup, err error)
|
||||
GetCyberghostRegion() (region models.CyberghostRegion, err error)
|
||||
GetCyberghostGroup() (group string, err error)
|
||||
GetCyberghostRegion() (region string, err error)
|
||||
GetCyberghostClientKey() (clientKey string, err error)
|
||||
|
||||
// Shadowsocks getters
|
||||
|
||||
@@ -32,29 +32,37 @@ func (r *reader) GetPortForwardingStatusFilepath() (filepath models.Filepath, er
|
||||
return models.Filepath(filepathStr), err
|
||||
}
|
||||
|
||||
// GetPIAEncryption obtains the encryption level for the PIA connection
|
||||
// GetPIAEncryptionPreset obtains the encryption level for the PIA connection
|
||||
// from the environment variable PIA_ENCRYPTION, and using ENCRYPTION for
|
||||
// retro compatibility
|
||||
func (r *reader) GetPIAEncryption() (models.PIAEncryption, error) {
|
||||
func (r *reader) GetPIAEncryptionPreset() (preset string, err error) {
|
||||
// Retro-compatibility
|
||||
s, err := r.envParams.GetValueIfInside("ENCRYPTION", []string{"normal", "strong", ""})
|
||||
s, err := r.envParams.GetValueIfInside("ENCRYPTION", []string{
|
||||
constants.PIAEncryptionPresetNormal,
|
||||
constants.PIAEncryptionPresetStrong,
|
||||
""})
|
||||
if err != nil {
|
||||
return "", err
|
||||
} else if len(s) != 0 {
|
||||
r.logger.Warn("You are using the old environment variable ENCRYPTION, please consider changing it to PIA_ENCRYPTION")
|
||||
return models.PIAEncryption(s), nil
|
||||
return s, nil
|
||||
}
|
||||
s, err = r.envParams.GetValueIfInside("PIA_ENCRYPTION", []string{"normal", "strong"}, libparams.Default("strong"))
|
||||
return models.PIAEncryption(s), err
|
||||
return r.envParams.GetValueIfInside(
|
||||
"PIA_ENCRYPTION",
|
||||
[]string{
|
||||
constants.PIAEncryptionPresetNormal,
|
||||
constants.PIAEncryptionPresetStrong,
|
||||
},
|
||||
libparams.Default(constants.PIAEncryptionPresetStrong))
|
||||
}
|
||||
|
||||
// GetPIARegion obtains the region for the PIA server from the
|
||||
// environment variable REGION
|
||||
func (r *reader) GetPIARegion() (region models.PIARegion, err error) {
|
||||
func (r *reader) GetPIARegion() (region string, err error) {
|
||||
choices := append(constants.PIAGeoChoices(), "")
|
||||
s, err := r.envParams.GetValueIfInside("REGION", choices)
|
||||
if len(s) == 0 { // Suggestion by @rorph https://github.com/rorph
|
||||
s = choices[rand.Int()%len(choices)] //nolint:gosec
|
||||
}
|
||||
return models.PIARegion(s), err
|
||||
return s, err
|
||||
}
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
package params
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// GetSurfsharkRegion obtains the region for the Surfshark server from the
|
||||
// environment variable REGION
|
||||
func (r *reader) GetSurfsharkRegion() (region models.SurfsharkRegion, err error) {
|
||||
func (r *reader) GetSurfsharkRegion() (region string, err error) {
|
||||
s, err := r.envParams.GetValueIfInside("REGION", constants.SurfsharkRegionChoices())
|
||||
return models.SurfsharkRegion(strings.ToLower(s)), err
|
||||
return s, err
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package params
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
libparams "github.com/qdm12/golibs/params"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
@@ -11,9 +10,9 @@ import (
|
||||
|
||||
// GetWindscribeRegion obtains the region for the Windscribe server from the
|
||||
// environment variable REGION
|
||||
func (r *reader) GetWindscribeRegion() (region models.WindscribeRegion, err error) {
|
||||
func (r *reader) GetWindscribeRegion() (region string, err error) {
|
||||
s, err := r.envParams.GetValueIfInside("REGION", constants.WindscribeRegionChoices())
|
||||
return models.WindscribeRegion(strings.ToLower(s)), err
|
||||
return s, err
|
||||
}
|
||||
|
||||
// GetMullvadPort obtains the port to reach the Mullvad server on from the
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
package pia
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetOpenVPNConnections(region models.PIARegion, protocol models.NetworkProtocol, encryption models.PIAEncryption, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||
var IPs []net.IP
|
||||
for _, server := range constants.PIAServers() {
|
||||
if strings.EqualFold(string(server.Region), string(region)) {
|
||||
IPs = server.IPs
|
||||
}
|
||||
}
|
||||
if len(IPs) == 0 {
|
||||
return nil, fmt.Errorf("no IP found for region %q", region)
|
||||
}
|
||||
if targetIP != nil {
|
||||
found := false
|
||||
for i := range IPs {
|
||||
if IPs[i].Equal(targetIP) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||
}
|
||||
IPs = []net.IP{targetIP}
|
||||
}
|
||||
var port uint16
|
||||
switch protocol {
|
||||
case constants.TCP:
|
||||
switch encryption {
|
||||
case constants.PIAEncryptionNormal:
|
||||
port = 502
|
||||
case constants.PIAEncryptionStrong:
|
||||
port = 501
|
||||
}
|
||||
case constants.UDP:
|
||||
switch encryption {
|
||||
case constants.PIAEncryptionNormal:
|
||||
port = 1198
|
||||
case constants.PIAEncryptionStrong:
|
||||
port = 1197
|
||||
}
|
||||
}
|
||||
if port == 0 {
|
||||
return nil, fmt.Errorf("combination of protocol %q and encryption %q does not yield any port number", protocol, encryption)
|
||||
}
|
||||
for _, IP := range IPs {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: protocol})
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (c *configurator) BuildConf(connections []models.OpenVPNConnection, encryption models.PIAEncryption, verbosity, uid, gid int, root bool, cipher, auth string) (err error) {
|
||||
var X509CRL, certificate string
|
||||
if encryption == constants.PIAEncryptionNormal {
|
||||
if len(cipher) == 0 {
|
||||
cipher = "aes-128-cbc"
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "sha1"
|
||||
}
|
||||
X509CRL = constants.PiaX509CRLNormal
|
||||
certificate = constants.PIACertificateNormal
|
||||
} else { // strong encryption
|
||||
if len(cipher) == 0 {
|
||||
cipher = "aes-256-cbc"
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "sha256"
|
||||
}
|
||||
X509CRL = constants.PiaX509CRLStrong
|
||||
certificate = constants.PIACertificateStrong
|
||||
}
|
||||
lines := []string{
|
||||
"client",
|
||||
"dev tun",
|
||||
"nobind",
|
||||
"persist-key",
|
||||
"remote-cert-tls server",
|
||||
|
||||
// PIA specific
|
||||
"ping 300", // Ping every 5 minutes to prevent a timeout error
|
||||
"reneg-sec 0",
|
||||
"compress", // allow PIA server to choose the compression to use
|
||||
|
||||
// Added constant values
|
||||
"auth-nocache",
|
||||
"mute-replay-warnings",
|
||||
"pull-filter ignore \"auth-token\"", // prevent auth failed loops
|
||||
"auth-retry nointeract",
|
||||
"remote-random",
|
||||
"suppress-timestamps",
|
||||
|
||||
// Modified variables
|
||||
fmt.Sprintf("verb %d", verbosity),
|
||||
fmt.Sprintf("auth-user-pass %s", constants.OpenVPNAuthConf),
|
||||
fmt.Sprintf("proto %s", string(connections[0].Protocol)),
|
||||
fmt.Sprintf("cipher %s", cipher),
|
||||
fmt.Sprintf("auth %s", auth),
|
||||
}
|
||||
if strings.HasSuffix(cipher, "-gcm") {
|
||||
lines = append(lines, "ncp-disable")
|
||||
}
|
||||
if !root {
|
||||
lines = append(lines, "user nonrootuser")
|
||||
}
|
||||
for _, connection := range connections {
|
||||
lines = append(lines, fmt.Sprintf("remote %s %d", connection.IP.String(), connection.Port))
|
||||
}
|
||||
lines = append(lines, []string{
|
||||
"<crl-verify>",
|
||||
"-----BEGIN X509 CRL-----",
|
||||
X509CRL,
|
||||
"-----END X509 CRL-----",
|
||||
"</crl-verify>",
|
||||
}...)
|
||||
lines = append(lines, []string{
|
||||
"<ca>",
|
||||
"-----BEGIN CERTIFICATE-----",
|
||||
certificate,
|
||||
"-----END CERTIFICATE-----",
|
||||
"</ca>",
|
||||
"",
|
||||
}...)
|
||||
return c.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package pia
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/crypto/random"
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/golibs/network"
|
||||
"github.com/qdm12/golibs/verification"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/firewall"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Configurator contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Configurator interface {
|
||||
GetOpenVPNConnections(region models.PIARegion, protocol models.NetworkProtocol,
|
||||
encryption models.PIAEncryption, targetIP net.IP) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, encryption models.PIAEncryption, verbosity, uid, gid int, root bool, cipher, auth string) (err error)
|
||||
GetPortForward() (port uint16, err error)
|
||||
WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error)
|
||||
AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error)
|
||||
}
|
||||
|
||||
type configurator struct {
|
||||
client network.Client
|
||||
fileManager files.FileManager
|
||||
firewall firewall.Configurator
|
||||
random random.Random
|
||||
verifyPort func(port string) error
|
||||
lookupIP func(host string) ([]net.IP, error)
|
||||
}
|
||||
|
||||
// NewConfigurator returns a new Configurator object
|
||||
func NewConfigurator(client network.Client, fileManager files.FileManager, firewall firewall.Configurator) Configurator {
|
||||
return &configurator{
|
||||
client: client,
|
||||
fileManager: fileManager,
|
||||
firewall: firewall,
|
||||
random: random.NewRandom(),
|
||||
verifyPort: verification.NewVerifier().VerifyPort,
|
||||
lookupIP: net.LookupIP}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package pia
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetPortForward() (port uint16, err error) {
|
||||
b, err := c.random.GenerateRandomBytes(32)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
clientID := hex.EncodeToString(b)
|
||||
url := fmt.Sprintf("%s/?client_id=%s", constants.PIAPortForwardURL, clientID)
|
||||
content, status, err := c.client.GetContent(url)
|
||||
switch {
|
||||
case err != nil:
|
||||
return 0, err
|
||||
case status != http.StatusOK:
|
||||
return 0, fmt.Errorf("status is %d for %s; does your PIA server support port forwarding?", status, url)
|
||||
case len(content) == 0:
|
||||
return 0, fmt.Errorf("port forwarding is already activated on this connection, has expired, or you are not connected to a PIA region that supports port forwarding")
|
||||
}
|
||||
body := struct {
|
||||
Port uint16 `json:"port"`
|
||||
}{}
|
||||
if err := json.Unmarshal(content, &body); err != nil {
|
||||
return 0, fmt.Errorf("port forwarding response: %w", err)
|
||||
}
|
||||
return body.Port, nil
|
||||
}
|
||||
|
||||
func (c *configurator) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
return c.fileManager.WriteLinesToFile(
|
||||
string(filepath),
|
||||
[]string{fmt.Sprintf("%d", port)},
|
||||
files.Ownership(uid, gid),
|
||||
files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (c *configurator) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
return c.firewall.AllowInputTrafficOnPort(ctx, device, port)
|
||||
}
|
||||
5
internal/provider/constants.go
Normal file
5
internal/provider/constants.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package provider
|
||||
|
||||
const (
|
||||
aes256cbc = "aes-256-cbc"
|
||||
)
|
||||
@@ -1,6 +1,7 @@
|
||||
package cyberghost
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
@@ -10,38 +11,46 @@ import (
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetOpenVPNConnections(group models.CyberghostGroup, region models.CyberghostRegion, protocol models.NetworkProtocol, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||
type cyberghost struct {
|
||||
fileManager files.FileManager
|
||||
}
|
||||
|
||||
func newCyberghost(fileManager files.FileManager) *cyberghost {
|
||||
return &cyberghost{fileManager: fileManager}
|
||||
}
|
||||
|
||||
func (c *cyberghost) GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error) {
|
||||
var IPs []net.IP
|
||||
for _, server := range constants.CyberghostServers() {
|
||||
if strings.EqualFold(string(server.Region), string(region)) && strings.EqualFold(string(server.Group), string(group)) {
|
||||
if strings.EqualFold(server.Region, selection.Region) && strings.EqualFold(server.Group, selection.Group) {
|
||||
IPs = server.IPs
|
||||
}
|
||||
}
|
||||
if len(IPs) == 0 {
|
||||
return nil, fmt.Errorf("no IP found for group %q and region %q", group, region)
|
||||
return nil, fmt.Errorf("no IP found for group %q and region %q", selection.Group, selection.Region)
|
||||
}
|
||||
if targetIP != nil {
|
||||
if selection.TargetIP != nil {
|
||||
found := false
|
||||
for i := range IPs {
|
||||
if IPs[i].Equal(targetIP) {
|
||||
if IPs[i].Equal(selection.TargetIP) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", selection.TargetIP)
|
||||
}
|
||||
IPs = []net.IP{targetIP}
|
||||
IPs = []net.IP{selection.TargetIP}
|
||||
}
|
||||
for _, IP := range IPs {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: 1443, Protocol: protocol})
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: 1443, Protocol: selection.Protocol})
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (c *configurator) BuildConf(connections []models.OpenVPNConnection, clientKey string, verbosity, uid, gid int, root bool, cipher, auth string) (err error) {
|
||||
func (c *cyberghost) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error) {
|
||||
if len(cipher) == 0 {
|
||||
cipher = "AES-256-CBC"
|
||||
cipher = aes256cbc
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "SHA256"
|
||||
@@ -105,10 +114,22 @@ func (c *configurator) BuildConf(connections []models.OpenVPNConnection, clientK
|
||||
lines = append(lines, []string{
|
||||
"<key>",
|
||||
"-----BEGIN PRIVATE KEY-----",
|
||||
clientKey,
|
||||
extras.ClientKey,
|
||||
"-----END PRIVATE KEY-----",
|
||||
"</key>",
|
||||
"",
|
||||
}...)
|
||||
return c.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (c *cyberghost) GetPortForward() (port uint16, err error) {
|
||||
panic("port forwarding is not supported for cyberghost")
|
||||
}
|
||||
|
||||
func (c *cyberghost) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
panic("port forwarding is not supported for cyberghost")
|
||||
}
|
||||
|
||||
func (c *cyberghost) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
panic("port forwarding is not supported for cyberghost")
|
||||
}
|
||||
@@ -1,46 +1,59 @@
|
||||
package mullvad
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/golibs/logging"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetOpenVPNConnections(country models.MullvadCountry, city models.MullvadCity, provider models.MullvadProvider, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||
servers := constants.MullvadServerFilter(country, city, provider)
|
||||
type mullvad struct {
|
||||
fileManager files.FileManager
|
||||
logger logging.Logger
|
||||
}
|
||||
|
||||
func newMullvad(fileManager files.FileManager, logger logging.Logger) *mullvad {
|
||||
return &mullvad{
|
||||
fileManager: fileManager,
|
||||
logger: logger.WithPrefix("Mullvad configurator: "),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *mullvad) GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error) {
|
||||
servers := constants.MullvadServerFilter(selection.Country, selection.City, selection.ISP)
|
||||
if len(servers) == 0 {
|
||||
return nil, fmt.Errorf("no server found for country %q, city %q and ISP %q", country, city, provider)
|
||||
return nil, fmt.Errorf("no server found for country %q, city %q and ISP %q", selection.Country, selection.City, selection.ISP)
|
||||
}
|
||||
for _, server := range servers {
|
||||
port := server.DefaultPort
|
||||
if customPort > 0 {
|
||||
port = customPort
|
||||
if selection.CustomPort > 0 {
|
||||
port = selection.CustomPort
|
||||
}
|
||||
for _, IP := range server.IPs {
|
||||
if targetIP != nil {
|
||||
if targetIP.Equal(IP) {
|
||||
return []models.OpenVPNConnection{{IP: IP, Port: port, Protocol: protocol}}, nil
|
||||
if selection.TargetIP != nil {
|
||||
if selection.TargetIP.Equal(IP) {
|
||||
return []models.OpenVPNConnection{{IP: IP, Port: port, Protocol: selection.Protocol}}, nil
|
||||
}
|
||||
} else {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: protocol})
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: selection.Protocol})
|
||||
}
|
||||
}
|
||||
}
|
||||
if targetIP != nil {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||
if selection.TargetIP != nil {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", selection.TargetIP)
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher string) (err error) {
|
||||
func (m *mullvad) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error) {
|
||||
if len(connections) == 0 {
|
||||
return fmt.Errorf("at least one connection string is expected")
|
||||
}
|
||||
if len(cipher) == 0 {
|
||||
cipher = "AES-256-CBC"
|
||||
cipher = aes256cbc
|
||||
}
|
||||
lines := []string{
|
||||
"client",
|
||||
@@ -86,5 +99,17 @@ func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosi
|
||||
"</ca>",
|
||||
"",
|
||||
}...)
|
||||
return c.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
return m.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (m *mullvad) GetPortForward() (port uint16, err error) {
|
||||
panic("port forwarding is not supported for mullvad")
|
||||
}
|
||||
|
||||
func (m *mullvad) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
panic("port forwarding is not supported for mullvad")
|
||||
}
|
||||
|
||||
func (m *mullvad) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
panic("port forwarding is not supported for mullvad")
|
||||
}
|
||||
199
internal/provider/pia.go
Normal file
199
internal/provider/pia.go
Normal file
@@ -0,0 +1,199 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/golibs/crypto/random"
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/golibs/network"
|
||||
"github.com/qdm12/golibs/verification"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/firewall"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
type pia struct {
|
||||
client network.Client
|
||||
fileManager files.FileManager
|
||||
firewall firewall.Configurator
|
||||
random random.Random
|
||||
verifyPort func(port string) error
|
||||
lookupIP func(host string) ([]net.IP, error)
|
||||
}
|
||||
|
||||
func newPrivateInternetAccess(client network.Client, fileManager files.FileManager, firewall firewall.Configurator) *pia {
|
||||
return &pia{
|
||||
client: client,
|
||||
fileManager: fileManager,
|
||||
firewall: firewall,
|
||||
random: random.NewRandom(),
|
||||
verifyPort: verification.NewVerifier().VerifyPort,
|
||||
lookupIP: net.LookupIP}
|
||||
}
|
||||
|
||||
func (p *pia) GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error) {
|
||||
var IPs []net.IP
|
||||
for _, server := range constants.PIAServers() {
|
||||
if strings.EqualFold(server.Region, selection.Region) {
|
||||
IPs = server.IPs
|
||||
}
|
||||
}
|
||||
if len(IPs) == 0 {
|
||||
return nil, fmt.Errorf("no IP found for region %q", selection.Region)
|
||||
}
|
||||
if selection.TargetIP != nil {
|
||||
found := false
|
||||
for i := range IPs {
|
||||
if IPs[i].Equal(selection.TargetIP) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", selection.TargetIP)
|
||||
}
|
||||
IPs = []net.IP{selection.TargetIP}
|
||||
}
|
||||
var port uint16
|
||||
switch selection.Protocol {
|
||||
case constants.TCP:
|
||||
switch selection.EncryptionPreset {
|
||||
case constants.PIAEncryptionPresetNormal:
|
||||
port = 502
|
||||
case constants.PIAEncryptionPresetStrong:
|
||||
port = 501
|
||||
}
|
||||
case constants.UDP:
|
||||
switch selection.EncryptionPreset {
|
||||
case constants.PIAEncryptionPresetNormal:
|
||||
port = 1198
|
||||
case constants.PIAEncryptionPresetStrong:
|
||||
port = 1197
|
||||
}
|
||||
}
|
||||
if port == 0 {
|
||||
return nil, fmt.Errorf("combination of protocol %q and encryption %q does not yield any port number", selection.Protocol, selection.EncryptionPreset)
|
||||
}
|
||||
for _, IP := range IPs {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: selection.Protocol})
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (p *pia) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error) {
|
||||
var X509CRL, certificate string
|
||||
if extras.EncryptionPreset == constants.PIAEncryptionPresetNormal {
|
||||
if len(cipher) == 0 {
|
||||
cipher = "aes-128-cbc"
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "sha1"
|
||||
}
|
||||
X509CRL = constants.PiaX509CRLNormal
|
||||
certificate = constants.PIACertificateNormal
|
||||
} else { // strong encryption
|
||||
if len(cipher) == 0 {
|
||||
cipher = aes256cbc
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "sha256"
|
||||
}
|
||||
X509CRL = constants.PiaX509CRLStrong
|
||||
certificate = constants.PIACertificateStrong
|
||||
}
|
||||
lines := []string{
|
||||
"client",
|
||||
"dev tun",
|
||||
"nobind",
|
||||
"persist-key",
|
||||
"remote-cert-tls server",
|
||||
|
||||
// PIA specific
|
||||
"ping 300", // Ping every 5 minutes to prevent a timeout error
|
||||
"reneg-sec 0",
|
||||
"compress", // allow PIA server to choose the compression to use
|
||||
|
||||
// Added constant values
|
||||
"auth-nocache",
|
||||
"mute-replay-warnings",
|
||||
"pull-filter ignore \"auth-token\"", // prevent auth failed loops
|
||||
"auth-retry nointeract",
|
||||
"remote-random",
|
||||
"suppress-timestamps",
|
||||
|
||||
// Modified variables
|
||||
fmt.Sprintf("verb %d", verbosity),
|
||||
fmt.Sprintf("auth-user-pass %s", constants.OpenVPNAuthConf),
|
||||
fmt.Sprintf("proto %s", string(connections[0].Protocol)),
|
||||
fmt.Sprintf("cipher %s", cipher),
|
||||
fmt.Sprintf("auth %s", auth),
|
||||
}
|
||||
if strings.HasSuffix(cipher, "-gcm") {
|
||||
lines = append(lines, "ncp-disable")
|
||||
}
|
||||
if !root {
|
||||
lines = append(lines, "user nonrootuser")
|
||||
}
|
||||
for _, connection := range connections {
|
||||
lines = append(lines, fmt.Sprintf("remote %s %d", connection.IP.String(), connection.Port))
|
||||
}
|
||||
lines = append(lines, []string{
|
||||
"<crl-verify>",
|
||||
"-----BEGIN X509 CRL-----",
|
||||
X509CRL,
|
||||
"-----END X509 CRL-----",
|
||||
"</crl-verify>",
|
||||
}...)
|
||||
lines = append(lines, []string{
|
||||
"<ca>",
|
||||
"-----BEGIN CERTIFICATE-----",
|
||||
certificate,
|
||||
"-----END CERTIFICATE-----",
|
||||
"</ca>",
|
||||
"",
|
||||
}...)
|
||||
return p.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (p *pia) GetPortForward() (port uint16, err error) {
|
||||
b, err := p.random.GenerateRandomBytes(32)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
clientID := hex.EncodeToString(b)
|
||||
url := fmt.Sprintf("%s/?client_id=%s", constants.PIAPortForwardURL, clientID)
|
||||
content, status, err := p.client.GetContent(url)
|
||||
switch {
|
||||
case err != nil:
|
||||
return 0, err
|
||||
case status != http.StatusOK:
|
||||
return 0, fmt.Errorf("status is %d for %s; does your PIA server support port forwarding?", status, url)
|
||||
case len(content) == 0:
|
||||
return 0, fmt.Errorf("port forwarding is already activated on this connection, has expired, or you are not connected to a PIA region that supports port forwarding")
|
||||
}
|
||||
body := struct {
|
||||
Port uint16 `json:"port"`
|
||||
}{}
|
||||
if err := json.Unmarshal(content, &body); err != nil {
|
||||
return 0, fmt.Errorf("port forwarding response: %w", err)
|
||||
}
|
||||
return body.Port, nil
|
||||
}
|
||||
|
||||
func (p *pia) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
return p.fileManager.WriteLinesToFile(
|
||||
string(filepath),
|
||||
[]string{fmt.Sprintf("%d", port)},
|
||||
files.Ownership(uid, gid),
|
||||
files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (p *pia) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
return p.firewall.AllowInputTrafficOnPort(ctx, device, port)
|
||||
}
|
||||
38
internal/provider/provider.go
Normal file
38
internal/provider/provider.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/golibs/logging"
|
||||
"github.com/qdm12/golibs/network"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/firewall"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Provider contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Provider interface {
|
||||
GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error)
|
||||
GetPortForward() (port uint16, err error)
|
||||
WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error)
|
||||
AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error)
|
||||
}
|
||||
|
||||
func New(provider models.VPNProvider, logger logging.Logger, client network.Client, fileManager files.FileManager, firewall firewall.Configurator) Provider {
|
||||
switch provider {
|
||||
case constants.PrivateInternetAccess:
|
||||
return newPrivateInternetAccess(client, fileManager, firewall)
|
||||
case constants.Mullvad:
|
||||
return newMullvad(fileManager, logger)
|
||||
case constants.Windscribe:
|
||||
return newWindscribe(fileManager)
|
||||
case constants.Surfshark:
|
||||
return newSurfshark(fileManager)
|
||||
case constants.Cyberghost:
|
||||
return newCyberghost(fileManager)
|
||||
default:
|
||||
return nil // should never occur
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package surfshark
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
@@ -10,47 +11,56 @@ import (
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetOpenVPNConnections(region models.SurfsharkRegion, protocol models.NetworkProtocol, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||
type surfshark struct {
|
||||
fileManager files.FileManager
|
||||
lookupIP func(host string) ([]net.IP, error)
|
||||
}
|
||||
|
||||
func newSurfshark(fileManager files.FileManager) *surfshark {
|
||||
return &surfshark{fileManager, net.LookupIP}
|
||||
}
|
||||
|
||||
func (s *surfshark) GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error) {
|
||||
var IPs []net.IP
|
||||
for _, server := range constants.SurfsharkServers() {
|
||||
if strings.EqualFold(string(server.Region), string(region)) {
|
||||
if strings.EqualFold(server.Region, selection.Region) {
|
||||
IPs = server.IPs
|
||||
}
|
||||
}
|
||||
if len(IPs) == 0 {
|
||||
return nil, fmt.Errorf("no IP found for region %q", region)
|
||||
return nil, fmt.Errorf("no IP found for region %q", selection.Region)
|
||||
}
|
||||
if targetIP != nil {
|
||||
if selection.TargetIP != nil {
|
||||
found := false
|
||||
for i := range IPs {
|
||||
if IPs[i].Equal(targetIP) {
|
||||
if IPs[i].Equal(selection.TargetIP) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", selection.TargetIP)
|
||||
}
|
||||
IPs = []net.IP{targetIP}
|
||||
IPs = []net.IP{selection.TargetIP}
|
||||
}
|
||||
var port uint16
|
||||
switch {
|
||||
case protocol == constants.TCP:
|
||||
case selection.Protocol == constants.TCP:
|
||||
port = 1443
|
||||
case protocol == constants.UDP:
|
||||
case selection.Protocol == constants.UDP:
|
||||
port = 1194
|
||||
default:
|
||||
return nil, fmt.Errorf("protocol %q is unknown", protocol)
|
||||
return nil, fmt.Errorf("protocol %q is unknown", selection.Protocol)
|
||||
}
|
||||
for _, IP := range IPs {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: protocol})
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: selection.Protocol})
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string) (err error) {
|
||||
func (s *surfshark) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error) {
|
||||
if len(cipher) == 0 {
|
||||
cipher = "AES-256-CBC"
|
||||
cipher = aes256cbc
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "SHA512"
|
||||
@@ -110,5 +120,17 @@ func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosi
|
||||
"</tls-auth>",
|
||||
"",
|
||||
}...)
|
||||
return c.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
return s.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (s *surfshark) GetPortForward() (port uint16, err error) {
|
||||
panic("port forwarding is not supported for surfshark")
|
||||
}
|
||||
|
||||
func (s *surfshark) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
panic("port forwarding is not supported for surfshark")
|
||||
}
|
||||
|
||||
func (s *surfshark) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
panic("port forwarding is not supported for surfshark")
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package windscribe
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
@@ -10,49 +11,57 @@ import (
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
func (c *configurator) GetOpenVPNConnections(region models.WindscribeRegion, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||
type windscribe struct {
|
||||
fileManager files.FileManager
|
||||
}
|
||||
|
||||
func newWindscribe(fileManager files.FileManager) *windscribe {
|
||||
return &windscribe{fileManager: fileManager}
|
||||
}
|
||||
|
||||
func (w *windscribe) GetOpenVPNConnections(selection models.ServerSelection) (connections []models.OpenVPNConnection, err error) {
|
||||
var IPs []net.IP
|
||||
for _, server := range constants.WindscribeServers() {
|
||||
if strings.EqualFold(string(server.Region), string(region)) {
|
||||
if strings.EqualFold(server.Region, selection.Region) {
|
||||
IPs = server.IPs
|
||||
}
|
||||
}
|
||||
if len(IPs) == 0 {
|
||||
return nil, fmt.Errorf("no IP found for region %q", region)
|
||||
return nil, fmt.Errorf("no IP found for region %q", selection.Region)
|
||||
}
|
||||
if targetIP != nil {
|
||||
if selection.TargetIP != nil {
|
||||
found := false
|
||||
for i := range IPs {
|
||||
if IPs[i].Equal(targetIP) {
|
||||
if IPs[i].Equal(selection.TargetIP) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||
return nil, fmt.Errorf("target IP address %q not found in IP addresses", selection.TargetIP)
|
||||
}
|
||||
IPs = []net.IP{targetIP}
|
||||
IPs = []net.IP{selection.TargetIP}
|
||||
}
|
||||
var port uint16
|
||||
switch {
|
||||
case customPort > 0:
|
||||
port = customPort
|
||||
case protocol == constants.TCP:
|
||||
case selection.CustomPort > 0:
|
||||
port = selection.CustomPort
|
||||
case selection.Protocol == constants.TCP:
|
||||
port = 1194
|
||||
case protocol == constants.UDP:
|
||||
case selection.Protocol == constants.UDP:
|
||||
port = 443
|
||||
default:
|
||||
return nil, fmt.Errorf("protocol %q is unknown", protocol)
|
||||
return nil, fmt.Errorf("protocol %q is unknown", selection.Protocol)
|
||||
}
|
||||
for _, IP := range IPs {
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: protocol})
|
||||
connections = append(connections, models.OpenVPNConnection{IP: IP, Port: port, Protocol: selection.Protocol})
|
||||
}
|
||||
return connections, nil
|
||||
}
|
||||
|
||||
func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string) (err error) {
|
||||
func (w *windscribe) BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string, extras models.ExtraConfigOptions) (err error) {
|
||||
if len(cipher) == 0 {
|
||||
cipher = "AES-256-CBC"
|
||||
cipher = aes256cbc
|
||||
}
|
||||
if len(auth) == 0 {
|
||||
auth = "sha512"
|
||||
@@ -108,5 +117,17 @@ func (c *configurator) BuildConf(connections []models.OpenVPNConnection, verbosi
|
||||
"</tls-auth>",
|
||||
"",
|
||||
}...)
|
||||
return c.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
return w.fileManager.WriteLinesToFile(string(constants.OpenVPNConf), lines, files.Ownership(uid, gid), files.Permissions(0400))
|
||||
}
|
||||
|
||||
func (w *windscribe) GetPortForward() (port uint16, err error) {
|
||||
panic("port forwarding is not supported for windscribe")
|
||||
}
|
||||
|
||||
func (w *windscribe) WritePortForward(filepath models.Filepath, port uint16, uid, gid int) (err error) {
|
||||
panic("port forwarding is not supported for windscribe")
|
||||
}
|
||||
|
||||
func (w *windscribe) AllowPortForwardFirewall(ctx context.Context, device models.VPNDevice, port uint16) (err error) {
|
||||
panic("port forwarding is not supported for windscribe")
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// Windscribe contains the settings to connect to a Windscribe server
|
||||
type Cyberghost struct {
|
||||
User string
|
||||
Password string
|
||||
ClientKey string
|
||||
Group models.CyberghostGroup
|
||||
Region models.CyberghostRegion
|
||||
}
|
||||
|
||||
func (c *Cyberghost) String() string {
|
||||
settingsList := []string{
|
||||
"Cyberghost settings:",
|
||||
"User: [redacted]",
|
||||
"Password: [redacted]",
|
||||
"ClientKey: [redacted]",
|
||||
"Group: " + string(c.Group),
|
||||
"Region: " + string(c.Region),
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetCyberghostSettings obtains Cyberghost settings from environment variables using the params package.
|
||||
func GetCyberghostSettings(paramsReader params.Reader) (settings Cyberghost, err error) {
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ClientKey, err = paramsReader.GetCyberghostClientKey()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Group, err = paramsReader.GetCyberghostGroup()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Region, err = paramsReader.GetCyberghostRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// Mullvad contains the settings to connect to a Mullvad server
|
||||
type Mullvad struct {
|
||||
User string
|
||||
Country models.MullvadCountry
|
||||
City models.MullvadCity
|
||||
ISP models.MullvadProvider
|
||||
Port uint16
|
||||
}
|
||||
|
||||
func (m *Mullvad) String() string {
|
||||
settingsList := []string{
|
||||
"Mullvad settings:",
|
||||
"User: [redacted]",
|
||||
"Country: " + string(m.Country),
|
||||
"City: " + string(m.City),
|
||||
"ISP: " + string(m.ISP),
|
||||
"Port: " + string(m.Port),
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetMullvadSettings obtains Mullvad settings from environment variables using the params package.
|
||||
func GetMullvadSettings(paramsReader params.Reader) (settings Mullvad, err error) {
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
// Remove spaces in user ID to simplify user's life, thanks @JeordyR
|
||||
settings.User = strings.ReplaceAll(settings.User, " ", "")
|
||||
settings.Country, err = paramsReader.GetMullvadCountry()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.City, err = paramsReader.GetMullvadCity()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ISP, err = paramsReader.GetMullvadISP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Port, err = paramsReader.GetMullvadPort()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -2,26 +2,30 @@ package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// OpenVPN contains settings to configure the OpenVPN client
|
||||
type OpenVPN struct {
|
||||
NetworkProtocol models.NetworkProtocol
|
||||
User string
|
||||
Password string
|
||||
Verbosity int
|
||||
Root bool
|
||||
TargetIP net.IP
|
||||
Cipher string
|
||||
Auth string
|
||||
}
|
||||
|
||||
// GetOpenVPNSettings obtains the OpenVPN settings using the params functions
|
||||
func GetOpenVPNSettings(paramsReader params.Reader) (settings OpenVPN, err error) {
|
||||
settings.NetworkProtocol, err = paramsReader.GetNetworkProtocol()
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
// Remove spaces in user ID to simplify user's life, thanks @JeordyR
|
||||
settings.User = strings.ReplaceAll(settings.User, " ", "")
|
||||
settings.Password, err = paramsReader.GetPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
@@ -33,10 +37,6 @@ func GetOpenVPNSettings(paramsReader params.Reader) (settings OpenVPN, err error
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Cipher, err = paramsReader.GetOpenVPNCipher()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
@@ -55,12 +55,16 @@ func (o *OpenVPN) String() string {
|
||||
}
|
||||
settingsList := []string{
|
||||
"OpenVPN settings:",
|
||||
"Network protocol: " + string(o.NetworkProtocol),
|
||||
"User: [redacted]",
|
||||
"Password: [redacted]",
|
||||
"Verbosity level: " + fmt.Sprintf("%d", o.Verbosity),
|
||||
"Run as root: " + runAsRoot,
|
||||
"Target IP address: " + o.TargetIP.String(),
|
||||
"Custom cipher: " + o.Cipher,
|
||||
"Custom auth algorithm: " + o.Auth,
|
||||
}
|
||||
if len(o.Cipher) > 0 {
|
||||
settingsList = append(settingsList, "Custom cipher: "+o.Cipher)
|
||||
}
|
||||
if len(o.Auth) > 0 {
|
||||
settingsList = append(settingsList, "Custom auth algorithm: "+o.Auth)
|
||||
}
|
||||
return strings.Join(settingsList, "\n|--")
|
||||
}
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// PIA contains the settings to connect to a PIA server
|
||||
type PIA struct {
|
||||
User string
|
||||
Password string
|
||||
Encryption models.PIAEncryption
|
||||
Region models.PIARegion
|
||||
PortForwarding PortForwarding
|
||||
}
|
||||
|
||||
// PortForwarding contains settings for port forwarding
|
||||
type PortForwarding struct {
|
||||
Enabled bool
|
||||
Filepath models.Filepath
|
||||
}
|
||||
|
||||
func (p *PortForwarding) String() string {
|
||||
if p.Enabled {
|
||||
return fmt.Sprintf("on, saved in %s", p.Filepath)
|
||||
}
|
||||
return "off"
|
||||
}
|
||||
|
||||
func (p *PIA) String() string {
|
||||
settingsList := []string{
|
||||
"PIA settings:",
|
||||
"User: [redacted]",
|
||||
"Password: [redacted]",
|
||||
"Region: " + string(p.Region),
|
||||
"Encryption: " + string(p.Encryption),
|
||||
"Port forwarding: " + p.PortForwarding.String(),
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetPIASettings obtains PIA settings from environment variables using the params package.
|
||||
func GetPIASettings(paramsReader params.Reader) (settings PIA, err error) {
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Encryption, err = paramsReader.GetPIAEncryption()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Region, err = paramsReader.GetPIARegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.PortForwarding.Enabled, err = paramsReader.GetPortForwarding()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
if settings.PortForwarding.Enabled {
|
||||
settings.PortForwarding.Filepath, err = paramsReader.GetPortForwardingStatusFilepath()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
137
internal/settings/providers.go
Normal file
137
internal/settings/providers.go
Normal file
@@ -0,0 +1,137 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// GetPIASettings obtains PIA settings from environment variables using the params package.
|
||||
func GetPIASettings(paramsReader params.Reader) (settings models.ProviderSettings, err error) {
|
||||
settings.Name = constants.PrivateInternetAccess
|
||||
settings.ServerSelection.Protocol, err = paramsReader.GetNetworkProtocol()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
encryptionPreset, err := paramsReader.GetPIAEncryptionPreset()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.EncryptionPreset = encryptionPreset
|
||||
settings.ExtraConfigOptions.EncryptionPreset = encryptionPreset
|
||||
settings.ServerSelection.Region, err = paramsReader.GetPIARegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.PortForwarding.Enabled, err = paramsReader.GetPortForwarding()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
if settings.PortForwarding.Enabled {
|
||||
settings.PortForwarding.Filepath, err = paramsReader.GetPortForwardingStatusFilepath()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
// GetMullvadSettings obtains Mullvad settings from environment variables using the params package.
|
||||
func GetMullvadSettings(paramsReader params.Reader) (settings models.ProviderSettings, err error) {
|
||||
settings.Name = constants.Mullvad
|
||||
settings.ServerSelection.Protocol, err = paramsReader.GetNetworkProtocol()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.Country, err = paramsReader.GetMullvadCountry()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.City, err = paramsReader.GetMullvadCity()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.ISP, err = paramsReader.GetMullvadISP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.CustomPort, err = paramsReader.GetMullvadPort()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
// GetWindscribeSettings obtains Windscribe settings from environment variables using the params package.
|
||||
func GetWindscribeSettings(paramsReader params.Reader) (settings models.ProviderSettings, err error) {
|
||||
settings.Name = constants.Windscribe
|
||||
settings.ServerSelection.Protocol, err = paramsReader.GetNetworkProtocol()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.Region, err = paramsReader.GetWindscribeRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.CustomPort, err = paramsReader.GetWindscribePort(settings.ServerSelection.Protocol)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
// GetSurfsharkSettings obtains Surfshark settings from environment variables using the params package.
|
||||
func GetSurfsharkSettings(paramsReader params.Reader) (settings models.ProviderSettings, err error) {
|
||||
settings.Name = constants.Surfshark
|
||||
settings.ServerSelection.Protocol, err = paramsReader.GetNetworkProtocol()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.Region, err = paramsReader.GetSurfsharkRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
|
||||
// GetCyberghostSettings obtains Cyberghost settings from environment variables using the params package.
|
||||
func GetCyberghostSettings(paramsReader params.Reader) (settings models.ProviderSettings, err error) {
|
||||
settings.Name = constants.Cyberghost
|
||||
settings.ServerSelection.Protocol, err = paramsReader.GetNetworkProtocol()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.TargetIP, err = paramsReader.GetTargetIP()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ExtraConfigOptions.ClientKey, err = paramsReader.GetCyberghostClientKey()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.Group, err = paramsReader.GetCyberghostGroup()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.ServerSelection.Region, err = paramsReader.GetCyberghostRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -13,11 +13,7 @@ import (
|
||||
type Settings struct {
|
||||
VPNSP models.VPNProvider
|
||||
OpenVPN OpenVPN
|
||||
PIA PIA
|
||||
Mullvad Mullvad
|
||||
Windscribe Windscribe
|
||||
Surfshark Surfshark
|
||||
Cyberghost Cyberghost
|
||||
Provider models.ProviderSettings
|
||||
System System
|
||||
DNS DNS
|
||||
Firewall Firewall
|
||||
@@ -26,23 +22,10 @@ type Settings struct {
|
||||
}
|
||||
|
||||
func (s *Settings) String() string {
|
||||
var vpnServiceProviderSettings string
|
||||
switch s.VPNSP {
|
||||
case constants.PrivateInternetAccess:
|
||||
vpnServiceProviderSettings = s.PIA.String()
|
||||
case constants.Mullvad:
|
||||
vpnServiceProviderSettings = s.Mullvad.String()
|
||||
case constants.Windscribe:
|
||||
vpnServiceProviderSettings = s.Windscribe.String()
|
||||
case constants.Surfshark:
|
||||
vpnServiceProviderSettings = s.Surfshark.String()
|
||||
case constants.Cyberghost:
|
||||
vpnServiceProviderSettings = s.Cyberghost.String()
|
||||
}
|
||||
return strings.Join([]string{
|
||||
"Settings summary below:",
|
||||
s.OpenVPN.String(),
|
||||
vpnServiceProviderSettings,
|
||||
s.Provider.String(),
|
||||
s.System.String(),
|
||||
s.DNS.String(),
|
||||
s.Firewall.String(),
|
||||
@@ -59,27 +42,30 @@ func GetAllSettings(paramsReader params.Reader) (settings Settings, err error) {
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.OpenVPN, err = GetOpenVPNSettings(paramsReader)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
switch settings.VPNSP {
|
||||
case constants.PrivateInternetAccess:
|
||||
settings.PIA, err = GetPIASettings(paramsReader)
|
||||
settings.Provider, err = GetPIASettings(paramsReader)
|
||||
case constants.Mullvad:
|
||||
settings.Mullvad, err = GetMullvadSettings(paramsReader)
|
||||
settings.Provider, err = GetMullvadSettings(paramsReader)
|
||||
case constants.Windscribe:
|
||||
settings.Windscribe, err = GetWindscribeSettings(paramsReader, settings.OpenVPN.NetworkProtocol)
|
||||
settings.Provider, err = GetWindscribeSettings(paramsReader)
|
||||
case constants.Surfshark:
|
||||
settings.Surfshark, err = GetSurfsharkSettings(paramsReader)
|
||||
settings.Provider, err = GetSurfsharkSettings(paramsReader)
|
||||
case constants.Cyberghost:
|
||||
settings.Cyberghost, err = GetCyberghostSettings(paramsReader)
|
||||
settings.Provider, err = GetCyberghostSettings(paramsReader)
|
||||
default:
|
||||
err = fmt.Errorf("VPN service provider %q is not valid", settings.VPNSP)
|
||||
}
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.OpenVPN, err = GetOpenVPNSettings(paramsReader)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
if settings.VPNSP == constants.Mullvad {
|
||||
settings.OpenVPN.Password = "m"
|
||||
}
|
||||
settings.DNS, err = GetDNSSettings(paramsReader)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// Surfshark contains the settings to connect to a Surfshark server
|
||||
type Surfshark struct {
|
||||
User string
|
||||
Password string
|
||||
Region models.SurfsharkRegion
|
||||
}
|
||||
|
||||
func (s *Surfshark) String() string {
|
||||
settingsList := []string{
|
||||
"Surfshark settings:",
|
||||
"User: [redacted]",
|
||||
"Password: [redacted]",
|
||||
"Region: " + strings.Title(string(s.Region)),
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetSurfsharkSettings obtains Surfshark settings from environment variables using the params package.
|
||||
func GetSurfsharkSettings(paramsReader params.Reader) (settings Surfshark, err error) {
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Region, err = paramsReader.GetSurfsharkRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/params"
|
||||
)
|
||||
|
||||
// Windscribe contains the settings to connect to a Windscribe server
|
||||
type Windscribe struct {
|
||||
User string
|
||||
Password string
|
||||
Region models.WindscribeRegion
|
||||
Port uint16
|
||||
}
|
||||
|
||||
func (w *Windscribe) String() string {
|
||||
settingsList := []string{
|
||||
"Windscribe settings:",
|
||||
"User: [redacted]",
|
||||
"Password: [redacted]",
|
||||
"Region: " + string(w.Region),
|
||||
"Custom port: " + fmt.Sprintf("%d", w.Port),
|
||||
}
|
||||
return strings.Join(settingsList, "\n |--")
|
||||
}
|
||||
|
||||
// GetWindscribeSettings obtains Windscribe settings from environment variables using the params package.
|
||||
func GetWindscribeSettings(paramsReader params.Reader, protocol models.NetworkProtocol) (settings Windscribe, err error) {
|
||||
settings.User, err = paramsReader.GetUser()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Password, err = paramsReader.GetPassword()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Region, err = paramsReader.GetWindscribeRegion()
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
settings.Port, err = paramsReader.GetWindscribePort(protocol)
|
||||
if err != nil {
|
||||
return settings, err
|
||||
}
|
||||
return settings, nil
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package surfshark
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Configurator contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Configurator interface {
|
||||
GetOpenVPNConnections(region models.SurfsharkRegion, protocol models.NetworkProtocol, targetIP net.IP) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string) (err error)
|
||||
}
|
||||
|
||||
type configurator struct {
|
||||
fileManager files.FileManager
|
||||
lookupIP func(host string) ([]net.IP, error)
|
||||
}
|
||||
|
||||
// NewConfigurator returns a new Configurator object
|
||||
func NewConfigurator(fileManager files.FileManager) Configurator {
|
||||
return &configurator{fileManager, net.LookupIP}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package windscribe
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/files"
|
||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||
)
|
||||
|
||||
// Configurator contains methods to read and modify the openvpn configuration to connect as a client
|
||||
type Configurator interface {
|
||||
GetOpenVPNConnections(region models.WindscribeRegion, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error)
|
||||
BuildConf(connections []models.OpenVPNConnection, verbosity, uid, gid int, root bool, cipher, auth string) (err error)
|
||||
}
|
||||
|
||||
type configurator struct {
|
||||
fileManager files.FileManager
|
||||
}
|
||||
|
||||
// NewConfigurator returns a new Configurator object
|
||||
func NewConfigurator(fileManager files.FileManager) Configurator {
|
||||
return &configurator{fileManager: fileManager}
|
||||
}
|
||||
Reference in New Issue
Block a user