- Use `RetroKeys` option with env.* method calls - Use `CSV*` typed methods - Inject `handleDeprecatedKey` function
78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package env
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/qdm12/gluetun/internal/configuration/settings"
|
|
"github.com/qdm12/gosettings/sources/env"
|
|
)
|
|
|
|
func (s *Source) readOpenVPN() (
|
|
openVPN settings.OpenVPN, err error) {
|
|
defer func() {
|
|
err = unsetEnvKeys([]string{"OPENVPN_KEY", "OPENVPN_CERT",
|
|
"OPENVPN_KEY_PASSPHRASE", "OPENVPN_ENCRYPTED_KEY"}, err)
|
|
}()
|
|
|
|
openVPN.Version = s.env.String("OPENVPN_VERSION")
|
|
openVPN.User = s.env.Get("OPENVPN_USER",
|
|
env.RetroKeys("USER"), env.ForceLowercase(false))
|
|
openVPN.Password = s.env.Get("OPENVPN_PASSWORD",
|
|
env.RetroKeys("PASSWORD"), env.ForceLowercase(false))
|
|
openVPN.ConfFile = s.env.Get("OPENVPN_CUSTOM_CONFIG")
|
|
openVPN.Ciphers = s.env.CSV("OPENVPN_CIPHERS", env.RetroKeys("OPENVPN_CIPHER"))
|
|
openVPN.Auth = s.env.Get("OPENVPN_AUTH")
|
|
openVPN.Cert = s.env.Get("OPENVPN_CERT", env.ForceLowercase(false))
|
|
openVPN.Key = s.env.Get("OPENVPN_KEY", env.ForceLowercase(false))
|
|
openVPN.EncryptedKey = s.env.Get("OPENVPN_ENCRYPTED_KEY", env.ForceLowercase(false))
|
|
openVPN.KeyPassphrase = s.env.Get("OPENVPN_KEY_PASSPHRASE", env.ForceLowercase(false))
|
|
|
|
openVPN.PIAEncPreset = s.readPIAEncryptionPreset()
|
|
|
|
openVPN.MSSFix, err = s.env.Uint16Ptr("OPENVPN_MSSFIX")
|
|
if err != nil {
|
|
return openVPN, err
|
|
}
|
|
|
|
openVPN.Interface = s.env.String("VPN_INTERFACE",
|
|
env.RetroKeys("OPENVPN_INTERFACE"), env.ForceLowercase(false))
|
|
|
|
openVPN.ProcessUser, err = s.readOpenVPNProcessUser()
|
|
if err != nil {
|
|
return openVPN, err
|
|
}
|
|
|
|
openVPN.Verbosity, err = s.env.IntPtr("OPENVPN_VERBOSITY")
|
|
if err != nil {
|
|
return openVPN, err
|
|
}
|
|
|
|
flagsPtr := s.env.Get("OPENVPN_FLAGS", env.ForceLowercase(false))
|
|
if flagsPtr != nil {
|
|
openVPN.Flags = strings.Fields(*flagsPtr)
|
|
}
|
|
|
|
return openVPN, nil
|
|
}
|
|
|
|
func (s *Source) readPIAEncryptionPreset() (presetPtr *string) {
|
|
return s.env.Get(
|
|
"PRIVATE_INTERNET_ACCESS_OPENVPN_ENCRYPTION_PRESET",
|
|
env.RetroKeys("ENCRYPTION", "PIA_ENCRYPTION"))
|
|
}
|
|
|
|
func (s *Source) readOpenVPNProcessUser() (processUser string, err error) {
|
|
value, err := s.env.BoolPtr("OPENVPN_ROOT") // Retro-compatibility
|
|
if err != nil {
|
|
return "", err
|
|
} else if value != nil {
|
|
if *value {
|
|
return "root", nil
|
|
}
|
|
const defaultNonRootUser = "nonrootuser"
|
|
return defaultNonRootUser, nil
|
|
}
|
|
|
|
return s.env.String("OPENVPN_PROCESS_USER"), nil
|
|
}
|