From 88ad10d4299aaacfcf2bf1b208e964768971241c Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Fri, 1 May 2020 03:14:16 +0000 Subject: [PATCH] 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 --- internal/constants/lookup_test.go | 164 +++++++++++++++++ internal/constants/pia.go | 260 ++++++++++++++++++++------ internal/constants/windscribe.go | 292 +++++++++++++++--------------- internal/models/pia.go | 8 + internal/models/windscribe.go | 6 +- internal/pia/conf.go | 21 +-- internal/windscribe/conf.go | 18 +- 7 files changed, 538 insertions(+), 231 deletions(-) create mode 100644 internal/constants/lookup_test.go create mode 100644 internal/models/pia.go diff --git a/internal/constants/lookup_test.go b/internal/constants/lookup_test.go new file mode 100644 index 00000000..09a19b27 --- /dev/null +++ b/internal/constants/lookup_test.go @@ -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, ", ")) + } +} diff --git a/internal/constants/pia.go b/internal/constants/pia.go index 4a3b3d5a..65ca8b19 100644 --- a/internal/constants/pia.go +++ b/internal/constants/pia.go @@ -1,6 +1,8 @@ package constants import ( + "net" + "github.com/qdm12/private-internet-access-docker/internal/models" ) @@ -19,64 +21,214 @@ const ( ) func PIAGeoChoices() (regions []string) { - for region := range PIAGeoToSubdomainMapping() { - regions = append(regions, string(region)) + for _, server := range PIAServers() { + regions = append(regions, string(server.Region)) } return regions } -func PIAGeoToSubdomainMapping() map[models.PIARegion]string { - return map[models.PIARegion]string{ - models.PIARegion("AU Melbourne"): "au-melbourne", - models.PIARegion("AU Perth"): "au-perth", - models.PIARegion("AU Sydney"): "au-sydney", - models.PIARegion("Austria"): "austria", - models.PIARegion("Belgium"): "belgium", - models.PIARegion("CA Montreal"): "ca-montreal", - models.PIARegion("CA Toronto"): "ca-toronto", - models.PIARegion("CA Vancouver"): "ca-vancouver", - models.PIARegion("Czech Republic"): "czech", - models.PIARegion("DE Berlin"): "de-berlin", - models.PIARegion("DE Frankfurt"): "de-frankfurt", - models.PIARegion("Denmark"): "denmark", - models.PIARegion("Finland"): "fi", - models.PIARegion("France"): "france", - models.PIARegion("Hong Kong"): "hk", - models.PIARegion("Hungary"): "hungary", - models.PIARegion("India"): "in", - models.PIARegion("Ireland"): "ireland", - models.PIARegion("Israel"): "israel", - models.PIARegion("Italy"): "italy", - models.PIARegion("Japan"): "japan", - models.PIARegion("Luxembourg"): "lu", - models.PIARegion("Mexico"): "mexico", - models.PIARegion("Netherlands"): "nl", - models.PIARegion("New Zealand"): "nz", - models.PIARegion("Norway"): "no", - models.PIARegion("Poland"): "poland", - models.PIARegion("Romania"): "ro", - models.PIARegion("Singapore"): "sg", - models.PIARegion("Spain"): "spain", - models.PIARegion("Sweden"): "sweden", - models.PIARegion("Switzerland"): "swiss", - models.PIARegion("UAE"): "ae", - models.PIARegion("UK London"): "uk-london", - models.PIARegion("UK Manchester"): "uk-manchester", - models.PIARegion("UK Southampton"): "uk-southampton", - models.PIARegion("US Atlanta"): "us-atlanta", - models.PIARegion("US California"): "us-california", - models.PIARegion("US Chicago"): "us-chicago", - models.PIARegion("US Denver"): "us-denver", - models.PIARegion("US East"): "us-east", - models.PIARegion("US Florida"): "us-florida", - models.PIARegion("US Houston"): "us-houston", - models.PIARegion("US Las Vegas"): "us-lasvegas", - models.PIARegion("US New York City"): "us-newyorkcity", - models.PIARegion("US Seattle"): "us-seattle", - models.PIARegion("US Silicon Valley"): "us-siliconvalley", - models.PIARegion("US Texas"): "us-texas", - models.PIARegion("US Washington DC"): "us-washingtondc", - models.PIARegion("US West"): "us-west", +func PIAServers() []models.PIAServer { + return []models.PIAServer{ + { + Region: models.PIARegion("AU Melbourne"), + 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}}, + }, + { + Region: models.PIARegion("AU Perth"), + 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}}, + }, + { + Region: models.PIARegion("AU Sydney"), + 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}}, + }, + { + Region: models.PIARegion("Austria"), + 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}}, + }, + { + Region: models.PIARegion("Belgium"), + 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}}, + }, + { + Region: models.PIARegion("CA Montreal"), + 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}}, + }, + { + Region: models.PIARegion("CA Toronto"), + 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}}, + }, + { + Region: models.PIARegion("CA Vancouver"), + 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}}, + }, + { + Region: models.PIARegion("Czech Republic"), + 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}}, + }, + { + Region: models.PIARegion("DE Berlin"), + 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}}, + }, + { + Region: models.PIARegion("DE Frankfurt"), + 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}}, + }, + { + Region: models.PIARegion("Denmark"), + 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}}, + }, + { + 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}}, + }, } } diff --git a/internal/constants/windscribe.go b/internal/constants/windscribe.go index e6f17f9c..a2fe0ce1 100644 --- a/internal/constants/windscribe.go +++ b/internal/constants/windscribe.go @@ -1,6 +1,8 @@ package constants import ( + "net" + "github.com/qdm12/private-internet-access-docker/internal/models" ) @@ -10,12 +12,8 @@ const ( ) func WindscribeRegionChoices() (choices []string) { - uniqueChoices := map[string]struct{}{} for _, server := range WindscribeServers() { - uniqueChoices[string(server.Region)] = struct{}{} - } - for choice := range uniqueChoices { - choices = append(choices, choice) + choices = append(choices, string(server.Region)) } return choices } @@ -23,288 +21,284 @@ func WindscribeRegionChoices() (choices []string) { func WindscribeServers() []models.WindscribeServer { return []models.WindscribeServer{ { - Region: models.WindscribeRegion("albania"), - Subdomain: "al", + Region: models.WindscribeRegion("albania"), + IPs: []net.IP{{31, 171, 152, 179}}, }, { - Region: models.WindscribeRegion("argentina"), - Subdomain: "ar", + Region: models.WindscribeRegion("argentina"), + IPs: []net.IP{{190, 105, 236, 50}, {190, 105, 236, 19}, {167, 250, 6, 121}, {190, 105, 236, 32}}, }, { - Region: models.WindscribeRegion("argentina"), - Subdomain: "ar", + Region: models.WindscribeRegion("argentina"), + IPs: []net.IP{{190, 105, 236, 50}, {190, 105, 236, 19}, {167, 250, 6, 121}, {190, 105, 236, 32}}, }, { - Region: models.WindscribeRegion("australia"), - Subdomain: "au", + Region: models.WindscribeRegion("australia"), + 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"), - Subdomain: "at", + Region: models.WindscribeRegion("austria"), + IPs: []net.IP{{89, 187, 168, 66}, {217, 64, 127, 11}}, }, { - Region: models.WindscribeRegion("azerbaijan"), - Subdomain: "az", + Region: models.WindscribeRegion("azerbaijan"), + IPs: []net.IP{{85, 132, 61, 123}}, }, { - Region: models.WindscribeRegion("belgium"), - Subdomain: "be", + Region: models.WindscribeRegion("belgium"), + IPs: []net.IP{{185, 232, 21, 131}, {194, 187, 251, 147}}, }, { - Region: models.WindscribeRegion("bosnia"), - Subdomain: "ba", + Region: models.WindscribeRegion("bosnia"), + IPs: []net.IP{{185, 99, 3, 24}}, }, { - Region: models.WindscribeRegion("brazil"), - Subdomain: "br", + Region: models.WindscribeRegion("brazil"), + IPs: []net.IP{{177, 67, 80, 59}, {189, 1, 172, 12}, {177, 54, 144, 68}}, }, { - Region: models.WindscribeRegion("bulgaria"), - Subdomain: "bg", + Region: models.WindscribeRegion("bulgaria"), + IPs: []net.IP{{185, 94, 192, 35}}, }, { - Region: models.WindscribeRegion("canada east"), - Subdomain: "ca", + Region: models.WindscribeRegion("canada east"), + 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"), - Subdomain: "ca-west", + Region: models.WindscribeRegion("canada 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"), - Subdomain: "co", + Region: models.WindscribeRegion("colombia"), + IPs: []net.IP{{138, 121, 203, 203}}, }, { - Region: models.WindscribeRegion("croatia"), - Subdomain: "hr", + Region: models.WindscribeRegion("croatia"), + IPs: []net.IP{{85, 10, 56, 252}}, }, { - Region: models.WindscribeRegion("cyprus"), - Subdomain: "cy", + Region: models.WindscribeRegion("cyprus"), + IPs: []net.IP{{157, 97, 132, 43}}, }, { - Region: models.WindscribeRegion("czech republic"), - Subdomain: "cz", + Region: models.WindscribeRegion("czech republic"), + IPs: []net.IP{{185, 156, 174, 11}, {185, 246, 210, 2}}, }, { - Region: models.WindscribeRegion("denmark"), - Subdomain: "dk", + Region: models.WindscribeRegion("denmark"), + IPs: []net.IP{{185, 206, 224, 195}, {134, 90, 149, 147}}, }, { - Region: models.WindscribeRegion("estonia"), - Subdomain: "ee", + Region: models.WindscribeRegion("estonia"), + IPs: []net.IP{{46, 22, 211, 251}, {196, 196, 216, 131}}, }, { - Region: models.WindscribeRegion("egypt"), - Subdomain: "eg", + Region: models.WindscribeRegion("fake antarctica"), + IPs: []net.IP{{23, 154, 160, 222}, {23, 154, 160, 212}}, }, { - Region: models.WindscribeRegion("fake antarctica"), - Subdomain: "aq", + Region: models.WindscribeRegion("finland"), + IPs: []net.IP{{185, 112, 82, 227}}, }, { - Region: models.WindscribeRegion("finland"), - Subdomain: "fi", + Region: models.WindscribeRegion("france"), + 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("france"), - Subdomain: "fr", + Region: models.WindscribeRegion("georgia"), + IPs: []net.IP{{188, 93, 90, 83}}, }, { - Region: models.WindscribeRegion("georgia"), - Subdomain: "ge", + Region: models.WindscribeRegion("germany"), + 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("germany"), - Subdomain: "de", + Region: models.WindscribeRegion("greece"), + IPs: []net.IP{{188, 123, 126, 146}, {185, 226, 64, 111}, {78, 108, 38, 155}}, }, { - Region: models.WindscribeRegion("greece"), - Subdomain: "gr", + Region: models.WindscribeRegion("hong kong"), + IPs: []net.IP{{103, 10, 197, 99}, {84, 17, 57, 114}}, }, { - Region: models.WindscribeRegion("hong kong"), - Subdomain: "hk", + Region: models.WindscribeRegion("hungary"), + IPs: []net.IP{{185, 104, 187, 43}}, }, { - Region: models.WindscribeRegion("hungary"), - Subdomain: "hu", + Region: models.WindscribeRegion("iceland"), + IPs: []net.IP{{185, 165, 170, 2}, {82, 221, 139, 38}}, }, { - Region: models.WindscribeRegion("iceland"), - Subdomain: "is", + Region: models.WindscribeRegion("india"), + IPs: []net.IP{{169, 38, 72, 14}, {103, 205, 140, 227}, {169, 38, 72, 12}, {169, 38, 68, 188}}, }, { - Region: models.WindscribeRegion("india"), - Subdomain: "in", + Region: models.WindscribeRegion("indonesia"), + IPs: []net.IP{{45, 127, 134, 91}}, }, { - Region: models.WindscribeRegion("indonesia"), - Subdomain: "id", + Region: models.WindscribeRegion("ireland"), + IPs: []net.IP{{185, 24, 232, 146}, {185, 104, 219, 2}}, }, { - Region: models.WindscribeRegion("ireland"), - Subdomain: "ie", + Region: models.WindscribeRegion("israel"), + IPs: []net.IP{{160, 116, 0, 27}, {185, 191, 205, 139}}, }, { - Region: models.WindscribeRegion("israel"), - Subdomain: "il", + Region: models.WindscribeRegion("italy"), + 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("italy"), - Subdomain: "it", + Region: models.WindscribeRegion("japan"), + IPs: []net.IP{{193, 148, 16, 243}, {89, 187, 161, 114}}, }, { - Region: models.WindscribeRegion("japan"), - Subdomain: "jp", + Region: models.WindscribeRegion("latvia"), + IPs: []net.IP{{85, 254, 72, 23}}, }, { - Region: models.WindscribeRegion("latvia"), - Subdomain: "lv", + Region: models.WindscribeRegion("lithuania"), + IPs: []net.IP{{85, 206, 163, 225}}, }, { - Region: models.WindscribeRegion("lithuania"), - Subdomain: "lt", + Region: models.WindscribeRegion("macedonia"), + IPs: []net.IP{{185, 225, 28, 51}}, }, { - Region: models.WindscribeRegion("macedonia"), - Subdomain: "mk", + Region: models.WindscribeRegion("malaysia"), + IPs: []net.IP{{103, 212, 69, 232}, {103, 106, 250, 31}}, }, { - Region: models.WindscribeRegion("malaysia"), - Subdomain: "my", + Region: models.WindscribeRegion("mexico"), + IPs: []net.IP{{143, 255, 57, 67}, {201, 131, 125, 107}, {190, 103, 179, 211}, {190, 103, 179, 217}}, }, { - Region: models.WindscribeRegion("mexico"), - Subdomain: "mx", + Region: models.WindscribeRegion("moldova"), + IPs: []net.IP{{178, 175, 144, 123}}, }, { - Region: models.WindscribeRegion("moldova"), - Subdomain: "md", + Region: models.WindscribeRegion("netherlands"), + 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("netherlands"), - Subdomain: "nl", + Region: models.WindscribeRegion("new zealand"), + IPs: []net.IP{{103, 62, 49, 113}, {103, 108, 94, 163}}, }, { - Region: models.WindscribeRegion("new zealand"), - Subdomain: "nz", + Region: models.WindscribeRegion("norway"), + IPs: []net.IP{{37, 120, 203, 67}, {185, 206, 225, 131}}, }, { - Region: models.WindscribeRegion("norway"), - Subdomain: "no", + Region: models.WindscribeRegion("philippines"), + IPs: []net.IP{{103, 103, 0, 118}}, }, { - Region: models.WindscribeRegion("philippines"), - Subdomain: "ph", + Region: models.WindscribeRegion("poland"), + IPs: []net.IP{{185, 244, 214, 35}, {84, 17, 55, 98}, {5, 133, 11, 116}}, }, { - Region: models.WindscribeRegion("poland"), - Subdomain: "pl", + Region: models.WindscribeRegion("portugal"), + IPs: []net.IP{{185, 15, 21, 66}, {94, 46, 13, 215}}, }, { - Region: models.WindscribeRegion("portugal"), - Subdomain: "pt", + Region: models.WindscribeRegion("romania"), + IPs: []net.IP{{89, 46, 103, 147}, {91, 207, 102, 147}}, }, { - Region: models.WindscribeRegion("romania"), - Subdomain: "ro", + Region: models.WindscribeRegion("russia"), + 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("russia"), - Subdomain: "ru", + Region: models.WindscribeRegion("serbia"), + IPs: []net.IP{{141, 98, 103, 19}}, }, { - Region: models.WindscribeRegion("serbia"), - Subdomain: "rs", + Region: models.WindscribeRegion("singapore"), + IPs: []net.IP{{103, 62, 48, 224}, {89, 187, 162, 130}, {185, 200, 117, 163}}, }, { - Region: models.WindscribeRegion("singapore"), - Subdomain: "sg", + Region: models.WindscribeRegion("slovakia"), + IPs: []net.IP{{185, 245, 85, 3}}, }, { - Region: models.WindscribeRegion("slovakia"), - Subdomain: "sk", + Region: models.WindscribeRegion("slovenia"), + IPs: []net.IP{{146, 247, 24, 207}}, }, { - Region: models.WindscribeRegion("slovenia"), - Subdomain: "si", + Region: models.WindscribeRegion("south africa"), + IPs: []net.IP{{197, 242, 156, 53}, {165, 73, 248, 91}, {197, 242, 157, 235}, {129, 232, 167, 211}}, }, { - Region: models.WindscribeRegion("south africa"), - Subdomain: "za", + Region: models.WindscribeRegion("south korea"), + IPs: []net.IP{{218, 232, 76, 179}, {103, 212, 223, 3}}, }, { - Region: models.WindscribeRegion("south korea"), - Subdomain: "kr", + Region: models.WindscribeRegion("spain"), + IPs: []net.IP{{217, 138, 218, 99}, {89, 238, 178, 43}, {185, 253, 99, 131}, {37, 120, 142, 227}}, }, { - Region: models.WindscribeRegion("spain"), - Subdomain: "es", + Region: models.WindscribeRegion("sweden"), + IPs: []net.IP{{195, 181, 166, 129}, {79, 142, 76, 198}, {31, 13, 191, 67}}, }, { - Region: models.WindscribeRegion("sweden"), - Subdomain: "se", + Region: models.WindscribeRegion("switzerland"), + 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("switzerland"), - Subdomain: "ch", + Region: models.WindscribeRegion("thailand"), + IPs: []net.IP{{103, 253, 74, 57}, {27, 254, 130, 221}}, }, { - Region: models.WindscribeRegion("thailand"), - Subdomain: "th", + Region: models.WindscribeRegion("tunisia"), + IPs: []net.IP{{41, 231, 5, 23}}, }, { - Region: models.WindscribeRegion("tunisia"), - Subdomain: "tn", + Region: models.WindscribeRegion("turkey"), + 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("turkey"), - Subdomain: "tr", + Region: models.WindscribeRegion("ukraine"), + IPs: []net.IP{{77, 123, 146, 19}, {77, 120, 102, 65}}, }, { - Region: models.WindscribeRegion("ukraine"), - Subdomain: "ua", + Region: models.WindscribeRegion("united arab emirates"), + IPs: []net.IP{{45, 9, 249, 43}}, }, { - Region: models.WindscribeRegion("united arab emirates"), - Subdomain: "ae", + Region: models.WindscribeRegion("united kingdom"), + 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("united kingdom"), - Subdomain: "uk", + Region: models.WindscribeRegion("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 central"), - Subdomain: "us-central", + Region: models.WindscribeRegion("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 east"), - Subdomain: "us-east", + Region: models.WindscribeRegion("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("us west"), - Subdomain: "us-west", + Region: models.WindscribeRegion("vietnam"), + IPs: []net.IP{{103, 9, 76, 197}}, }, { - Region: models.WindscribeRegion("vietnam"), - Subdomain: "vn", + Region: models.WindscribeRegion("windflix ca"), + IPs: []net.IP{{104, 254, 92, 99}, {104, 218, 60, 111}}, }, { - Region: models.WindscribeRegion("windflix ca"), - Subdomain: "wf-ca", + Region: models.WindscribeRegion("windflix jp"), + IPs: []net.IP{{5, 181, 235, 67}}, }, { - Region: models.WindscribeRegion("windflix jp"), - Subdomain: "wf-jp", + Region: models.WindscribeRegion("windflix uk"), + IPs: []net.IP{{45, 9, 248, 3}, {81, 92, 200, 85}, {89, 47, 62, 83}}, }, { - Region: models.WindscribeRegion("windflix uk"), - Subdomain: "wf-uk", - }, - { - Region: models.WindscribeRegion("windflix us"), - Subdomain: "wf-us", + Region: models.WindscribeRegion("windflix 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}}, }, } } diff --git a/internal/models/pia.go b/internal/models/pia.go new file mode 100644 index 00000000..ad4a498d --- /dev/null +++ b/internal/models/pia.go @@ -0,0 +1,8 @@ +package models + +import "net" + +type PIAServer struct { + IPs []net.IP + Region PIARegion +} diff --git a/internal/models/windscribe.go b/internal/models/windscribe.go index 2247ab7d..c794023c 100644 --- a/internal/models/windscribe.go +++ b/internal/models/windscribe.go @@ -1,6 +1,8 @@ package models +import "net" + type WindscribeServer struct { - Region WindscribeRegion - Subdomain string + Region WindscribeRegion + IPs []net.IP } diff --git a/internal/pia/conf.go b/internal/pia/conf.go index 5b35f6bf..f150306e 100644 --- a/internal/pia/conf.go +++ b/internal/pia/conf.go @@ -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) { - geoMapping := constants.PIAGeoToSubdomainMapping() - var subdomain string - for r, s := range geoMapping { - if strings.EqualFold(string(region), string(r)) { - subdomain = s - break + var IPs []net.IP + for _, server := range constants.PIAServers() { + if strings.EqualFold(string(server.Region), string(region)) { + IPs = server.IPs } } - if len(subdomain) == 0 { - return nil, fmt.Errorf("region %q has no associated PIA subdomain", region) - } - hostname := subdomain + ".privateinternetaccess.com" - IPs, err := c.lookupIP(hostname) - if err != nil { - return nil, err + if len(IPs) == 0 { + return nil, fmt.Errorf("no IP found for region %q", region) } if targetIP != nil { found := false @@ -36,7 +29,7 @@ func (c *configurator) GetOpenVPNConnections(region models.PIARegion, protocol m } } 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} } diff --git a/internal/windscribe/conf.go b/internal/windscribe/conf.go index df6c0134..7f8d2a2d 100644 --- a/internal/windscribe/conf.go +++ b/internal/windscribe/conf.go @@ -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) { - var subdomain string + var IPs []net.IP for _, server := range constants.WindscribeServers() { - if server.Region == region { - subdomain = server.Subdomain - break + if strings.EqualFold(string(server.Region), string(region)) { + IPs = server.IPs } } - if len(subdomain) == 0 { - return nil, fmt.Errorf("no server found for region %q", region) - } - hostname := subdomain + ".windscribe.com" - IPs, err := c.lookupIP(hostname) - if err != nil { - return nil, err + if len(IPs) == 0 { + return nil, fmt.Errorf("no IP found for region %q", region) } if targetIP != nil { found := false @@ -35,7 +29,7 @@ func (c *configurator) GetOpenVPNConnections(region models.WindscribeRegion, pro } } 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} }