chore(storage): runtime defaults on servers data

- `openvpn` default VPN protocol for servers
- True UDP if VPN protocol is Wireguard
This commit is contained in:
Quentin McGaw
2022-04-18 11:59:15 +00:00
parent 934fafb64b
commit ac9571c6b2
4 changed files with 45 additions and 0 deletions

View File

@@ -2,6 +2,8 @@ package models
import ( import (
"net" "net"
"github.com/qdm12/gluetun/internal/constants/vpn"
) )
type Server struct { type Server struct {
@@ -26,3 +28,15 @@ type Server struct {
PortForward bool `json:"port_forward,omitempty"` PortForward bool `json:"port_forward,omitempty"`
IPs []net.IP `json:"ips,omitempty"` IPs []net.IP `json:"ips,omitempty"`
} }
func (s *Server) setDefaults() {
// TODO v4 precise these in servers.json rather than here
if s.VPN == "" {
s.VPN = vpn.OpenVPN
}
if s.VPN == vpn.Wireguard {
s.UDP = true
s.TCP = false
}
}

View File

@@ -47,8 +47,37 @@ func (a *AllServers) Count() int {
len(a.Windscribe.Servers) len(a.Windscribe.Servers)
} }
func (a *AllServers) SetDefaults() {
a.Cyberghost.SetDefaults()
a.Expressvpn.SetDefaults()
a.Fastestvpn.SetDefaults()
a.HideMyAss.SetDefaults()
a.Ipvanish.SetDefaults()
a.Ivpn.SetDefaults()
a.Mullvad.SetDefaults()
a.Nordvpn.SetDefaults()
a.Perfectprivacy.SetDefaults()
a.Privado.SetDefaults()
a.Pia.SetDefaults()
a.Privatevpn.SetDefaults()
a.Protonvpn.SetDefaults()
a.Purevpn.SetDefaults()
a.Surfshark.SetDefaults()
a.Torguard.SetDefaults()
a.VPNUnlimited.SetDefaults()
a.Vyprvpn.SetDefaults()
a.Wevpn.SetDefaults()
a.Windscribe.SetDefaults()
}
type Servers struct { type Servers struct {
Version uint16 `json:"version"` Version uint16 `json:"version"`
Timestamp int64 `json:"timestamp"` Timestamp int64 `json:"timestamp"`
Servers []Server `json:"servers"` Servers []Server `json:"servers"`
} }
func (s *Servers) SetDefaults() {
for i := range s.Servers {
s.Servers[i].setDefaults()
}
}

View File

@@ -204,6 +204,7 @@ func (s *Storage) extractServersFromBytes(b []byte, hardcoded models.AllServers)
if err != nil { if err != nil {
return servers, err return servers, err
} }
element.target.SetDefaults()
} }
return servers, nil return servers, nil

View File

@@ -24,6 +24,7 @@ type InfoErrorer interface {
func New(logger InfoErrorer, filepath string) (storage *Storage, err error) { func New(logger InfoErrorer, filepath string) (storage *Storage, err error) {
// error returned covered by unit test // error returned covered by unit test
harcodedServers, _ := parseHardcodedServers() harcodedServers, _ := parseHardcodedServers()
harcodedServers.SetDefaults()
storage = &Storage{ storage = &Storage{
hardcodedServers: harcodedServers, hardcodedServers: harcodedServers,