mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-10 04:30:20 +02:00
fix(slickvpn/updater): only keep 11 servers
- this reverts most of commit e806fe02db.
This commit is contained in:
@@ -92,20 +92,6 @@ func (mr *MockStorageMockRecorder) FilterServers(arg0, arg1 interface{}) *gomock
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterServers", reflect.TypeOf((*MockStorage)(nil).FilterServers), arg0, arg1)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterServers", reflect.TypeOf((*MockStorage)(nil).FilterServers), arg0, arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HardcodedServers mocks base method.
|
|
||||||
func (m *MockStorage) HardcodedServers() models.AllServers {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "HardcodedServers")
|
|
||||||
ret0, _ := ret[0].(models.AllServers)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// HardcodedServers indicates an expected call of HardcodedServers.
|
|
||||||
func (mr *MockStorageMockRecorder) HardcodedServers() *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HardcodedServers", reflect.TypeOf((*MockStorage)(nil).HardcodedServers))
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockUnzipper is a mock of Unzipper interface.
|
// MockUnzipper is a mock of Unzipper interface.
|
||||||
type MockUnzipper struct {
|
type MockUnzipper struct {
|
||||||
ctrl *gomock.Controller
|
ctrl *gomock.Controller
|
||||||
|
|||||||
@@ -8,5 +8,4 @@ import (
|
|||||||
type Storage interface {
|
type Storage interface {
|
||||||
FilterServers(provider string, selection settings.ServerSelection) (
|
FilterServers(provider string, selection settings.ServerSelection) (
|
||||||
servers []models.Server, err error)
|
servers []models.Server, err error)
|
||||||
HardcodedServers() models.AllServers
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ type Providers struct {
|
|||||||
type Storage interface {
|
type Storage interface {
|
||||||
FilterServers(provider string, selection settings.ServerSelection) (
|
FilterServers(provider string, selection settings.ServerSelection) (
|
||||||
servers []models.Server, err error)
|
servers []models.Server, err error)
|
||||||
HardcodedServers() models.AllServers
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Extractor interface {
|
type Extractor interface {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func New(storage common.Storage, randSource rand.Source,
|
|||||||
return &Provider{
|
return &Provider{
|
||||||
storage: storage,
|
storage: storage,
|
||||||
randSource: randSource,
|
randSource: randSource,
|
||||||
Fetcher: updater.New(client, updaterWarner, parallelResolver, storage),
|
Fetcher: updater.New(client, updaterWarner, parallelResolver),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/constants/providers"
|
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||||
"github.com/qdm12/gluetun/internal/models"
|
"github.com/qdm12/gluetun/internal/models"
|
||||||
"github.com/qdm12/gluetun/internal/provider/common"
|
"github.com/qdm12/gluetun/internal/provider/common"
|
||||||
)
|
)
|
||||||
@@ -14,20 +14,24 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) (
|
|||||||
servers []models.Server, err error,
|
servers []models.Server, err error,
|
||||||
) {
|
) {
|
||||||
// Since SlickVPN website listing VPN servers https://www.slickvpn.com/locations/
|
// Since SlickVPN website listing VPN servers https://www.slickvpn.com/locations/
|
||||||
// went to become a pile of trash, we now use the servers data from our servers.json
|
// went to become a pile of trash, we now hardcode the servers data below.
|
||||||
// to check which servers can be resolved. The previous code was dynamically parsing
|
servers = []models.Server{
|
||||||
// their website table of servers and they now list only 11 servers on their website.
|
{Hostname: "gw2.sin2.slickvpn.com", Region: "Asia", Country: "Singapore", City: "Singapore"},
|
||||||
hardcodedServersData := u.storage.HardcodedServers()
|
{Hostname: "gw1.bos1.slickvpn.com", Region: "North America", Country: "United States", City: "Boston"},
|
||||||
slickVPNData, ok := hardcodedServersData.ProviderToServers[providers.SlickVPN]
|
{Hostname: "gw1.cmh1.slickvpn.com", Region: "North America", Country: "United States", City: "Columbus"},
|
||||||
if !ok {
|
{Hostname: "gw1.lax2.slickvpn.com", Region: "North America", Country: "United States", City: "Los Angeles"},
|
||||||
return nil, fmt.Errorf("no hardcoded servers for provider %s", providers.SlickVPN)
|
{Hostname: "gw1.lga2.slickvpn.com", Region: "North America", Country: "United States", City: "New York"},
|
||||||
|
{Hostname: "gw1.man2.slickvpn.com", Region: "Europe", Country: "United Kingdom", City: "Manchester"},
|
||||||
|
{Hostname: "gw2.ams3.slickvpn.com", Region: "Europe", Country: "Netherlands", City: "Amsterdam"},
|
||||||
|
{Hostname: "gw2.hou1.slickvpn.com", Region: "North America", Country: "United States", City: "Houston"},
|
||||||
|
{Hostname: "gw1.mci2.slickvpn.com", Region: "North America", Country: "United States", City: "Kansas City"},
|
||||||
|
{Hostname: "gw2.slc1.slickvpn.com", Region: "North America", Country: "United States", City: "Salt Lake City"},
|
||||||
|
{Hostname: "gw1.stl1.slickvpn.com", Region: "North America", Country: "United States", City: "St Louis"},
|
||||||
}
|
}
|
||||||
hardcodedServers := make([]models.Server, len(slickVPNData.Servers))
|
|
||||||
copy(hardcodedServers, slickVPNData.Servers)
|
|
||||||
|
|
||||||
hosts := make([]string, len(hardcodedServers))
|
hosts := make([]string, len(servers))
|
||||||
for i := range hardcodedServers {
|
for i := range servers {
|
||||||
hosts[i] = hardcodedServers[i].Hostname
|
hosts[i] = servers[i].Hostname
|
||||||
}
|
}
|
||||||
|
|
||||||
resolveSettings := parallelResolverSettings(hosts)
|
resolveSettings := parallelResolverSettings(hosts)
|
||||||
@@ -44,14 +48,11 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) (
|
|||||||
common.ErrNotEnoughServers, len(hosts), minServers)
|
common.ErrNotEnoughServers, len(hosts), minServers)
|
||||||
}
|
}
|
||||||
|
|
||||||
servers = make([]models.Server, 0, len(hostToIPs))
|
for i := range servers {
|
||||||
for _, server := range hardcodedServers {
|
servers[i].VPN = vpn.OpenVPN
|
||||||
IPs, ok := hostToIPs[server.Hostname]
|
servers[i].TCP = true
|
||||||
if !ok || len(IPs) == 0 {
|
servers[i].UDP = true
|
||||||
continue
|
servers[i].IPs = hostToIPs[servers[i].Hostname]
|
||||||
}
|
|
||||||
server.IPs = IPs
|
|
||||||
servers = append(servers, server)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Sort(models.SortableServers(servers))
|
sort.Sort(models.SortableServers(servers))
|
||||||
|
|||||||
@@ -10,16 +10,14 @@ type Updater struct {
|
|||||||
client *http.Client
|
client *http.Client
|
||||||
parallelResolver common.ParallelResolver
|
parallelResolver common.ParallelResolver
|
||||||
warner common.Warner
|
warner common.Warner
|
||||||
storage common.Storage
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(client *http.Client, warner common.Warner,
|
func New(client *http.Client, warner common.Warner,
|
||||||
parallelResolver common.ParallelResolver, storage common.Storage,
|
parallelResolver common.ParallelResolver,
|
||||||
) *Updater {
|
) *Updater {
|
||||||
return &Updater{
|
return &Updater{
|
||||||
client: client,
|
client: client,
|
||||||
parallelResolver: parallelResolver,
|
parallelResolver: parallelResolver,
|
||||||
warner: warner,
|
warner: warner,
|
||||||
storage: storage,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,3 @@ func parseHardcodedServers() (allServers models.AllServers, err error) {
|
|||||||
err = decoder.Decode(&allServers)
|
err = decoder.Decode(&allServers)
|
||||||
return allServers, err
|
return allServers, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// HardcodedServers returns the hardcoded servers.
|
|
||||||
// Warning: mutating the returned value will impact the storage's internal state.
|
|
||||||
func (s *Storage) HardcodedServers() models.AllServers {
|
|
||||||
return s.hardcodedServers
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
"golang.org/x/text/language"
|
"golang.org/x/text/language"
|
||||||
)
|
)
|
||||||
|
|
||||||
// readFromFile reads the servers from servers.json.
|
// readFromFile reads the servers from server.json.
|
||||||
// It only reads servers that have the same version as the hardcoded servers version
|
// It only reads servers that have the same version as the hardcoded servers version
|
||||||
// to avoid JSON decoding errors.
|
// to avoid JSON decoding errors.
|
||||||
func (s *Storage) readFromFile(filepath string, hardcodedVersions map[string]uint16) (
|
func (s *Storage) readFromFile(filepath string, hardcodedVersions map[string]uint16) (
|
||||||
|
|||||||
+1
-1345
File diff suppressed because it is too large
Load Diff
@@ -22,12 +22,6 @@ func MatchData(data string) MatchFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func MatchClasses(classStrings ...string) MatchFunc {
|
|
||||||
return func(node *html.Node) (match bool) {
|
|
||||||
return HasClassStrings(node, classStrings...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func DirectChild(parent *html.Node,
|
func DirectChild(parent *html.Node,
|
||||||
matchFunc MatchFunc,
|
matchFunc MatchFunc,
|
||||||
) (child *html.Node) {
|
) (child *html.Node) {
|
||||||
|
|||||||
Reference in New Issue
Block a user