2020-04-12 20:05:28 +00:00
|
|
|
package settings
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"github.com/qdm12/private-internet-access-docker/internal/params"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// OpenVPN contains settings to configure the OpenVPN client
|
|
|
|
|
type OpenVPN struct {
|
2020-06-13 14:08:29 -04:00
|
|
|
User string
|
|
|
|
|
Password string
|
|
|
|
|
Verbosity int
|
|
|
|
|
Root bool
|
|
|
|
|
Cipher string
|
|
|
|
|
Auth string
|
2020-04-12 20:05:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetOpenVPNSettings obtains the OpenVPN settings using the params functions
|
2020-06-18 18:05:51 +00:00
|
|
|
func GetOpenVPNSettings(paramsReader params.Reader, passwordRequired bool) (settings OpenVPN, err error) {
|
2020-06-13 14:08:29 -04:00
|
|
|
settings.User, err = paramsReader.GetUser()
|
2020-04-12 20:05:28 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
2020-06-13 14:08:29 -04:00
|
|
|
// Remove spaces in user ID to simplify user's life, thanks @JeordyR
|
|
|
|
|
settings.User = strings.ReplaceAll(settings.User, " ", "")
|
2020-06-18 18:05:51 +00:00
|
|
|
settings.Password, err = paramsReader.GetPassword(passwordRequired)
|
2020-04-12 20:05:28 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
2020-06-13 14:08:29 -04:00
|
|
|
settings.Verbosity, err = paramsReader.GetOpenVPNVerbosity()
|
2020-04-12 20:05:28 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
2020-06-13 14:08:29 -04:00
|
|
|
settings.Root, err = paramsReader.GetOpenVPNRoot()
|
2020-04-12 20:05:28 +00:00
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
|
|
|
|
settings.Cipher, err = paramsReader.GetOpenVPNCipher()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
|
|
|
|
settings.Auth, err = paramsReader.GetOpenVPNAuth()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return settings, err
|
|
|
|
|
}
|
|
|
|
|
return settings, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (o *OpenVPN) String() string {
|
|
|
|
|
runAsRoot := "no"
|
|
|
|
|
if o.Root {
|
|
|
|
|
runAsRoot = "yes"
|
|
|
|
|
}
|
|
|
|
|
settingsList := []string{
|
|
|
|
|
"OpenVPN settings:",
|
2020-06-13 14:08:29 -04:00
|
|
|
"User: [redacted]",
|
|
|
|
|
"Password: [redacted]",
|
2020-04-12 20:05:28 +00:00
|
|
|
"Verbosity level: " + fmt.Sprintf("%d", o.Verbosity),
|
|
|
|
|
"Run as root: " + runAsRoot,
|
2020-06-13 14:08:29 -04:00
|
|
|
}
|
|
|
|
|
if len(o.Cipher) > 0 {
|
|
|
|
|
settingsList = append(settingsList, "Custom cipher: "+o.Cipher)
|
|
|
|
|
}
|
|
|
|
|
if len(o.Auth) > 0 {
|
|
|
|
|
settingsList = append(settingsList, "Custom auth algorithm: "+o.Auth)
|
2020-04-12 20:05:28 +00:00
|
|
|
}
|
|
|
|
|
return strings.Join(settingsList, "\n|--")
|
|
|
|
|
}
|