chore(config): provider name field as string instead of string pointer
This commit is contained in:
@@ -70,7 +70,7 @@ func (c *CLI) OpenvpnConfig(logger OpenvpnConfigLogger, source Source,
|
|||||||
|
|
||||||
providers := provider.NewProviders(storage, time.Now, warner, client,
|
providers := provider.NewProviders(storage, time.Now, warner, client,
|
||||||
unzipper, parallelResolver, ipFetcher, openvpnFileExtractor)
|
unzipper, parallelResolver, ipFetcher, openvpnFileExtractor)
|
||||||
providerConf := providers.Get(*allSettings.VPN.Provider.Name)
|
providerConf := providers.Get(allSettings.VPN.Provider.Name)
|
||||||
connection, err := providerConf.GetConnection(
|
connection, err := providerConf.GetConnection(
|
||||||
allSettings.VPN.Provider.ServerSelection, ipv6Supported)
|
allSettings.VPN.Provider.ServerSelection, ipv6Supported)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import (
|
|||||||
// Provider contains settings specific to a VPN provider.
|
// Provider contains settings specific to a VPN provider.
|
||||||
type Provider struct {
|
type Provider struct {
|
||||||
// Name is the VPN service provider name.
|
// Name is the VPN service provider name.
|
||||||
// It cannot be nil in the internal state.
|
// It cannot be the empty string in the internal state.
|
||||||
Name *string `json:"name"`
|
Name string `json:"name"`
|
||||||
// ServerSelection is the settings to
|
// ServerSelection is the settings to
|
||||||
// select the VPN server.
|
// select the VPN server.
|
||||||
ServerSelection ServerSelection `json:"server_selection"`
|
ServerSelection ServerSelection `json:"server_selection"`
|
||||||
@@ -40,16 +40,16 @@ func (p *Provider) validate(vpnType string, storage Storage) (err error) {
|
|||||||
providers.Windscribe,
|
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)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("server selection: %w", err)
|
return fmt.Errorf("server selection: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = p.PortForwarding.Validate(*p.Name)
|
err = p.PortForwarding.Validate(p.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("port forwarding: %w", err)
|
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) {
|
func (p *Provider) copy() (copied Provider) {
|
||||||
return Provider{
|
return Provider{
|
||||||
Name: gosettings.CopyPointer(p.Name),
|
Name: p.Name,
|
||||||
ServerSelection: p.ServerSelection.copy(),
|
ServerSelection: p.ServerSelection.copy(),
|
||||||
PortForwarding: p.PortForwarding.Copy(),
|
PortForwarding: p.PortForwarding.Copy(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) mergeWith(other Provider) {
|
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.ServerSelection.mergeWith(other.ServerSelection)
|
||||||
p.PortForwarding.mergeWith(other.PortForwarding)
|
p.PortForwarding.mergeWith(other.PortForwarding)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) overrideWith(other Provider) {
|
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.ServerSelection.overrideWith(other.ServerSelection)
|
||||||
p.PortForwarding.OverrideWith(other.PortForwarding)
|
p.PortForwarding.OverrideWith(other.PortForwarding)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) setDefaults() {
|
func (p *Provider) setDefaults() {
|
||||||
p.Name = gosettings.DefaultPointer(p.Name, providers.PrivateInternetAccess)
|
p.Name = gosettings.DefaultString(p.Name, providers.PrivateInternetAccess)
|
||||||
p.ServerSelection.setDefaults(*p.Name)
|
p.ServerSelection.setDefaults(p.Name)
|
||||||
p.PortForwarding.setDefaults()
|
p.PortForwarding.setDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ func (p Provider) String() string {
|
|||||||
|
|
||||||
func (p Provider) toLinesNode() (node *gotree.Node) {
|
func (p Provider) toLinesNode() (node *gotree.Node) {
|
||||||
node = gotree.New("VPN provider settings:")
|
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.ServerSelection.toLinesNode())
|
||||||
node.AppendNode(p.PortForwarding.toLinesNode())
|
node.AppendNode(p.PortForwarding.toLinesNode())
|
||||||
return node
|
return node
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ func (s *Settings) SetDefaults() {
|
|||||||
s.System.setDefaults()
|
s.System.setDefaults()
|
||||||
s.Version.setDefaults()
|
s.Version.setDefaults()
|
||||||
s.VPN.setDefaults()
|
s.VPN.setDefaults()
|
||||||
s.Updater.SetDefaults(*s.VPN.Provider.Name)
|
s.Updater.SetDefaults(s.VPN.Provider.Name)
|
||||||
s.Pprof.SetDefaults()
|
s.Pprof.SetDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,16 +162,16 @@ func (s Settings) toLinesNode() (node *gotree.Node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s Settings) Warnings() (warnings []string) {
|
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 "+
|
warnings = append(warnings, "HideMyAss dropped support for Linux OpenVPN "+
|
||||||
" so this will likely not work anymore. See https://github.com/qdm12/gluetun/issues/1498.")
|
" 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 {
|
s.VPN.Type == vpn.OpenVPN {
|
||||||
warnings = append(warnings, "OpenVPN 2.5 uses OpenSSL 3 "+
|
warnings = append(warnings, "OpenVPN 2.5 uses OpenSSL 3 "+
|
||||||
"which prohibits the usage of weak security in today's standards. "+
|
"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 "+
|
"of Gluetun's control so the only workaround is to allow such weaknesses "+
|
||||||
`using the OpenVPN option tls-cipher "DEFAULT:@SECLEVEL=0". `+
|
`using the OpenVPN option tls-cipher "DEFAULT:@SECLEVEL=0". `+
|
||||||
"You might want to reach to your provider so they upgrade their certificates. "+
|
"You might want to reach to your provider so they upgrade their certificates. "+
|
||||||
|
|||||||
@@ -33,12 +33,12 @@ func (v *VPN) Validate(storage Storage, ipv6Supported bool) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if v.Type == vpn.OpenVPN {
|
if v.Type == vpn.OpenVPN {
|
||||||
err := v.OpenVPN.validate(*v.Provider.Name)
|
err := v.OpenVPN.validate(v.Provider.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("OpenVPN settings: %w", err)
|
return fmt.Errorf("OpenVPN settings: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err := v.Wireguard.validate(*v.Provider.Name, ipv6Supported)
|
err := v.Wireguard.validate(v.Provider.Name, ipv6Supported)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Wireguard settings: %w", err)
|
return fmt.Errorf("Wireguard settings: %w", err)
|
||||||
}
|
}
|
||||||
@@ -73,8 +73,8 @@ func (v *VPN) OverrideWith(other VPN) {
|
|||||||
func (v *VPN) setDefaults() {
|
func (v *VPN) setDefaults() {
|
||||||
v.Type = gosettings.DefaultString(v.Type, vpn.OpenVPN)
|
v.Type = gosettings.DefaultString(v.Type, vpn.OpenVPN)
|
||||||
v.Provider.setDefaults()
|
v.Provider.setDefaults()
|
||||||
v.OpenVPN.setDefaults(*v.Provider.Name)
|
v.OpenVPN.setDefaults(v.Provider.Name)
|
||||||
v.Wireguard.setDefaults(*v.Provider.Name)
|
v.Wireguard.setDefaults(v.Provider.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v VPN) String() string {
|
func (v VPN) String() string {
|
||||||
|
|||||||
25
internal/configuration/sources/env/provider.go
vendored
25
internal/configuration/sources/env/provider.go
vendored
@@ -12,12 +12,8 @@ import (
|
|||||||
|
|
||||||
func (s *Source) readProvider(vpnType string) (provider settings.Provider, err error) {
|
func (s *Source) readProvider(vpnType string) (provider settings.Provider, err error) {
|
||||||
provider.Name = s.readVPNServiceProvider(vpnType)
|
provider.Name = s.readVPNServiceProvider(vpnType)
|
||||||
var providerName string
|
|
||||||
if provider.Name != nil {
|
|
||||||
providerName = *provider.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
provider.ServerSelection, err = s.readServerSelection(providerName, vpnType)
|
provider.ServerSelection, err = s.readServerSelection(provider.Name, vpnType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return provider, fmt.Errorf("server selection: %w", err)
|
return provider, fmt.Errorf("server selection: %w", err)
|
||||||
}
|
}
|
||||||
@@ -30,21 +26,20 @@ func (s *Source) readProvider(vpnType string) (provider settings.Provider, err e
|
|||||||
return provider, nil
|
return provider, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Source) readVPNServiceProvider(vpnType string) (vpnProviderPtr *string) {
|
func (s *Source) readVPNServiceProvider(vpnType string) (vpnProvider string) {
|
||||||
valuePtr := s.env.Get("VPN_SERVICE_PROVIDER", env.RetroKeys("VPNSP"))
|
vpnProvider = s.env.String("VPN_SERVICE_PROVIDER", env.RetroKeys("VPNSP"))
|
||||||
if valuePtr == nil {
|
if vpnProvider == "" {
|
||||||
if vpnType != vpn.Wireguard && s.env.Get("OPENVPN_CUSTOM_CONFIG") != nil {
|
if vpnType != vpn.Wireguard && s.env.Get("OPENVPN_CUSTOM_CONFIG") != nil {
|
||||||
// retro compatibility
|
// retro compatibility
|
||||||
return ptrTo(providers.Custom)
|
return providers.Custom
|
||||||
}
|
}
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
value := *valuePtr
|
vpnProvider = strings.ToLower(vpnProvider)
|
||||||
value = strings.ToLower(value)
|
if vpnProvider == "pia" { // retro compatibility
|
||||||
if value == "pia" { // retro compatibility
|
return providers.PrivateInternetAccess
|
||||||
return ptrTo(providers.PrivateInternetAccess)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ptrTo(value)
|
return vpnProvider
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
|||||||
for ctx.Err() == nil {
|
for ctx.Err() == nil {
|
||||||
settings := l.state.GetSettings()
|
settings := l.state.GetSettings()
|
||||||
|
|
||||||
providerConf := l.providers.Get(*settings.Provider.Name)
|
providerConf := l.providers.Get(settings.Provider.Name)
|
||||||
|
|
||||||
portForwarder := getPortForwarder(providerConf, l.providers,
|
portForwarder := getPortForwarder(providerConf, l.providers,
|
||||||
*settings.Provider.PortForwarding.Provider)
|
*settings.Provider.PortForwarding.Provider)
|
||||||
|
|||||||
Reference in New Issue
Block a user