Cyberghost: read client key as file, see #179
This commit is contained in:
15
README.md
15
README.md
@@ -195,17 +195,20 @@ Want more testing? ▶ [see the Wiki](https://github.com/qdm12/private-internet-
|
|||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| 🏁 `USER` | | | Your username |
|
| 🏁 `USER` | | | Your username |
|
||||||
| 🏁 `PASSWORD` | | | Your password |
|
| 🏁 `PASSWORD` | | | Your password |
|
||||||
| 🏁 `CLIENT_KEY` | | | Your device client key content on a single line, **see below** |
|
| 🏁 `CLIENT_KEY` | | | Your device client key content, **see below** |
|
||||||
| `REGION` | `Austria` | One of the [Cyberghost countries](https://github.com/qdm12/private-internet-access-docker/wiki/Cyberghost#regions) | VPN server country |
|
| `REGION` | `Austria` | One of the [Cyberghost countries](https://github.com/qdm12/private-internet-access-docker/wiki/Cyberghost#regions) | VPN server country |
|
||||||
| `CYBERGHOST_GROUP` | `Premium UDP Europe` | One of the [server groups](https://github.com/qdm12/private-internet-access-docker/wiki/Cyberghost#server-groups) | Server group |
|
| `CYBERGHOST_GROUP` | `Premium UDP Europe` | One of the [server groups](https://github.com/qdm12/private-internet-access-docker/wiki/Cyberghost#server-groups) | Server group |
|
||||||
|
|
||||||
To make `CLIENT_KEY`, run the following using your client.key file:
|
To specify your client key, you can either:
|
||||||
|
|
||||||
```sh
|
- Bind mount it at `/files/client.key`, for example with `-v /yourpath/client.key:/files/client.key:ro`
|
||||||
docker run -it --rm -v /yourpath/client.key:/client.key:ro qmcgaw/private-internet-access clientkey
|
- Convert it to a single line value using:
|
||||||
```
|
|
||||||
|
|
||||||
And use the line produced as the environment variable `CLIENT_KEY`
|
```sh
|
||||||
|
docker run -it --rm -v /yourpath/client.key:/files/client.key:ro qmcgaw/private-internet-access clientkey
|
||||||
|
```
|
||||||
|
|
||||||
|
And use the line produced as the value for the environment variable `CLIENT_KEY`.
|
||||||
|
|
||||||
- VyprVPN
|
- VyprVPN
|
||||||
|
|
||||||
|
|||||||
@@ -58,11 +58,6 @@ func _main(background context.Context, args []string) int {
|
|||||||
logger := createLogger()
|
logger := createLogger()
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
fatalOnError := makeFatalOnError(logger, cancel, wg)
|
fatalOnError := makeFatalOnError(logger, cancel, wg)
|
||||||
paramsReader := params.NewReader(logger)
|
|
||||||
fmt.Println(gluetunLogging.Splash(
|
|
||||||
paramsReader.GetVersion(),
|
|
||||||
paramsReader.GetVcsRef(),
|
|
||||||
paramsReader.GetBuildDate()))
|
|
||||||
|
|
||||||
client := network.NewClient(15 * time.Second)
|
client := network.NewClient(15 * time.Second)
|
||||||
// Create configurators
|
// Create configurators
|
||||||
@@ -76,6 +71,12 @@ func _main(background context.Context, args []string) int {
|
|||||||
shadowsocksConf := shadowsocks.NewConfigurator(fileManager, logger)
|
shadowsocksConf := shadowsocks.NewConfigurator(fileManager, logger)
|
||||||
streamMerger := command.NewStreamMerger()
|
streamMerger := command.NewStreamMerger()
|
||||||
|
|
||||||
|
paramsReader := params.NewReader(logger, fileManager)
|
||||||
|
fmt.Println(gluetunLogging.Splash(
|
||||||
|
paramsReader.GetVersion(),
|
||||||
|
paramsReader.GetVcsRef(),
|
||||||
|
paramsReader.GetBuildDate()))
|
||||||
|
|
||||||
printVersions(ctx, logger, map[string]func(ctx context.Context) (string, error){
|
printVersions(ctx, logger, map[string]func(ctx context.Context) (string, error){
|
||||||
"OpenVPN": ovpnConf.Version,
|
"OpenVPN": ovpnConf.Version,
|
||||||
"Unbound": dnsConf.Version,
|
"Unbound": dnsConf.Version,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
func ClientKey(args []string) error {
|
func ClientKey(args []string) error {
|
||||||
flagSet := flag.NewFlagSet("clientkey", flag.ExitOnError)
|
flagSet := flag.NewFlagSet("clientkey", flag.ExitOnError)
|
||||||
filepath := flagSet.String("path", "/client.key", "file path to the client.key file")
|
filepath := flagSet.String("path", "/files/client.key", "file path to the client.key file")
|
||||||
if err := flagSet.Parse(args); err != nil {
|
if err := flagSet.Parse(args); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -27,6 +27,7 @@ func ClientKey(args []string) error {
|
|||||||
}
|
}
|
||||||
s := string(data)
|
s := string(data)
|
||||||
s = strings.ReplaceAll(s, "\n", "")
|
s = strings.ReplaceAll(s, "\n", "")
|
||||||
|
s = strings.ReplaceAll(s, "\r", "")
|
||||||
s = strings.TrimPrefix(s, "-----BEGIN PRIVATE KEY-----")
|
s = strings.TrimPrefix(s, "-----BEGIN PRIVATE KEY-----")
|
||||||
s = strings.TrimSuffix(s, "-----END PRIVATE KEY-----")
|
s = strings.TrimSuffix(s, "-----END PRIVATE KEY-----")
|
||||||
fmt.Println(s)
|
fmt.Println(s)
|
||||||
@@ -48,7 +49,7 @@ func OpenvpnConfig() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
paramsReader := params.NewReader(logger)
|
paramsReader := params.NewReader(logger, files.NewFileManager())
|
||||||
allSettings, err := settings.GetAllSettings(paramsReader)
|
allSettings, err := settings.GetAllSettings(paramsReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package params
|
package params
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
libparams "github.com/qdm12/golibs/params"
|
libparams "github.com/qdm12/golibs/params"
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||||
)
|
)
|
||||||
@@ -22,5 +24,18 @@ func (p *reader) GetCyberghostRegion() (region string, err error) {
|
|||||||
// GetCyberghostClientKey obtains the one line client key to use for openvpn from the
|
// GetCyberghostClientKey obtains the one line client key to use for openvpn from the
|
||||||
// environment variable CLIENT_KEY
|
// environment variable CLIENT_KEY
|
||||||
func (p *reader) GetCyberghostClientKey() (clientKey string, err error) {
|
func (p *reader) GetCyberghostClientKey() (clientKey string, err error) {
|
||||||
return p.envParams.GetEnv("CLIENT_KEY", libparams.Compulsory(), libparams.CaseSensitiveValue())
|
clientKey, err = p.envParams.GetEnv("CLIENT_KEY", libparams.CaseSensitiveValue())
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
} else if len(clientKey) > 0 {
|
||||||
|
return clientKey, nil
|
||||||
|
}
|
||||||
|
content, err := p.fileManager.ReadFile("/files/client.key")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
s := string(content)
|
||||||
|
s = strings.ReplaceAll(s, "\n", "")
|
||||||
|
s = strings.ReplaceAll(s, "\r", "")
|
||||||
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/qdm12/golibs/files"
|
||||||
"github.com/qdm12/golibs/logging"
|
"github.com/qdm12/golibs/logging"
|
||||||
libparams "github.com/qdm12/golibs/params"
|
libparams "github.com/qdm12/golibs/params"
|
||||||
"github.com/qdm12/golibs/verification"
|
"github.com/qdm12/golibs/verification"
|
||||||
@@ -101,20 +102,22 @@ type Reader interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type reader struct {
|
type reader struct {
|
||||||
envParams libparams.EnvParams
|
envParams libparams.EnvParams
|
||||||
logger logging.Logger
|
logger logging.Logger
|
||||||
verifier verification.Verifier
|
verifier verification.Verifier
|
||||||
unsetEnv func(key string) error
|
unsetEnv func(key string) error
|
||||||
|
fileManager files.FileManager
|
||||||
}
|
}
|
||||||
|
|
||||||
// Newreader returns a paramsReadeer object to read parameters from
|
// Newreader returns a paramsReadeer object to read parameters from
|
||||||
// environment variables
|
// environment variables
|
||||||
func NewReader(logger logging.Logger) Reader {
|
func NewReader(logger logging.Logger, fileManager files.FileManager) Reader {
|
||||||
return &reader{
|
return &reader{
|
||||||
envParams: libparams.NewEnvParams(),
|
envParams: libparams.NewEnvParams(),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
verifier: verification.NewVerifier(),
|
verifier: verification.NewVerifier(),
|
||||||
unsetEnv: os.Unsetenv,
|
unsetEnv: os.Unsetenv,
|
||||||
|
fileManager: fileManager,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user