PIA and Windscribe hardcoded IP addresses
- Allows to not need to resolve subdomains at start before tunneling - Allows for Unbound to be configured and started after tunneling - Refers to #127
This commit is contained in:
164
internal/constants/lookup_test.go
Normal file
164
internal/constants/lookup_test.go
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
package constants
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_LookupPIAServers(t *testing.T) {
|
||||||
|
t.SkipNow()
|
||||||
|
subdomains := []string{
|
||||||
|
"au-melbourne",
|
||||||
|
"au-perth",
|
||||||
|
"au-sydney",
|
||||||
|
"austria",
|
||||||
|
"belgium",
|
||||||
|
"ca-montreal",
|
||||||
|
"ca-toronto",
|
||||||
|
"ca-vancouver",
|
||||||
|
"czech",
|
||||||
|
"de-berlin",
|
||||||
|
"de-frankfurt",
|
||||||
|
"denmark",
|
||||||
|
"fi",
|
||||||
|
"france",
|
||||||
|
"hk",
|
||||||
|
"hungary",
|
||||||
|
"in",
|
||||||
|
"ireland",
|
||||||
|
"israel",
|
||||||
|
"italy",
|
||||||
|
"japan",
|
||||||
|
"lu",
|
||||||
|
"mexico",
|
||||||
|
"nl",
|
||||||
|
"nz",
|
||||||
|
"no",
|
||||||
|
"poland",
|
||||||
|
"ro",
|
||||||
|
"sg",
|
||||||
|
"spain",
|
||||||
|
"sweden",
|
||||||
|
"swiss",
|
||||||
|
"ae",
|
||||||
|
"uk-london",
|
||||||
|
"uk-manchester",
|
||||||
|
"uk-southampton",
|
||||||
|
"us-atlanta",
|
||||||
|
"us-california",
|
||||||
|
"us-chicago",
|
||||||
|
"us-denver",
|
||||||
|
"us-east",
|
||||||
|
"us-florida",
|
||||||
|
"us-houston",
|
||||||
|
"us-lasvegas",
|
||||||
|
"us-newyorkcity",
|
||||||
|
"us-seattle",
|
||||||
|
"us-siliconvalley",
|
||||||
|
"us-texas",
|
||||||
|
"us-washingtondc",
|
||||||
|
"us-west",
|
||||||
|
}
|
||||||
|
for _, subdomain := range subdomains {
|
||||||
|
ips, err := net.LookupIP(subdomain + ".privateinternetaccess.com")
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
s := make([]string, len(ips))
|
||||||
|
for i := range ips {
|
||||||
|
s[i] = fmt.Sprintf("{%s}", strings.ReplaceAll(ips[i].String(), ".", ", "))
|
||||||
|
}
|
||||||
|
t.Logf("%s: %s", subdomain, strings.Join(s, ", "))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_LookupWindscribeServers(t *testing.T) {
|
||||||
|
t.SkipNow()
|
||||||
|
subdomains := []string{
|
||||||
|
"al",
|
||||||
|
"ar",
|
||||||
|
"ar",
|
||||||
|
"au",
|
||||||
|
"at",
|
||||||
|
"az",
|
||||||
|
"be",
|
||||||
|
"ba",
|
||||||
|
"br",
|
||||||
|
"bg",
|
||||||
|
"ca",
|
||||||
|
"ca-west",
|
||||||
|
"co",
|
||||||
|
"hr",
|
||||||
|
"cy",
|
||||||
|
"cz",
|
||||||
|
"dk",
|
||||||
|
"ee",
|
||||||
|
"aq",
|
||||||
|
"fi",
|
||||||
|
"fr",
|
||||||
|
"ge",
|
||||||
|
"de",
|
||||||
|
"gr",
|
||||||
|
"hk",
|
||||||
|
"hu",
|
||||||
|
"is",
|
||||||
|
"in",
|
||||||
|
"id",
|
||||||
|
"ie",
|
||||||
|
"il",
|
||||||
|
"it",
|
||||||
|
"jp",
|
||||||
|
"lv",
|
||||||
|
"lt",
|
||||||
|
"mk",
|
||||||
|
"my",
|
||||||
|
"mx",
|
||||||
|
"md",
|
||||||
|
"nl",
|
||||||
|
"nz",
|
||||||
|
"no",
|
||||||
|
"ph",
|
||||||
|
"pl",
|
||||||
|
"pt",
|
||||||
|
"ro",
|
||||||
|
"ru",
|
||||||
|
"rs",
|
||||||
|
"sg",
|
||||||
|
"sk",
|
||||||
|
"si",
|
||||||
|
"za",
|
||||||
|
"kr",
|
||||||
|
"es",
|
||||||
|
"se",
|
||||||
|
"ch",
|
||||||
|
"th",
|
||||||
|
"tn",
|
||||||
|
"tr",
|
||||||
|
"ua",
|
||||||
|
"ae",
|
||||||
|
"uk",
|
||||||
|
"us-central",
|
||||||
|
"us-east",
|
||||||
|
"us-west",
|
||||||
|
"vn",
|
||||||
|
"wf-ca",
|
||||||
|
"wf-jp",
|
||||||
|
"wf-uk",
|
||||||
|
"wf-us",
|
||||||
|
}
|
||||||
|
for _, subdomain := range subdomains {
|
||||||
|
ips, err := net.LookupIP(subdomain + ".windscribe.com")
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
s := make([]string, len(ips))
|
||||||
|
for i := range ips {
|
||||||
|
s[i] = fmt.Sprintf("{%s}", strings.ReplaceAll(ips[i].String(), ".", ", "))
|
||||||
|
}
|
||||||
|
t.Logf("%s: %s", subdomain, strings.Join(s, ", "))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package constants
|
package constants
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
|
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,64 +21,214 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func PIAGeoChoices() (regions []string) {
|
func PIAGeoChoices() (regions []string) {
|
||||||
for region := range PIAGeoToSubdomainMapping() {
|
for _, server := range PIAServers() {
|
||||||
regions = append(regions, string(region))
|
regions = append(regions, string(server.Region))
|
||||||
}
|
}
|
||||||
return regions
|
return regions
|
||||||
}
|
}
|
||||||
|
|
||||||
func PIAGeoToSubdomainMapping() map[models.PIARegion]string {
|
func PIAServers() []models.PIAServer {
|
||||||
return map[models.PIARegion]string{
|
return []models.PIAServer{
|
||||||
models.PIARegion("AU Melbourne"): "au-melbourne",
|
{
|
||||||
models.PIARegion("AU Perth"): "au-perth",
|
Region: models.PIARegion("AU Melbourne"),
|
||||||
models.PIARegion("AU Sydney"): "au-sydney",
|
IPs: []net.IP{{43, 250, 204, 83}, {43, 250, 204, 85}, {43, 250, 204, 89}, {43, 250, 204, 105}, {43, 250, 204, 107}, {43, 250, 204, 111}, {43, 250, 204, 117}, {43, 250, 204, 119}, {43, 250, 204, 123}, {43, 250, 204, 125}, {43, 250, 204, 125}, {43, 250, 204, 85}, {43, 250, 204, 89}, {43, 250, 204, 105}, {43, 250, 204, 107}, {43, 250, 204, 111}, {43, 250, 204, 117}, {43, 250, 204, 119}, {43, 250, 204, 123}, {43, 250, 204, 83}},
|
||||||
models.PIARegion("Austria"): "austria",
|
},
|
||||||
models.PIARegion("Belgium"): "belgium",
|
{
|
||||||
models.PIARegion("CA Montreal"): "ca-montreal",
|
Region: models.PIARegion("AU Perth"),
|
||||||
models.PIARegion("CA Toronto"): "ca-toronto",
|
IPs: []net.IP{{103, 231, 89, 2}, {103, 231, 89, 3}, {103, 231, 89, 11}, {103, 231, 89, 12}, {103, 231, 89, 13}, {103, 231, 89, 11}, {103, 231, 89, 13}, {103, 231, 89, 3}, {103, 231, 89, 12}, {103, 231, 89, 2}},
|
||||||
models.PIARegion("CA Vancouver"): "ca-vancouver",
|
},
|
||||||
models.PIARegion("Czech Republic"): "czech",
|
{
|
||||||
models.PIARegion("DE Berlin"): "de-berlin",
|
Region: models.PIARegion("AU Sydney"),
|
||||||
models.PIARegion("DE Frankfurt"): "de-frankfurt",
|
IPs: []net.IP{{217, 138, 205, 99}, {217, 138, 205, 108}, {217, 138, 205, 109}, {217, 138, 205, 114}, {217, 138, 205, 118}, {217, 138, 205, 120}, {217, 138, 205, 195}, {217, 138, 205, 213}, {217, 138, 205, 206}, {217, 138, 205, 202}, {217, 138, 205, 99}, {217, 138, 205, 108}, {217, 138, 205, 109}, {217, 138, 205, 114}, {217, 138, 205, 118}, {217, 138, 205, 206}, {217, 138, 205, 195}, {217, 138, 205, 213}, {217, 138, 205, 120}, {217, 138, 205, 202}},
|
||||||
models.PIARegion("Denmark"): "denmark",
|
},
|
||||||
models.PIARegion("Finland"): "fi",
|
{
|
||||||
models.PIARegion("France"): "france",
|
Region: models.PIARegion("Austria"),
|
||||||
models.PIARegion("Hong Kong"): "hk",
|
IPs: []net.IP{{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, 236}, {185, 216, 34, 237}, {185, 216, 34, 238}},
|
||||||
models.PIARegion("Hungary"): "hungary",
|
},
|
||||||
models.PIARegion("India"): "in",
|
{
|
||||||
models.PIARegion("Ireland"): "ireland",
|
Region: models.PIARegion("Belgium"),
|
||||||
models.PIARegion("Israel"): "israel",
|
IPs: []net.IP{{77, 243, 191, 19}, {77, 243, 191, 20}, {77, 243, 191, 21}, {77, 243, 191, 22}, {77, 243, 191, 26}, {77, 243, 191, 27}, {185, 104, 186, 26}, {185, 232, 21, 26}, {185, 232, 21, 28}, {185, 232, 21, 29}},
|
||||||
models.PIARegion("Italy"): "italy",
|
},
|
||||||
models.PIARegion("Japan"): "japan",
|
{
|
||||||
models.PIARegion("Luxembourg"): "lu",
|
Region: models.PIARegion("CA Montreal"),
|
||||||
models.PIARegion("Mexico"): "mexico",
|
IPs: []net.IP{{199, 229, 249, 132}, {199, 229, 249, 141}, {199, 229, 249, 143}, {199, 229, 249, 144}, {199, 229, 249, 152}, {199, 229, 249, 158}, {199, 229, 249, 166}, {199, 229, 249, 189}, {199, 229, 249, 190}, {199, 229, 249, 196}},
|
||||||
models.PIARegion("Netherlands"): "nl",
|
},
|
||||||
models.PIARegion("New Zealand"): "nz",
|
{
|
||||||
models.PIARegion("Norway"): "no",
|
Region: models.PIARegion("CA Toronto"),
|
||||||
models.PIARegion("Poland"): "poland",
|
IPs: []net.IP{{162, 219, 176, 130}, {172, 98, 67, 61}, {172, 98, 67, 74}, {172, 98, 67, 89}, {172, 98, 67, 108}, {184, 75, 208, 114}, {184, 75, 210, 18}, {184, 75, 210, 98}, {184, 75, 210, 106}, {184, 75, 215, 66}, {162, 219, 176, 130}, {184, 75, 215, 66}, {172, 98, 67, 74}, {172, 98, 67, 89}, {184, 75, 210, 98}, {184, 75, 208, 114}, {184, 75, 210, 18}, {172, 98, 67, 61}, {184, 75, 210, 106}, {172, 98, 67, 108}},
|
||||||
models.PIARegion("Romania"): "ro",
|
},
|
||||||
models.PIARegion("Singapore"): "sg",
|
{
|
||||||
models.PIARegion("Spain"): "spain",
|
Region: models.PIARegion("CA Vancouver"),
|
||||||
models.PIARegion("Sweden"): "sweden",
|
IPs: []net.IP{{107, 181, 189, 82}, {172, 83, 40, 113}, {172, 83, 40, 114}, {107, 181, 189, 82}, {172, 83, 40, 114}, {172, 83, 40, 113}},
|
||||||
models.PIARegion("Switzerland"): "swiss",
|
},
|
||||||
models.PIARegion("UAE"): "ae",
|
{
|
||||||
models.PIARegion("UK London"): "uk-london",
|
Region: models.PIARegion("Czech Republic"),
|
||||||
models.PIARegion("UK Manchester"): "uk-manchester",
|
IPs: []net.IP{{89, 238, 186, 226}, {89, 238, 186, 227}, {89, 238, 186, 228}, {89, 238, 186, 230}, {185, 216, 35, 66}, {185, 216, 35, 67}, {185, 242, 6, 30}, {185, 216, 35, 70}, {185, 242, 6, 29}, {185, 216, 35, 68}},
|
||||||
models.PIARegion("UK Southampton"): "uk-southampton",
|
},
|
||||||
models.PIARegion("US Atlanta"): "us-atlanta",
|
{
|
||||||
models.PIARegion("US California"): "us-california",
|
Region: models.PIARegion("DE Berlin"),
|
||||||
models.PIARegion("US Chicago"): "us-chicago",
|
IPs: []net.IP{{185, 230, 127, 228}, {185, 230, 127, 229}, {185, 230, 127, 234}, {185, 230, 127, 235}, {193, 176, 86, 123}, {193, 176, 86, 125}, {193, 176, 86, 130}, {193, 176, 86, 142}, {193, 176, 86, 150}, {193, 176, 86, 182}},
|
||||||
models.PIARegion("US Denver"): "us-denver",
|
},
|
||||||
models.PIARegion("US East"): "us-east",
|
{
|
||||||
models.PIARegion("US Florida"): "us-florida",
|
Region: models.PIARegion("DE Frankfurt"),
|
||||||
models.PIARegion("US Houston"): "us-houston",
|
IPs: []net.IP{{185, 220, 70, 131}, {185, 220, 70, 134}, {185, 220, 70, 142}, {185, 220, 70, 144}, {185, 220, 70, 149}, {185, 220, 70, 151}, {185, 220, 70, 152}, {185, 220, 70, 155}, {185, 220, 70, 162}, {185, 220, 70, 167}},
|
||||||
models.PIARegion("US Las Vegas"): "us-lasvegas",
|
},
|
||||||
models.PIARegion("US New York City"): "us-newyorkcity",
|
{
|
||||||
models.PIARegion("US Seattle"): "us-seattle",
|
Region: models.PIARegion("Denmark"),
|
||||||
models.PIARegion("US Silicon Valley"): "us-siliconvalley",
|
IPs: []net.IP{{82, 102, 20, 164}, {82, 102, 20, 167}, {82, 102, 20, 168}, {82, 102, 20, 173}, {82, 102, 20, 175}, {82, 102, 20, 176}, {82, 102, 20, 177}, {82, 102, 20, 178}, {82, 102, 20, 181}, {82, 102, 20, 182}},
|
||||||
models.PIARegion("US Texas"): "us-texas",
|
},
|
||||||
models.PIARegion("US Washington DC"): "us-washingtondc",
|
{
|
||||||
models.PIARegion("US West"): "us-west",
|
Region: models.PIARegion("Finland"),
|
||||||
|
IPs: []net.IP{{196, 244, 191, 2}, {196, 244, 191, 10}, {196, 244, 191, 26}, {196, 244, 191, 50}, {196, 244, 191, 66}, {196, 244, 191, 98}, {196, 244, 191, 106}, {196, 244, 191, 114}, {196, 244, 191, 122}, {196, 244, 191, 146}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("France"),
|
||||||
|
IPs: []net.IP{{194, 99, 106, 150}, {194, 187, 249, 34}, {194, 187, 249, 38}, {194, 187, 249, 44}, {194, 187, 249, 54}, {194, 187, 249, 55}, {194, 187, 249, 180}, {194, 187, 249, 183}, {194, 187, 249, 190}, {194, 187, 249, 184}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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, 29}, {119, 81, 135, 47}, {119, 81, 253, 229}, {119, 81, 253, 230}, {119, 81, 253, 241}, {119, 81, 253, 242}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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}, {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, 18}, {23, 92, 127, 34}, {23, 92, 127, 42}, {23, 92, 127, 58}, {23, 92, 127, 66}, {23, 92, 127, 2}, {23, 92, 127, 18}, {23, 92, 127, 34}, {23, 92, 127, 66}, {23, 92, 127, 58}, {23, 92, 127, 42}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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, 210}, {82, 102, 21, 211}, {82, 102, 21, 212}, {82, 102, 21, 213}, {82, 102, 21, 214}, {82, 102, 21, 215}, {82, 102, 21, 216}, {82, 102, 21, 217}, {82, 102, 21, 218}, {82, 102, 21, 98}, {82, 102, 21, 210}, {82, 102, 21, 211}, {82, 102, 21, 212}, {82, 102, 21, 213}, {82, 102, 21, 214}, {82, 102, 21, 215}, {82, 102, 21, 216}, {82, 102, 21, 217}, {82, 102, 21, 218}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Japan"),
|
||||||
|
IPs: []net.IP{{103, 208, 220, 130}, {103, 208, 220, 143}, {103, 208, 220, 133}, {103, 208, 220, 134}, {103, 208, 220, 136}, {103, 208, 220, 137}, {103, 208, 220, 138}, {103, 208, 220, 140}, {103, 208, 220, 141}, {103, 208, 220, 131}, {103, 208, 220, 130}, {103, 208, 220, 143}, {103, 208, 220, 133}, {103, 208, 220, 134}, {103, 208, 220, 131}, {103, 208, 220, 137}, {103, 208, 220, 136}, {103, 208, 220, 138}, {103, 208, 220, 141}, {103, 208, 220, 140}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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, 211}, {169, 57, 0, 216}, {169, 57, 0, 218}, {169, 57, 0, 219}, {169, 57, 0, 221}, {169, 57, 0, 225}, {169, 57, 0, 229}, {169, 57, 0, 231}, {169, 57, 0, 233}, {169, 57, 0, 249}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Netherlands"),
|
||||||
|
IPs: []net.IP{{46, 166, 137, 218}, {46, 166, 138, 138}, {46, 166, 138, 161}, {46, 166, 138, 172}, {46, 166, 188, 211}, {46, 166, 188, 218}, {46, 166, 190, 178}, {46, 166, 190, 223}, {46, 166, 190, 227}, {46, 166, 190, 230}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("New Zealand"),
|
||||||
|
IPs: []net.IP{{103, 231, 90, 171}, {103, 231, 90, 172}, {103, 231, 90, 173}, {103, 231, 91, 34}, {103, 231, 91, 35}, {103, 231, 91, 66}, {103, 231, 91, 67}, {103, 231, 91, 68}, {103, 231, 91, 69}, {103, 231, 91, 74}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Norway"),
|
||||||
|
IPs: []net.IP{{82, 102, 27, 50}, {82, 102, 27, 55}, {82, 102, 27, 74}, {82, 102, 27, 76}, {82, 102, 27, 77}, {82, 102, 27, 78}, {82, 102, 27, 124}, {82, 102, 27, 125}, {82, 102, 27, 126}, {185, 253, 97, 228}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Poland"),
|
||||||
|
IPs: []net.IP{{185, 244, 214, 14}, {185, 244, 214, 194}, {185, 244, 214, 195}, {185, 244, 214, 197}, {185, 244, 214, 198}, {185, 244, 214, 199}, {185, 244, 214, 200}, {185, 244, 214, 200}, {185, 244, 214, 194}, {185, 244, 214, 198}, {185, 244, 214, 195}, {185, 244, 214, 14}, {185, 244, 214, 199}, {185, 244, 214, 197}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Romania"),
|
||||||
|
IPs: []net.IP{{86, 105, 25, 68}, {86, 105, 25, 69}, {89, 33, 8, 42}, {185, 210, 218, 98}, {185, 210, 218, 99}, {185, 210, 218, 101}, {185, 210, 218, 102}, {185, 210, 218, 104}, {185, 210, 218, 105}, {185, 210, 218, 108}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Singapore"),
|
||||||
|
IPs: []net.IP{{37, 120, 208, 67}, {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, 79}, {37, 120, 208, 80}, {37, 120, 208, 69}, {37, 120, 208, 80}, {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, 79}, {37, 120, 208, 67}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Spain"),
|
||||||
|
IPs: []net.IP{{37, 120, 148, 86}, {194, 99, 104, 30}, {185, 230, 124, 51}, {185, 230, 124, 52}, {185, 230, 124, 53}, {185, 230, 124, 50}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Sweden"),
|
||||||
|
IPs: []net.IP{{45, 12, 220, 175}, {45, 12, 220, 194}, {45, 12, 220, 204}, {45, 12, 220, 206}, {45, 83, 91, 35}, {45, 12, 220, 210}, {45, 12, 220, 228}, {45, 12, 220, 238}, {45, 12, 220, 239}, {45, 12, 220, 207}, {45, 12, 220, 175}, {45, 12, 220, 194}, {45, 12, 220, 204}, {45, 12, 220, 206}, {45, 83, 91, 35}, {45, 12, 220, 210}, {45, 12, 220, 228}, {45, 12, 220, 238}, {45, 12, 220, 239}, {45, 12, 220, 207}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("Switzerland"),
|
||||||
|
IPs: []net.IP{{82, 102, 24, 167}, {185, 156, 175, 85}, {185, 156, 175, 87}, {185, 212, 170, 179}, {185, 212, 170, 180}, {185, 212, 170, 182}, {185, 230, 125, 34}, {185, 230, 125, 42}, {195, 206, 105, 211}, {212, 102, 36, 1}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("UAE"),
|
||||||
|
IPs: []net.IP{{45, 9, 250, 42}, {45, 9, 250, 46}, {45, 9, 250, 62}, {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, 24}, {89, 238, 154, 18}, {89, 238, 154, 119}, {89, 238, 154, 121}, {89, 238, 154, 168}, {89, 238, 154, 178}, {89, 238, 154, 179}, {89, 238, 154, 228}, {89, 238, 154, 244}, {89, 238, 154, 244}, {89, 238, 150, 24}, {89, 238, 154, 18}, {89, 238, 154, 119}, {89, 238, 154, 121}, {89, 238, 154, 168}, {89, 238, 154, 178}, {89, 238, 154, 179}, {89, 238, 154, 228}, {89, 238, 150, 8}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("UK Manchester"),
|
||||||
|
IPs: []net.IP{{89, 238, 137, 38}, {89, 238, 139, 4}, {89, 238, 139, 5}, {89, 238, 139, 8}, {89, 238, 139, 10}, {89, 238, 139, 12}, {89, 238, 139, 13}, {89, 238, 139, 52}, {89, 238, 139, 56}, {89, 238, 139, 58}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("UK Southampton"),
|
||||||
|
IPs: []net.IP{{31, 24, 226, 132}, {31, 24, 226, 138}, {31, 24, 226, 207}, {31, 24, 226, 219}, {31, 24, 226, 220}, {31, 24, 226, 223}, {31, 24, 226, 227}, {31, 24, 226, 241}, {31, 24, 231, 208}, {88, 202, 231, 118}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Atlanta"),
|
||||||
|
IPs: []net.IP{{66, 115, 168, 6}, {66, 115, 168, 14}, {66, 115, 168, 17}, {66, 115, 168, 23}, {66, 115, 168, 25}, {66, 115, 169, 199}, {66, 115, 169, 208}, {66, 115, 169, 217}, {66, 115, 169, 219}, {66, 115, 169, 230}, {66, 115, 168, 6}, {66, 115, 168, 14}, {66, 115, 168, 17}, {66, 115, 169, 230}, {66, 115, 168, 25}, {66, 115, 169, 199}, {66, 115, 169, 208}, {66, 115, 169, 217}, {66, 115, 169, 219}, {66, 115, 168, 23}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US California"),
|
||||||
|
IPs: []net.IP{{91, 207, 175, 37}, {91, 207, 175, 60}, {91, 207, 175, 86}, {91, 207, 175, 109}, {185, 245, 87, 198}, {91, 207, 175, 167}, {91, 207, 175, 176}, {185, 245, 87, 171}, {91, 207, 175, 117}, {185, 245, 87, 195}, {91, 207, 175, 37}, {91, 207, 175, 60}, {91, 207, 175, 86}, {91, 207, 175, 109}, {91, 207, 175, 117}, {91, 207, 175, 167}, {91, 207, 175, 176}, {185, 245, 87, 171}, {185, 245, 87, 195}, {185, 245, 87, 198}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Chicago"),
|
||||||
|
IPs: []net.IP{{199, 116, 115, 130}, {199, 116, 115, 131}, {199, 116, 115, 147}, {199, 116, 115, 134}, {199, 116, 115, 135}, {199, 116, 115, 136}, {199, 116, 115, 138}, {199, 116, 115, 141}, {199, 116, 115, 144}, {199, 116, 115, 133}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Denver"),
|
||||||
|
IPs: []net.IP{{174, 128, 226, 10}, {174, 128, 226, 18}, {174, 128, 243, 106}, {174, 128, 243, 114}, {199, 115, 101, 186}, {198, 148, 88, 250}, {199, 115, 97, 202}, {199, 115, 98, 146}, {199, 115, 99, 218}, {174, 128, 250, 26}, {199, 115, 97, 202}, {174, 128, 226, 18}, {174, 128, 243, 106}, {174, 128, 243, 114}, {198, 148, 88, 250}, {174, 128, 226, 10}, {199, 115, 101, 186}, {199, 115, 98, 146}, {199, 115, 99, 218}, {174, 128, 250, 26}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US East"),
|
||||||
|
IPs: []net.IP{{193, 37, 253, 82}, {193, 37, 253, 113}, {194, 59, 251, 22}, {194, 59, 251, 90}, {194, 59, 251, 109}, {194, 59, 251, 140}, {194, 59, 251, 148}, {194, 59, 251, 155}, {194, 59, 251, 218}, {194, 59, 251, 249}, {194, 59, 251, 101}, {194, 59, 251, 152}, {194, 59, 251, 156}, {194, 59, 251, 187}, {193, 37, 253, 67}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Florida"),
|
||||||
|
IPs: []net.IP{{193, 37, 252, 2}, {193, 37, 252, 3}, {193, 37, 252, 4}, {193, 37, 252, 5}, {193, 37, 252, 6}, {193, 37, 252, 7}, {193, 37, 252, 8}, {193, 37, 252, 9}, {193, 37, 252, 10}, {193, 37, 252, 11}, {193, 37, 252, 12}, {193, 37, 252, 13}, {193, 37, 252, 14}, {193, 37, 252, 15}, {193, 37, 252, 16}, {193, 37, 252, 17}, {193, 37, 252, 18}, {193, 37, 252, 19}, {193, 37, 252, 20}, {193, 37, 252, 21}, {193, 37, 252, 22}, {193, 37, 252, 23}, {193, 37, 252, 24}, {193, 37, 252, 25}, {193, 37, 252, 34}, {193, 37, 252, 35}, {193, 37, 252, 36}, {193, 37, 252, 37}, {193, 37, 252, 38}, {193, 37, 252, 39}, {193, 37, 252, 40}, {193, 37, 252, 41}, {193, 37, 252, 42}, {193, 37, 252, 43}, {193, 37, 252, 44}, {193, 37, 252, 45}, {193, 37, 252, 46}, {193, 37, 252, 47}, {193, 37, 252, 48}, {193, 37, 252, 49}, {193, 37, 252, 50}, {193, 37, 252, 51}, {193, 37, 252, 52}, {193, 37, 252, 53}, {193, 37, 252, 54}, {193, 37, 252, 55}, {193, 37, 252, 56}, {193, 37, 252, 57}, {193, 37, 252, 58}, {193, 37, 252, 59}, {193, 37, 252, 60}, {193, 37, 252, 61}, {193, 37, 252, 62}, {193, 37, 252, 66}, {193, 37, 252, 67}, {193, 37, 252, 174}, {193, 37, 252, 69}, {193, 37, 252, 70}, {193, 37, 252, 74}, {193, 37, 252, 75}, {193, 37, 252, 76}, {193, 37, 252, 77}, {193, 37, 252, 78}, {193, 37, 252, 82}, {193, 37, 252, 86}, {193, 37, 252, 98}, {193, 37, 252, 99}, {193, 37, 252, 100}, {193, 37, 252, 101}, {193, 37, 252, 102}, {193, 37, 252, 103}, {193, 37, 252, 104}, {193, 37, 252, 105}, {193, 37, 252, 106}, {193, 37, 252, 107}, {193, 37, 252, 108}, {193, 37, 252, 109}, {193, 37, 252, 110}, {193, 37, 252, 111}, {193, 37, 252, 112}, {193, 37, 252, 113}, {193, 37, 252, 114}, {193, 37, 252, 115}, {193, 37, 252, 116}, {193, 37, 252, 117}, {193, 37, 252, 118}, {193, 37, 252, 119}, {193, 37, 252, 120}, {193, 37, 252, 121}, {193, 37, 252, 122}, {193, 37, 252, 123}, {193, 37, 252, 124}, {193, 37, 252, 125}, {193, 37, 252, 126}, {193, 37, 252, 170}, {193, 37, 252, 68}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Houston"),
|
||||||
|
IPs: []net.IP{{74, 81, 88, 18}, {74, 81, 88, 26}, {74, 81, 88, 34}, {74, 81, 88, 58}, {74, 81, 88, 74}, {74, 81, 88, 130}, {205, 251, 148, 82}, {205, 251, 148, 186}, {205, 251, 150, 194}, {205, 251, 150, 242}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Las Vegas"),
|
||||||
|
IPs: []net.IP{{162, 251, 236, 3}, {162, 251, 236, 4}, {162, 251, 236, 5}, {162, 251, 236, 7}, {199, 127, 56, 83}, {199, 127, 56, 84}, {199, 127, 56, 86}, {199, 127, 56, 89}, {199, 127, 56, 90}, {199, 127, 56, 116}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US New York City"),
|
||||||
|
IPs: []net.IP{{107, 182, 231, 23}, {107, 182, 231, 37}, {173, 244, 223, 122}, {209, 95, 50, 15}, {209, 95, 50, 47}, {209, 95, 50, 48}, {209, 95, 50, 50}, {209, 95, 50, 53}, {209, 95, 50, 138}, {209, 95, 50, 158}, {209, 95, 50, 158}, {107, 182, 231, 23}, {173, 244, 223, 122}, {209, 95, 50, 47}, {209, 95, 50, 50}, {209, 95, 50, 48}, {209, 95, 50, 53}, {107, 182, 231, 37}, {209, 95, 50, 138}, {209, 95, 50, 15}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Seattle"),
|
||||||
|
IPs: []net.IP{{104, 200, 154, 4}, {104, 200, 154, 7}, {104, 200, 154, 11}, {104, 200, 154, 38}, {104, 200, 154, 55}, {104, 200, 154, 58}, {104, 200, 154, 67}, {104, 200, 154, 74}, {104, 200, 154, 77}, {104, 200, 154, 99}, {104, 200, 154, 74}, {104, 200, 154, 7}, {104, 200, 154, 11}, {104, 200, 154, 4}, {104, 200, 154, 55}, {104, 200, 154, 58}, {104, 200, 154, 38}, {104, 200, 154, 99}, {104, 200, 154, 77}, {104, 200, 154, 67}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Silicon Valley"),
|
||||||
|
IPs: []net.IP{{199, 116, 118, 131}, {199, 116, 118, 141}, {199, 116, 118, 170}, {199, 116, 118, 183}, {199, 116, 118, 221}, {199, 116, 118, 227}, {199, 116, 118, 228}, {199, 116, 118, 229}, {199, 116, 118, 238}, {199, 116, 118, 246}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Texas"),
|
||||||
|
IPs: []net.IP{{162, 216, 46, 15}, {162, 216, 46, 30}, {162, 216, 46, 48}, {162, 216, 46, 55}, {162, 216, 46, 68}, {162, 216, 46, 95}, {162, 216, 46, 116}, {162, 216, 46, 142}, {162, 216, 46, 166}, {162, 216, 46, 174}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US Washington DC"),
|
||||||
|
IPs: []net.IP{{70, 32, 0, 31}, {70, 32, 0, 50}, {70, 32, 0, 53}, {70, 32, 0, 54}, {70, 32, 0, 66}, {70, 32, 0, 101}, {70, 32, 0, 141}, {70, 32, 0, 172}, {70, 32, 0, 173}, {70, 32, 0, 175}, {70, 32, 0, 31}, {70, 32, 0, 50}, {70, 32, 0, 53}, {70, 32, 0, 175}, {70, 32, 0, 66}, {70, 32, 0, 173}, {70, 32, 0, 141}, {70, 32, 0, 172}, {70, 32, 0, 54}, {70, 32, 0, 101}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Region: models.PIARegion("US West"),
|
||||||
|
IPs: []net.IP{{104, 200, 151, 6}, {104, 200, 151, 8}, {104, 200, 151, 12}, {104, 200, 151, 23}, {104, 200, 151, 40}, {104, 200, 151, 44}, {104, 200, 151, 45}, {104, 200, 151, 54}, {104, 200, 151, 74}, {104, 200, 151, 89}},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package constants
|
package constants
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
|
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/models"
|
"github.com/qdm12/private-internet-access-docker/internal/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,12 +12,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func WindscribeRegionChoices() (choices []string) {
|
func WindscribeRegionChoices() (choices []string) {
|
||||||
uniqueChoices := map[string]struct{}{}
|
|
||||||
for _, server := range WindscribeServers() {
|
for _, server := range WindscribeServers() {
|
||||||
uniqueChoices[string(server.Region)] = struct{}{}
|
choices = append(choices, string(server.Region))
|
||||||
}
|
|
||||||
for choice := range uniqueChoices {
|
|
||||||
choices = append(choices, choice)
|
|
||||||
}
|
}
|
||||||
return choices
|
return choices
|
||||||
}
|
}
|
||||||
@@ -24,287 +22,283 @@ func WindscribeServers() []models.WindscribeServer {
|
|||||||
return []models.WindscribeServer{
|
return []models.WindscribeServer{
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("albania"),
|
Region: models.WindscribeRegion("albania"),
|
||||||
Subdomain: "al",
|
IPs: []net.IP{{31, 171, 152, 179}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("argentina"),
|
Region: models.WindscribeRegion("argentina"),
|
||||||
Subdomain: "ar",
|
IPs: []net.IP{{190, 105, 236, 50}, {190, 105, 236, 19}, {167, 250, 6, 121}, {190, 105, 236, 32}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("argentina"),
|
Region: models.WindscribeRegion("argentina"),
|
||||||
Subdomain: "ar",
|
IPs: []net.IP{{190, 105, 236, 50}, {190, 105, 236, 19}, {167, 250, 6, 121}, {190, 105, 236, 32}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("australia"),
|
Region: models.WindscribeRegion("australia"),
|
||||||
Subdomain: "au",
|
IPs: []net.IP{{45, 121, 209, 160}, {116, 206, 228, 67}, {45, 121, 208, 160}, {103, 108, 92, 83}, {43, 245, 160, 35}, {45, 121, 210, 208}, {103, 62, 50, 208}, {116, 206, 229, 131}, {103, 77, 233, 67}, {103, 77, 234, 211}, {116, 90, 72, 243}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("austria"),
|
Region: models.WindscribeRegion("austria"),
|
||||||
Subdomain: "at",
|
IPs: []net.IP{{89, 187, 168, 66}, {217, 64, 127, 11}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("azerbaijan"),
|
Region: models.WindscribeRegion("azerbaijan"),
|
||||||
Subdomain: "az",
|
IPs: []net.IP{{85, 132, 61, 123}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("belgium"),
|
Region: models.WindscribeRegion("belgium"),
|
||||||
Subdomain: "be",
|
IPs: []net.IP{{185, 232, 21, 131}, {194, 187, 251, 147}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("bosnia"),
|
Region: models.WindscribeRegion("bosnia"),
|
||||||
Subdomain: "ba",
|
IPs: []net.IP{{185, 99, 3, 24}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("brazil"),
|
Region: models.WindscribeRegion("brazil"),
|
||||||
Subdomain: "br",
|
IPs: []net.IP{{177, 67, 80, 59}, {189, 1, 172, 12}, {177, 54, 144, 68}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("bulgaria"),
|
Region: models.WindscribeRegion("bulgaria"),
|
||||||
Subdomain: "bg",
|
IPs: []net.IP{{185, 94, 192, 35}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("canada east"),
|
Region: models.WindscribeRegion("canada east"),
|
||||||
Subdomain: "ca",
|
IPs: []net.IP{{104, 254, 92, 91}, {198, 8, 85, 210}, {192, 190, 19, 65}, {144, 168, 163, 193}, {104, 227, 235, 129}, {199, 204, 208, 158}, {192, 190, 19, 97}, {23, 154, 160, 177}, {144, 168, 163, 160}, {198, 8, 85, 195}, {104, 254, 92, 11}, {184, 75, 212, 91}, {66, 70, 148, 80}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("canada west"),
|
Region: models.WindscribeRegion("canada west"),
|
||||||
Subdomain: "ca-west",
|
IPs: []net.IP{{104, 218, 61, 33}, {208, 78, 41, 163}, {162, 221, 207, 95}, {208, 78, 41, 1}, {208, 78, 41, 131}, {104, 218, 61, 1}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("colombia"),
|
Region: models.WindscribeRegion("colombia"),
|
||||||
Subdomain: "co",
|
IPs: []net.IP{{138, 121, 203, 203}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("croatia"),
|
Region: models.WindscribeRegion("croatia"),
|
||||||
Subdomain: "hr",
|
IPs: []net.IP{{85, 10, 56, 252}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("cyprus"),
|
Region: models.WindscribeRegion("cyprus"),
|
||||||
Subdomain: "cy",
|
IPs: []net.IP{{157, 97, 132, 43}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("czech republic"),
|
Region: models.WindscribeRegion("czech republic"),
|
||||||
Subdomain: "cz",
|
IPs: []net.IP{{185, 156, 174, 11}, {185, 246, 210, 2}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("denmark"),
|
Region: models.WindscribeRegion("denmark"),
|
||||||
Subdomain: "dk",
|
IPs: []net.IP{{185, 206, 224, 195}, {134, 90, 149, 147}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("estonia"),
|
Region: models.WindscribeRegion("estonia"),
|
||||||
Subdomain: "ee",
|
IPs: []net.IP{{46, 22, 211, 251}, {196, 196, 216, 131}},
|
||||||
},
|
|
||||||
{
|
|
||||||
Region: models.WindscribeRegion("egypt"),
|
|
||||||
Subdomain: "eg",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("fake antarctica"),
|
Region: models.WindscribeRegion("fake antarctica"),
|
||||||
Subdomain: "aq",
|
IPs: []net.IP{{23, 154, 160, 222}, {23, 154, 160, 212}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("finland"),
|
Region: models.WindscribeRegion("finland"),
|
||||||
Subdomain: "fi",
|
IPs: []net.IP{{185, 112, 82, 227}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("france"),
|
Region: models.WindscribeRegion("france"),
|
||||||
Subdomain: "fr",
|
IPs: []net.IP{{84, 17, 42, 2}, {45, 89, 174, 35}, {185, 156, 173, 187}, {82, 102, 18, 35}, {84, 17, 42, 34}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("georgia"),
|
Region: models.WindscribeRegion("georgia"),
|
||||||
Subdomain: "ge",
|
IPs: []net.IP{{188, 93, 90, 83}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("germany"),
|
Region: models.WindscribeRegion("germany"),
|
||||||
Subdomain: "de",
|
IPs: []net.IP{{45, 87, 212, 51}, {217, 138, 194, 115}, {185, 130, 184, 195}, {89, 249, 65, 19}, {195, 181, 170, 66}, {195, 181, 175, 98}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("greece"),
|
Region: models.WindscribeRegion("greece"),
|
||||||
Subdomain: "gr",
|
IPs: []net.IP{{188, 123, 126, 146}, {185, 226, 64, 111}, {78, 108, 38, 155}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("hong kong"),
|
Region: models.WindscribeRegion("hong kong"),
|
||||||
Subdomain: "hk",
|
IPs: []net.IP{{103, 10, 197, 99}, {84, 17, 57, 114}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("hungary"),
|
Region: models.WindscribeRegion("hungary"),
|
||||||
Subdomain: "hu",
|
IPs: []net.IP{{185, 104, 187, 43}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("iceland"),
|
Region: models.WindscribeRegion("iceland"),
|
||||||
Subdomain: "is",
|
IPs: []net.IP{{185, 165, 170, 2}, {82, 221, 139, 38}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("india"),
|
Region: models.WindscribeRegion("india"),
|
||||||
Subdomain: "in",
|
IPs: []net.IP{{169, 38, 72, 14}, {103, 205, 140, 227}, {169, 38, 72, 12}, {169, 38, 68, 188}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("indonesia"),
|
Region: models.WindscribeRegion("indonesia"),
|
||||||
Subdomain: "id",
|
IPs: []net.IP{{45, 127, 134, 91}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("ireland"),
|
Region: models.WindscribeRegion("ireland"),
|
||||||
Subdomain: "ie",
|
IPs: []net.IP{{185, 24, 232, 146}, {185, 104, 219, 2}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("israel"),
|
Region: models.WindscribeRegion("israel"),
|
||||||
Subdomain: "il",
|
IPs: []net.IP{{160, 116, 0, 27}, {185, 191, 205, 139}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("italy"),
|
Region: models.WindscribeRegion("italy"),
|
||||||
Subdomain: "it",
|
IPs: []net.IP{{37, 120, 135, 83}, {89, 40, 182, 3}, {84, 17, 59, 66}, {87, 101, 94, 195}, {37, 120, 207, 19}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("japan"),
|
Region: models.WindscribeRegion("japan"),
|
||||||
Subdomain: "jp",
|
IPs: []net.IP{{193, 148, 16, 243}, {89, 187, 161, 114}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("latvia"),
|
Region: models.WindscribeRegion("latvia"),
|
||||||
Subdomain: "lv",
|
IPs: []net.IP{{85, 254, 72, 23}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("lithuania"),
|
Region: models.WindscribeRegion("lithuania"),
|
||||||
Subdomain: "lt",
|
IPs: []net.IP{{85, 206, 163, 225}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("macedonia"),
|
Region: models.WindscribeRegion("macedonia"),
|
||||||
Subdomain: "mk",
|
IPs: []net.IP{{185, 225, 28, 51}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("malaysia"),
|
Region: models.WindscribeRegion("malaysia"),
|
||||||
Subdomain: "my",
|
IPs: []net.IP{{103, 212, 69, 232}, {103, 106, 250, 31}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("mexico"),
|
Region: models.WindscribeRegion("mexico"),
|
||||||
Subdomain: "mx",
|
IPs: []net.IP{{143, 255, 57, 67}, {201, 131, 125, 107}, {190, 103, 179, 211}, {190, 103, 179, 217}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("moldova"),
|
Region: models.WindscribeRegion("moldova"),
|
||||||
Subdomain: "md",
|
IPs: []net.IP{{178, 175, 144, 123}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("netherlands"),
|
Region: models.WindscribeRegion("netherlands"),
|
||||||
Subdomain: "nl",
|
IPs: []net.IP{{185, 212, 171, 131}, {72, 11, 157, 35}, {185, 253, 96, 3}, {72, 11, 157, 67}, {37, 120, 192, 19}, {84, 17, 46, 2}, {46, 166, 143, 98}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("new zealand"),
|
Region: models.WindscribeRegion("new zealand"),
|
||||||
Subdomain: "nz",
|
IPs: []net.IP{{103, 62, 49, 113}, {103, 108, 94, 163}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("norway"),
|
Region: models.WindscribeRegion("norway"),
|
||||||
Subdomain: "no",
|
IPs: []net.IP{{37, 120, 203, 67}, {185, 206, 225, 131}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("philippines"),
|
Region: models.WindscribeRegion("philippines"),
|
||||||
Subdomain: "ph",
|
IPs: []net.IP{{103, 103, 0, 118}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("poland"),
|
Region: models.WindscribeRegion("poland"),
|
||||||
Subdomain: "pl",
|
IPs: []net.IP{{185, 244, 214, 35}, {84, 17, 55, 98}, {5, 133, 11, 116}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("portugal"),
|
Region: models.WindscribeRegion("portugal"),
|
||||||
Subdomain: "pt",
|
IPs: []net.IP{{185, 15, 21, 66}, {94, 46, 13, 215}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("romania"),
|
Region: models.WindscribeRegion("romania"),
|
||||||
Subdomain: "ro",
|
IPs: []net.IP{{89, 46, 103, 147}, {91, 207, 102, 147}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("russia"),
|
Region: models.WindscribeRegion("russia"),
|
||||||
Subdomain: "ru",
|
IPs: []net.IP{{95, 213, 193, 227}, {188, 124, 42, 99}, {95, 213, 193, 195}, {94, 242, 62, 19}, {94, 242, 62, 67}, {185, 22, 175, 132}, {188, 124, 42, 115}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("serbia"),
|
Region: models.WindscribeRegion("serbia"),
|
||||||
Subdomain: "rs",
|
IPs: []net.IP{{141, 98, 103, 19}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("singapore"),
|
Region: models.WindscribeRegion("singapore"),
|
||||||
Subdomain: "sg",
|
IPs: []net.IP{{103, 62, 48, 224}, {89, 187, 162, 130}, {185, 200, 117, 163}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("slovakia"),
|
Region: models.WindscribeRegion("slovakia"),
|
||||||
Subdomain: "sk",
|
IPs: []net.IP{{185, 245, 85, 3}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("slovenia"),
|
Region: models.WindscribeRegion("slovenia"),
|
||||||
Subdomain: "si",
|
IPs: []net.IP{{146, 247, 24, 207}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("south africa"),
|
Region: models.WindscribeRegion("south africa"),
|
||||||
Subdomain: "za",
|
IPs: []net.IP{{197, 242, 156, 53}, {165, 73, 248, 91}, {197, 242, 157, 235}, {129, 232, 167, 211}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("south korea"),
|
Region: models.WindscribeRegion("south korea"),
|
||||||
Subdomain: "kr",
|
IPs: []net.IP{{218, 232, 76, 179}, {103, 212, 223, 3}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("spain"),
|
Region: models.WindscribeRegion("spain"),
|
||||||
Subdomain: "es",
|
IPs: []net.IP{{217, 138, 218, 99}, {89, 238, 178, 43}, {185, 253, 99, 131}, {37, 120, 142, 227}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("sweden"),
|
Region: models.WindscribeRegion("sweden"),
|
||||||
Subdomain: "se",
|
IPs: []net.IP{{195, 181, 166, 129}, {79, 142, 76, 198}, {31, 13, 191, 67}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("switzerland"),
|
Region: models.WindscribeRegion("switzerland"),
|
||||||
Subdomain: "ch",
|
IPs: []net.IP{{84, 17, 53, 2}, {37, 120, 213, 163}, {185, 156, 175, 179}, {89, 187, 165, 98}, {31, 7, 57, 242}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("thailand"),
|
Region: models.WindscribeRegion("thailand"),
|
||||||
Subdomain: "th",
|
IPs: []net.IP{{103, 253, 74, 57}, {27, 254, 130, 221}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("tunisia"),
|
Region: models.WindscribeRegion("tunisia"),
|
||||||
Subdomain: "tn",
|
IPs: []net.IP{{41, 231, 5, 23}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("turkey"),
|
Region: models.WindscribeRegion("turkey"),
|
||||||
Subdomain: "tr",
|
IPs: []net.IP{{185, 125, 33, 227}, {45, 123, 118, 156}, {176, 53, 113, 163}, {79, 98, 131, 43}, {45, 123, 119, 11}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("ukraine"),
|
Region: models.WindscribeRegion("ukraine"),
|
||||||
Subdomain: "ua",
|
IPs: []net.IP{{77, 123, 146, 19}, {77, 120, 102, 65}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("united arab emirates"),
|
Region: models.WindscribeRegion("united arab emirates"),
|
||||||
Subdomain: "ae",
|
IPs: []net.IP{{45, 9, 249, 43}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("united kingdom"),
|
Region: models.WindscribeRegion("united kingdom"),
|
||||||
Subdomain: "uk",
|
IPs: []net.IP{{89, 238, 150, 229}, {217, 138, 254, 51}, {212, 102, 63, 62}, {185, 212, 168, 133}, {212, 102, 63, 32}, {2, 58, 29, 145}, {89, 238, 131, 131}, {89, 238, 135, 133}, {84, 17, 50, 130}, {81, 92, 207, 69}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("us central"),
|
Region: models.WindscribeRegion("us central"),
|
||||||
Subdomain: "us-central",
|
IPs: []net.IP{{161, 129, 70, 195}, {198, 55, 125, 195}, {107, 150, 31, 131}, {206, 217, 139, 195}, {204, 44, 112, 131}, {199, 115, 96, 83}, {107, 150, 31, 3}, {69, 12, 94, 67}, {107, 150, 31, 67}, {104, 223, 92, 163}, {198, 12, 76, 211}, {162, 222, 198, 67}, {107, 161, 86, 131}, {107, 182, 234, 240}, {67, 212, 238, 196}, {206, 217, 143, 131}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("us east"),
|
Region: models.WindscribeRegion("us east"),
|
||||||
Subdomain: "us-east",
|
IPs: []net.IP{{167, 160, 172, 3}, {167, 160, 167, 195}, {162, 222, 195, 67}, {104, 168, 34, 147}, {23, 105, 170, 139}, {86, 106, 87, 83}, {173, 44, 36, 67}, {199, 217, 105, 227}, {67, 21, 32, 145}, {68, 235, 35, 172}, {199, 217, 104, 227}, {67, 219, 146, 67}, {68, 235, 50, 227}, {76, 72, 175, 99}, {173, 208, 45, 33}, {68, 235, 35, 12}, {23, 226, 141, 195}, {38, 132, 118, 227}, {23, 83, 91, 170}, {23, 82, 136, 93}, {198, 147, 22, 225}, {206, 217, 128, 3}, {156, 96, 59, 102}, {185, 232, 22, 195}, {23, 105, 170, 151}, {92, 119, 177, 83}, {107, 150, 29, 131}, {23, 82, 8, 143}, {142, 234, 200, 176}, {104, 223, 127, 195}, {198, 12, 64, 35}, {206, 217, 129, 227}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("us west"),
|
Region: models.WindscribeRegion("us west"),
|
||||||
Subdomain: "us-west",
|
IPs: []net.IP{{104, 129, 3, 163}, {104, 152, 222, 33}, {172, 241, 250, 131}, {104, 129, 56, 67}, {66, 115, 176, 3}, {89, 187, 185, 34}, {64, 120, 2, 174}, {185, 236, 200, 35}, {167, 88, 60, 227}, {104, 129, 56, 131}, {82, 102, 30, 67}, {23, 83, 131, 187}, {37, 120, 147, 163}, {198, 23, 242, 147}, {209, 58, 129, 121}, {23, 83, 130, 166}, {23, 94, 74, 99}, {192, 3, 20, 51}, {167, 88, 60, 243}, {217, 138, 217, 51}, {198, 12, 116, 195}, {172, 241, 214, 202}, {217, 138, 217, 211}, {172, 255, 125, 141}, {104, 129, 3, 67}, {216, 45, 53, 131}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("vietnam"),
|
Region: models.WindscribeRegion("vietnam"),
|
||||||
Subdomain: "vn",
|
IPs: []net.IP{{103, 9, 76, 197}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("windflix ca"),
|
Region: models.WindscribeRegion("windflix ca"),
|
||||||
Subdomain: "wf-ca",
|
IPs: []net.IP{{104, 254, 92, 99}, {104, 218, 60, 111}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("windflix jp"),
|
Region: models.WindscribeRegion("windflix jp"),
|
||||||
Subdomain: "wf-jp",
|
IPs: []net.IP{{5, 181, 235, 67}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("windflix uk"),
|
Region: models.WindscribeRegion("windflix uk"),
|
||||||
Subdomain: "wf-uk",
|
IPs: []net.IP{{45, 9, 248, 3}, {81, 92, 200, 85}, {89, 47, 62, 83}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Region: models.WindscribeRegion("windflix us"),
|
Region: models.WindscribeRegion("windflix us"),
|
||||||
Subdomain: "wf-us",
|
IPs: []net.IP{{185, 232, 22, 131}, {38, 132, 122, 195}, {38, 132, 101, 179}, {217, 138, 206, 211}, {38, 132, 101, 211}, {38, 132, 122, 131}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
internal/models/pia.go
Normal file
8
internal/models/pia.go
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import "net"
|
||||||
|
|
||||||
|
type PIAServer struct {
|
||||||
|
IPs []net.IP
|
||||||
|
Region PIARegion
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
|
import "net"
|
||||||
|
|
||||||
type WindscribeServer struct {
|
type WindscribeServer struct {
|
||||||
Region WindscribeRegion
|
Region WindscribeRegion
|
||||||
Subdomain string
|
IPs []net.IP
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,21 +11,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (c *configurator) GetOpenVPNConnections(region models.PIARegion, protocol models.NetworkProtocol, encryption models.PIAEncryption, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
func (c *configurator) GetOpenVPNConnections(region models.PIARegion, protocol models.NetworkProtocol, encryption models.PIAEncryption, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||||
geoMapping := constants.PIAGeoToSubdomainMapping()
|
var IPs []net.IP
|
||||||
var subdomain string
|
for _, server := range constants.PIAServers() {
|
||||||
for r, s := range geoMapping {
|
if strings.EqualFold(string(server.Region), string(region)) {
|
||||||
if strings.EqualFold(string(region), string(r)) {
|
IPs = server.IPs
|
||||||
subdomain = s
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(subdomain) == 0 {
|
if len(IPs) == 0 {
|
||||||
return nil, fmt.Errorf("region %q has no associated PIA subdomain", region)
|
return nil, fmt.Errorf("no IP found for region %q", region)
|
||||||
}
|
|
||||||
hostname := subdomain + ".privateinternetaccess.com"
|
|
||||||
IPs, err := c.lookupIP(hostname)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
if targetIP != nil {
|
if targetIP != nil {
|
||||||
found := false
|
found := false
|
||||||
@@ -36,7 +29,7 @@ func (c *configurator) GetOpenVPNConnections(region models.PIARegion, protocol m
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
return nil, fmt.Errorf("target IP address %q not found from IP addresses resolved from %s", targetIP, hostname)
|
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||||
}
|
}
|
||||||
IPs = []net.IP{targetIP}
|
IPs = []net.IP{targetIP}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,20 +11,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (c *configurator) GetOpenVPNConnections(region models.WindscribeRegion, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
func (c *configurator) GetOpenVPNConnections(region models.WindscribeRegion, protocol models.NetworkProtocol, customPort uint16, targetIP net.IP) (connections []models.OpenVPNConnection, err error) {
|
||||||
var subdomain string
|
var IPs []net.IP
|
||||||
for _, server := range constants.WindscribeServers() {
|
for _, server := range constants.WindscribeServers() {
|
||||||
if server.Region == region {
|
if strings.EqualFold(string(server.Region), string(region)) {
|
||||||
subdomain = server.Subdomain
|
IPs = server.IPs
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(subdomain) == 0 {
|
if len(IPs) == 0 {
|
||||||
return nil, fmt.Errorf("no server found for region %q", region)
|
return nil, fmt.Errorf("no IP found for region %q", region)
|
||||||
}
|
|
||||||
hostname := subdomain + ".windscribe.com"
|
|
||||||
IPs, err := c.lookupIP(hostname)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
if targetIP != nil {
|
if targetIP != nil {
|
||||||
found := false
|
found := false
|
||||||
@@ -35,7 +29,7 @@ func (c *configurator) GetOpenVPNConnections(region models.WindscribeRegion, pro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
return nil, fmt.Errorf("target IP address %q not found from IP addresses resolved from %s", targetIP, hostname)
|
return nil, fmt.Errorf("target IP address %q not found in IP addresses", targetIP)
|
||||||
}
|
}
|
||||||
IPs = []net.IP{targetIP}
|
IPs = []net.IP{targetIP}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user