2020-06-02 23:03:18 +00:00
|
|
|
package cli
|
2020-02-08 21:50:17 +00:00
|
|
|
|
|
|
|
|
import (
|
2020-06-13 10:43:47 -04:00
|
|
|
"flag"
|
2020-02-08 21:50:17 +00:00
|
|
|
"fmt"
|
2020-06-13 10:43:47 -04:00
|
|
|
"strings"
|
|
|
|
|
|
2020-06-05 19:32:12 -04:00
|
|
|
"net"
|
2020-06-13 10:43:47 -04:00
|
|
|
|
|
|
|
|
"github.com/qdm12/golibs/files"
|
2020-07-13 23:43:26 +00:00
|
|
|
"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"
|
2020-02-08 21:50:17 +00:00
|
|
|
)
|
|
|
|
|
|
2020-06-13 10:43:47 -04:00
|
|
|
func ClientKey(args []string) error {
|
|
|
|
|
flagSet := flag.NewFlagSet("clientkey", flag.ExitOnError)
|
2020-07-14 00:17:31 +00:00
|
|
|
filepath := flagSet.String("path", "/files/client.key", "file path to the client.key file")
|
2020-06-13 10:43:47 -04:00
|
|
|
if err := flagSet.Parse(args); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
fileManager := files.NewFileManager()
|
|
|
|
|
data, err := fileManager.ReadFile(*filepath)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
s := string(data)
|
|
|
|
|
s = strings.ReplaceAll(s, "\n", "")
|
2020-07-14 00:17:31 +00:00
|
|
|
s = strings.ReplaceAll(s, "\r", "")
|
2020-06-13 10:43:47 -04:00
|
|
|
s = strings.TrimPrefix(s, "-----BEGIN PRIVATE KEY-----")
|
|
|
|
|
s = strings.TrimSuffix(s, "-----END PRIVATE KEY-----")
|
|
|
|
|
fmt.Println(s)
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
2020-02-08 21:50:17 +00:00
|
|
|
func HealthCheck() error {
|
2020-06-10 01:25:10 +00:00
|
|
|
ips, err := net.LookupIP("github.com")
|
2020-06-03 21:52:44 -04:00
|
|
|
if err != nil {
|
2020-06-10 01:25:10 +00:00
|
|
|
return fmt.Errorf("cannot resolve github.com (%s)", err)
|
|
|
|
|
} else if len(ips) == 0 {
|
|
|
|
|
return fmt.Errorf("resolved no IP addresses for github.com")
|
2020-02-08 21:50:17 +00:00
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2020-07-13 23:43:26 +00:00
|
|
|
|
|
|
|
|
func OpenvpnConfig() error {
|
|
|
|
|
logger, err := logging.NewLogger(logging.ConsoleEncoding, logging.InfoLevel, -1)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2020-07-14 00:17:31 +00:00
|
|
|
paramsReader := params.NewReader(logger, files.NewFileManager())
|
2020-07-13 23:43:26 +00:00
|
|
|
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
|
|
|
|
|
}
|