Persistent server pools (#226)
* GetAllServers with version & timestamp tests * Storage package to sync servers * Use storage Sync to get and use servers
This commit is contained in:
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type cyberghost struct{}
|
||||
type cyberghost struct {
|
||||
servers []models.CyberghostServer
|
||||
}
|
||||
|
||||
func newCyberghost() *cyberghost {
|
||||
return &cyberghost{}
|
||||
func newCyberghost(servers []models.CyberghostServer) *cyberghost {
|
||||
return &cyberghost{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cyberghost) filterServers(region, group string) (servers []models.CyberghostServer) {
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type mullvad struct{}
|
||||
type mullvad struct {
|
||||
servers []models.MullvadServer
|
||||
}
|
||||
|
||||
func newMullvad() *mullvad {
|
||||
return &mullvad{}
|
||||
func newMullvad(servers []models.MullvadServer) *mullvad {
|
||||
return &mullvad{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *mullvad) filterServers(country, city, isp string) (servers []models.MullvadServer) {
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type nordvpn struct{}
|
||||
type nordvpn struct {
|
||||
servers []models.NordvpnServer
|
||||
}
|
||||
|
||||
func newNordvpn() *nordvpn {
|
||||
return &nordvpn{}
|
||||
func newNordvpn(servers []models.NordvpnServer) *nordvpn {
|
||||
return &nordvpn{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (n *nordvpn) filterServers(region string, protocol models.NetworkProtocol, number uint16) (servers []models.NordvpnServer) {
|
||||
|
||||
@@ -14,12 +14,14 @@ import (
|
||||
)
|
||||
|
||||
type pia struct {
|
||||
random random.Random
|
||||
random random.Random
|
||||
servers []models.PIAServer
|
||||
}
|
||||
|
||||
func newPrivateInternetAccess() *pia {
|
||||
func newPrivateInternetAccess(servers []models.PIAServer) *pia {
|
||||
return &pia{
|
||||
random: random.NewRandom(),
|
||||
random: random.NewRandom(),
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,24 +13,24 @@ type Provider interface {
|
||||
GetPortForward(client network.Client) (port uint16, err error)
|
||||
}
|
||||
|
||||
func New(provider models.VPNProvider) Provider {
|
||||
func New(provider models.VPNProvider, allServers models.AllServers) Provider {
|
||||
switch provider {
|
||||
case constants.PrivateInternetAccess:
|
||||
return newPrivateInternetAccess()
|
||||
return newPrivateInternetAccess(allServers.Pia.Servers)
|
||||
case constants.Mullvad:
|
||||
return newMullvad()
|
||||
return newMullvad(allServers.Mullvad.Servers)
|
||||
case constants.Windscribe:
|
||||
return newWindscribe()
|
||||
return newWindscribe(allServers.Windscribe.Servers)
|
||||
case constants.Surfshark:
|
||||
return newSurfshark()
|
||||
return newSurfshark(allServers.Surfshark.Servers)
|
||||
case constants.Cyberghost:
|
||||
return newCyberghost()
|
||||
return newCyberghost(allServers.Cyberghost.Servers)
|
||||
case constants.Vyprvpn:
|
||||
return newVyprvpn()
|
||||
return newVyprvpn(allServers.Vyprvpn.Servers)
|
||||
case constants.Nordvpn:
|
||||
return newNordvpn()
|
||||
return newNordvpn(allServers.Nordvpn.Servers)
|
||||
case constants.Purevpn:
|
||||
return newPurevpn()
|
||||
return newPurevpn(allServers.Purevpn.Servers)
|
||||
default:
|
||||
return nil // should never occur
|
||||
}
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type purevpn struct{}
|
||||
type purevpn struct {
|
||||
servers []models.PurevpnServer
|
||||
}
|
||||
|
||||
func newPurevpn() *purevpn {
|
||||
return &purevpn{}
|
||||
func newPurevpn(servers []models.PurevpnServer) *purevpn {
|
||||
return &purevpn{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *purevpn) filterServers(region, country, city string) (servers []models.PurevpnServer) {
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type surfshark struct{}
|
||||
type surfshark struct {
|
||||
servers []models.SurfsharkServer
|
||||
}
|
||||
|
||||
func newSurfshark() *surfshark {
|
||||
return &surfshark{}
|
||||
func newSurfshark(servers []models.SurfsharkServer) *surfshark {
|
||||
return &surfshark{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *surfshark) filterServers(region string) (servers []models.SurfsharkServer) {
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type vyprvpn struct{}
|
||||
type vyprvpn struct {
|
||||
servers []models.VyprvpnServer
|
||||
}
|
||||
|
||||
func newVyprvpn() *vyprvpn {
|
||||
return &vyprvpn{}
|
||||
func newVyprvpn(servers []models.VyprvpnServer) *vyprvpn {
|
||||
return &vyprvpn{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (v *vyprvpn) filterServers(region string) (servers []models.VyprvpnServer) {
|
||||
|
||||
@@ -9,10 +9,14 @@ import (
|
||||
"github.com/qdm12/golibs/network"
|
||||
)
|
||||
|
||||
type windscribe struct{}
|
||||
type windscribe struct {
|
||||
servers []models.WindscribeServer
|
||||
}
|
||||
|
||||
func newWindscribe() *windscribe {
|
||||
return &windscribe{}
|
||||
func newWindscribe(servers []models.WindscribeServer) *windscribe {
|
||||
return &windscribe{
|
||||
servers: servers,
|
||||
}
|
||||
}
|
||||
|
||||
func (w *windscribe) filterServers(region string) (servers []models.WindscribeServer) {
|
||||
|
||||
Reference in New Issue
Block a user