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:
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user