chore(config): provider name field as string instead of string pointer

This commit is contained in:
Quentin McGaw
2024-03-23 09:41:25 +00:00
parent 7674efe8d7
commit 62007bf1a1
6 changed files with 31 additions and 36 deletions

View File

@@ -13,8 +13,8 @@ import (
// Provider contains settings specific to a VPN provider.
type Provider struct {
// Name is the VPN service provider name.
// It cannot be nil in the internal state.
Name *string `json:"name"`
// It cannot be the empty string in the internal state.
Name string `json:"name"`
// ServerSelection is the settings to
// select the VPN server.
ServerSelection ServerSelection `json:"server_selection"`
@@ -40,16 +40,16 @@ func (p *Provider) validate(vpnType string, storage Storage) (err error) {
providers.Windscribe,
}
}
if err = validate.IsOneOf(*p.Name, validNames...); err != nil {
if err = validate.IsOneOf(p.Name, validNames...); err != nil {
return fmt.Errorf("%w for Wireguard: %w", ErrVPNProviderNameNotValid, err)
}
err = p.ServerSelection.validate(*p.Name, storage)
err = p.ServerSelection.validate(p.Name, storage)
if err != nil {
return fmt.Errorf("server selection: %w", err)
}
err = p.PortForwarding.Validate(*p.Name)
err = p.PortForwarding.Validate(p.Name)
if err != nil {
return fmt.Errorf("port forwarding: %w", err)
}
@@ -59,27 +59,27 @@ func (p *Provider) validate(vpnType string, storage Storage) (err error) {
func (p *Provider) copy() (copied Provider) {
return Provider{
Name: gosettings.CopyPointer(p.Name),
Name: p.Name,
ServerSelection: p.ServerSelection.copy(),
PortForwarding: p.PortForwarding.Copy(),
}
}
func (p *Provider) mergeWith(other Provider) {
p.Name = gosettings.MergeWithPointer(p.Name, other.Name)
p.Name = gosettings.MergeWithString(p.Name, other.Name)
p.ServerSelection.mergeWith(other.ServerSelection)
p.PortForwarding.mergeWith(other.PortForwarding)
}
func (p *Provider) overrideWith(other Provider) {
p.Name = gosettings.OverrideWithPointer(p.Name, other.Name)
p.Name = gosettings.OverrideWithString(p.Name, other.Name)
p.ServerSelection.overrideWith(other.ServerSelection)
p.PortForwarding.OverrideWith(other.PortForwarding)
}
func (p *Provider) setDefaults() {
p.Name = gosettings.DefaultPointer(p.Name, providers.PrivateInternetAccess)
p.ServerSelection.setDefaults(*p.Name)
p.Name = gosettings.DefaultString(p.Name, providers.PrivateInternetAccess)
p.ServerSelection.setDefaults(p.Name)
p.PortForwarding.setDefaults()
}
@@ -89,7 +89,7 @@ func (p Provider) String() string {
func (p Provider) toLinesNode() (node *gotree.Node) {
node = gotree.New("VPN provider settings:")
node.Appendf("Name: %s", *p.Name)
node.Appendf("Name: %s", p.Name)
node.AppendNode(p.ServerSelection.toLinesNode())
node.AppendNode(p.PortForwarding.toLinesNode())
return node

View File

@@ -133,7 +133,7 @@ func (s *Settings) SetDefaults() {
s.System.setDefaults()
s.Version.setDefaults()
s.VPN.setDefaults()
s.Updater.SetDefaults(*s.VPN.Provider.Name)
s.Updater.SetDefaults(s.VPN.Provider.Name)
s.Pprof.SetDefaults()
}
@@ -162,16 +162,16 @@ func (s Settings) toLinesNode() (node *gotree.Node) {
}
func (s Settings) Warnings() (warnings []string) {
if *s.VPN.Provider.Name == providers.HideMyAss {
if s.VPN.Provider.Name == providers.HideMyAss {
warnings = append(warnings, "HideMyAss dropped support for Linux OpenVPN "+
" so this will likely not work anymore. See https://github.com/qdm12/gluetun/issues/1498.")
}
if helpers.IsOneOf(*s.VPN.Provider.Name, providers.SlickVPN) &&
if helpers.IsOneOf(s.VPN.Provider.Name, providers.SlickVPN) &&
s.VPN.Type == vpn.OpenVPN {
warnings = append(warnings, "OpenVPN 2.5 uses OpenSSL 3 "+
"which prohibits the usage of weak security in today's standards. "+
*s.VPN.Provider.Name+" uses weak security which is out "+
s.VPN.Provider.Name+" uses weak security which is out "+
"of Gluetun's control so the only workaround is to allow such weaknesses "+
`using the OpenVPN option tls-cipher "DEFAULT:@SECLEVEL=0". `+
"You might want to reach to your provider so they upgrade their certificates. "+

View File

@@ -33,12 +33,12 @@ func (v *VPN) Validate(storage Storage, ipv6Supported bool) (err error) {
}
if v.Type == vpn.OpenVPN {
err := v.OpenVPN.validate(*v.Provider.Name)
err := v.OpenVPN.validate(v.Provider.Name)
if err != nil {
return fmt.Errorf("OpenVPN settings: %w", err)
}
} else {
err := v.Wireguard.validate(*v.Provider.Name, ipv6Supported)
err := v.Wireguard.validate(v.Provider.Name, ipv6Supported)
if err != nil {
return fmt.Errorf("Wireguard settings: %w", err)
}
@@ -73,8 +73,8 @@ func (v *VPN) OverrideWith(other VPN) {
func (v *VPN) setDefaults() {
v.Type = gosettings.DefaultString(v.Type, vpn.OpenVPN)
v.Provider.setDefaults()
v.OpenVPN.setDefaults(*v.Provider.Name)
v.Wireguard.setDefaults(*v.Provider.Name)
v.OpenVPN.setDefaults(v.Provider.Name)
v.Wireguard.setDefaults(v.Provider.Name)
}
func (v VPN) String() string {