Add openvpnconfig command, for #179

This commit is contained in:
Quentin McGaw
2020-07-13 23:43:26 +00:00
parent 2f955e0190
commit e3a677c22b
2 changed files with 35 additions and 0 deletions

View File

@@ -42,6 +42,8 @@ func _main(background context.Context, args []string) int {
err = cli.HealthCheck() err = cli.HealthCheck()
case "clientkey": case "clientkey":
err = cli.ClientKey(args[2:]) err = cli.ClientKey(args[2:])
case "openvpnconfig":
err = cli.OpenvpnConfig()
default: default:
err = fmt.Errorf("command %q is unknown", args[1]) err = fmt.Errorf("command %q is unknown", args[1])
} }

View File

@@ -8,6 +8,10 @@ import (
"net" "net"
"github.com/qdm12/golibs/files" "github.com/qdm12/golibs/files"
"github.com/qdm12/golibs/logging"
"github.com/qdm12/private-internet-access-docker/internal/params"
"github.com/qdm12/private-internet-access-docker/internal/provider"
"github.com/qdm12/private-internet-access-docker/internal/settings"
) )
func ClientKey(args []string) error { func ClientKey(args []string) error {
@@ -38,3 +42,32 @@ func HealthCheck() error {
} }
return nil return nil
} }
func OpenvpnConfig() error {
logger, err := logging.NewLogger(logging.ConsoleEncoding, logging.InfoLevel, -1)
if err != nil {
return err
}
paramsReader := params.NewReader(logger)
allSettings, err := settings.GetAllSettings(paramsReader)
if err != nil {
return err
}
providerConf := provider.New(allSettings.OpenVPN.Provider.Name)
connections, err := providerConf.GetOpenVPNConnections(allSettings.OpenVPN.Provider.ServerSelection)
if err != nil {
return err
}
lines := providerConf.BuildConf(
connections,
allSettings.OpenVPN.Verbosity,
allSettings.System.UID,
allSettings.System.GID,
allSettings.OpenVPN.Root,
allSettings.OpenVPN.Cipher,
allSettings.OpenVPN.Auth,
allSettings.OpenVPN.Provider.ExtraConfigOptions,
)
fmt.Println(strings.Join(lines, "\n"))
return nil
}