fix(slickvpn/updater): only keep 11 servers

- this reverts most of commit e806fe02db.
This commit is contained in:
Quentin McGaw
2025-12-23 03:03:47 +00:00
parent e806fe02db
commit beaa8b5589
10 changed files with 27 additions and 1400 deletions
-14
View File
@@ -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)
}
// 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.
type MockUnzipper struct {
ctrl *gomock.Controller
-1
View File
@@ -8,5 +8,4 @@ import (
type Storage interface {
FilterServers(provider string, selection settings.ServerSelection) (
servers []models.Server, err error)
HardcodedServers() models.AllServers
}
-1
View File
@@ -43,7 +43,6 @@ type Providers struct {
type Storage interface {
FilterServers(provider string, selection settings.ServerSelection) (
servers []models.Server, err error)
HardcodedServers() models.AllServers
}
type Extractor interface {
+1 -1
View File
@@ -22,7 +22,7 @@ func New(storage common.Storage, randSource rand.Source,
return &Provider{
storage: storage,
randSource: randSource,
Fetcher: updater.New(client, updaterWarner, parallelResolver, storage),
Fetcher: updater.New(client, updaterWarner, parallelResolver),
}
}
+22 -21
View File
@@ -5,7 +5,7 @@ import (
"fmt"
"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/provider/common"
)
@@ -14,20 +14,24 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) (
servers []models.Server, err error,
) {
// 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
// to check which servers can be resolved. The previous code was dynamically parsing
// their website table of servers and they now list only 11 servers on their website.
hardcodedServersData := u.storage.HardcodedServers()
slickVPNData, ok := hardcodedServersData.ProviderToServers[providers.SlickVPN]
if !ok {
return nil, fmt.Errorf("no hardcoded servers for provider %s", providers.SlickVPN)
// went to become a pile of trash, we now hardcode the servers data below.
servers = []models.Server{
{Hostname: "gw2.sin2.slickvpn.com", Region: "Asia", Country: "Singapore", City: "Singapore"},
{Hostname: "gw1.bos1.slickvpn.com", Region: "North America", Country: "United States", City: "Boston"},
{Hostname: "gw1.cmh1.slickvpn.com", Region: "North America", Country: "United States", City: "Columbus"},
{Hostname: "gw1.lax2.slickvpn.com", Region: "North America", Country: "United States", City: "Los Angeles"},
{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))
for i := range hardcodedServers {
hosts[i] = hardcodedServers[i].Hostname
hosts := make([]string, len(servers))
for i := range servers {
hosts[i] = servers[i].Hostname
}
resolveSettings := parallelResolverSettings(hosts)
@@ -44,14 +48,11 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) (
common.ErrNotEnoughServers, len(hosts), minServers)
}
servers = make([]models.Server, 0, len(hostToIPs))
for _, server := range hardcodedServers {
IPs, ok := hostToIPs[server.Hostname]
if !ok || len(IPs) == 0 {
continue
}
server.IPs = IPs
servers = append(servers, server)
for i := range servers {
servers[i].VPN = vpn.OpenVPN
servers[i].TCP = true
servers[i].UDP = true
servers[i].IPs = hostToIPs[servers[i].Hostname]
}
sort.Sort(models.SortableServers(servers))
@@ -10,16 +10,14 @@ type Updater struct {
client *http.Client
parallelResolver common.ParallelResolver
warner common.Warner
storage common.Storage
}
func New(client *http.Client, warner common.Warner,
parallelResolver common.ParallelResolver, storage common.Storage,
parallelResolver common.ParallelResolver,
) *Updater {
return &Updater{
client: client,
parallelResolver: parallelResolver,
warner: warner,
storage: storage,
}
}