@zerops/zcli 1.0.0 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -7
- package/{tools/npm → utils}/binary.js +8 -4
- package/{tools/npm → utils}/install.js +0 -0
- package/{tools/npm → utils}/run.js +0 -0
- package/{tools/npm → utils}/uninstall.js +0 -0
- package/.github/workflows/master.yml +0 -36
- package/.github/workflows/tag.yml +0 -67
- package/.golangci.yaml +0 -58
- package/LICENSE +0 -1
- package/README.md +0 -2
- package/bin/.gitignore +0 -2
- package/cmd/deploy.go +0 -65
- package/cmd/di.go +0 -65
- package/cmd/login.go +0 -48
- package/cmd/root.go +0 -70
- package/cmd/startVpn.go +0 -59
- package/cmd/stopVpn.go +0 -36
- package/go.mod +0 -21
- package/go.sum +0 -230
- package/main.go +0 -13
- package/src/command/deploy/handler.go +0 -43
- package/src/command/deploy/handler_checkProcess.go +0 -38
- package/src/command/deploy/handler_run.go +0 -126
- package/src/command/login/handler.go +0 -128
- package/src/command/login/handler_parseRestApiError.go +0 -48
- package/src/command/startVpn/handler.go +0 -150
- package/src/command/startVpn/handler_clean_linux.go +0 -24
- package/src/command/startVpn/handler_clean_linux_macos.go +0 -19
- package/src/command/startVpn/handler_generateKeys.go +0 -26
- package/src/command/startVpn/handler_isVpnAlive.go +0 -23
- package/src/command/startVpn/handler_setVpn_linux.go +0 -97
- package/src/command/startVpn/handler_setVpn_macos.go +0 -98
- package/src/command/startVpn/handler_startVpnClient.go +0 -27
- package/src/command/stopVpn/handler.go +0 -55
- package/src/command/stopVpn/handler_clean_linux.go +0 -24
- package/src/command/stopVpn/handler_clean_linux_macos.go +0 -19
- package/src/command/userInfo/handler.go +0 -21
- package/src/helpers/cmdRunner/run.go +0 -40
- package/src/helpers/grpcErrors.go +0 -40
- package/src/helpers/ip.go +0 -11
- package/src/service/certReader/handler.go +0 -97
- package/src/service/httpClient/handler.go +0 -90
- package/src/service/logger/handler.go +0 -32
- package/src/service/logger/interface.go +0 -8
- package/src/service/params/handler.go +0 -111
- package/src/service/storage/handler.go +0 -71
- package/src/service/sudoers/handler.go +0 -49
- package/src/service/tlsConfig/handler.go +0 -36
- package/src/service/zipClient/handler.go +0 -144
- package/src/service/zipClient/test/var/www/dir/file2.1.txt +0 -1
- package/src/service/zipClient/test/var/www/dir/file2.2.txt +0 -0
- package/src/service/zipClient/test/var/www/dir/subDir/file3.1.txt +0 -0
- package/src/service/zipClient/test/var/www/dir/subDir/file3.2.txt +0 -0
- package/src/service/zipClient/test/var/www/file1.1.txt +0 -0
- package/src/service/zipClient/test/zip_test.go +0 -289
- package/src/zeropsApiProtocol/build-pb +0 -13
- package/src/zeropsApiProtocol/build-pb-generate.go +0 -3
- package/src/zeropsApiProtocol/protocol_extra.go +0 -19
- package/src/zeropsApiProtocol/zeropsApiProtocol.pb.go +0 -5518
- package/src/zeropsApiProtocol/zeropsApiProtocol.proto +0 -819
- package/src/zeropsVpnProtocol/build-pb +0 -13
- package/src/zeropsVpnProtocol/build-pb-generate.go +0 -3
- package/src/zeropsVpnProtocol/protocol_extra.go +0 -45
- package/src/zeropsVpnProtocol/zeropsVpnProtocol.pb.go +0 -578
- package/src/zeropsVpnProtocol/zeropsVpnProtocol.proto +0 -58
- package/tools/gomodrun.go +0 -60
- package/tools/install.sh +0 -40
- package/tools/npm/match-version.js +0 -12
package/package.json
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerops/zcli",
|
|
3
|
-
"version": "
|
|
4
|
-
"main": "
|
|
3
|
+
"version": "v8.0.1",
|
|
4
|
+
"main": "./utils/binary.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"binary-install": "
|
|
8
|
+
"@cloudflare/binary-install": "0.2.0",
|
|
9
|
+
"@octokit/core": "3.5.1",
|
|
9
10
|
"actions-toolkit": "^2.2.0",
|
|
10
11
|
"yargs": "^15.3.1"
|
|
11
12
|
},
|
|
12
13
|
"devDependencies": {
|
|
13
|
-
"standard": "^
|
|
14
|
+
"standard": "^16.0.4"
|
|
14
15
|
},
|
|
15
16
|
"bin": {
|
|
16
|
-
"zcli": "
|
|
17
|
+
"zcli": "utils/run.js"
|
|
17
18
|
},
|
|
19
|
+
"files": [
|
|
20
|
+
"/utils",
|
|
21
|
+
"package.json"
|
|
22
|
+
],
|
|
18
23
|
"scripts": {
|
|
19
|
-
"postinstall": "./
|
|
20
|
-
"preuninstall": "./
|
|
24
|
+
"postinstall": "node ./utils/install.js",
|
|
25
|
+
"preuninstall": "node ./utils/uninstall.js"
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
const { Binary } = require("binary-install");
|
|
1
|
+
const { Binary } = require("@cloudflare/binary-install");
|
|
2
2
|
const os = require("os");
|
|
3
3
|
|
|
4
4
|
function getPlatform() {
|
|
5
5
|
const type = os.type();
|
|
6
6
|
const arch = os.arch();
|
|
7
|
-
|
|
8
7
|
if (type === "Linux" && arch === "x64") return "linux-amd64";
|
|
9
8
|
if (type === "Linux" && arch === "x86") return "linux-i386";
|
|
10
9
|
if (type === "Darwin" && arch === "x64") return "darwin-amd64";
|
|
11
|
-
|
|
10
|
+
if (type === "Darwin" && arch === "arm64") return "darwin-arm64";
|
|
11
|
+
if (type === "Windows_NT" && arch === "x64") return "win-x64.exe";
|
|
12
12
|
throw new Error(`Unsupported platform: ${type} ${arch}`);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
function getBinary() {
|
|
16
16
|
const platform_arch = getPlatform();
|
|
17
|
-
const
|
|
17
|
+
const version = require("../package.json").version;
|
|
18
|
+
const compatibleVersion = version.startsWith('v') ? version : `v${version}`;
|
|
19
|
+
const url = `https://github.com/zeropsio/zcli/releases/download/${compatibleVersion}/zcli-${platform_arch}-npm.tar.gz`;
|
|
18
20
|
const name = `zcli-${platform_arch}`;
|
|
21
|
+
|
|
19
22
|
return new Binary(url, { name });
|
|
20
23
|
}
|
|
24
|
+
|
|
21
25
|
const run = () => {
|
|
22
26
|
const binary = getBinary();
|
|
23
27
|
binary.run();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
name: Master
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [ master ]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [ master ]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
|
|
11
|
-
build:
|
|
12
|
-
name: Build
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
steps:
|
|
15
|
-
|
|
16
|
-
- name: Set up Go 1.x
|
|
17
|
-
uses: actions/setup-go@v2
|
|
18
|
-
with:
|
|
19
|
-
go-version: ^1.14
|
|
20
|
-
id: go
|
|
21
|
-
|
|
22
|
-
- name: Check out code into the Go module directory
|
|
23
|
-
uses: actions/checkout@v2
|
|
24
|
-
|
|
25
|
-
- name: Get dependencies
|
|
26
|
-
run: |
|
|
27
|
-
export GOPATH=$HOME/go
|
|
28
|
-
./tools/install.sh
|
|
29
|
-
|
|
30
|
-
- name: Build
|
|
31
|
-
run: go build -v .
|
|
32
|
-
|
|
33
|
-
- name: Test
|
|
34
|
-
run: go test -v .
|
|
35
|
-
|
|
36
|
-
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
name: Upload build asset
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
build:
|
|
9
|
-
name: Upload build asset for ${{ matrix.os }}
|
|
10
|
-
runs-on: ${{ matrix.os }}
|
|
11
|
-
strategy:
|
|
12
|
-
matrix:
|
|
13
|
-
include:
|
|
14
|
-
- os: ubuntu-latest
|
|
15
|
-
buildCmd: env GOOS=linux GOARCH=amd64 go build -o zcli-linux ./main.go
|
|
16
|
-
file: zcli-linux
|
|
17
|
-
args:
|
|
18
|
-
strip: true
|
|
19
|
-
- os: macos-latest
|
|
20
|
-
buildCmd: env GOOS=darwin GOARCH=amd64 go build -o zcli-mac ./main.go
|
|
21
|
-
file: zcli-mac
|
|
22
|
-
args:
|
|
23
|
-
strip: false
|
|
24
|
-
|
|
25
|
-
steps:
|
|
26
|
-
|
|
27
|
-
- name: Checkout code
|
|
28
|
-
uses: actions/checkout@v2
|
|
29
|
-
|
|
30
|
-
- name: Get dependencies
|
|
31
|
-
run: |
|
|
32
|
-
export GOPATH=$HOME/go
|
|
33
|
-
./tools/install.sh
|
|
34
|
-
|
|
35
|
-
- name: Build
|
|
36
|
-
run: ${{ matrix.buildCmd }}
|
|
37
|
-
|
|
38
|
-
- name: Compress binary
|
|
39
|
-
uses: svenstaro/upx-action@v1-release
|
|
40
|
-
with:
|
|
41
|
-
file: ./${{ matrix.file }}
|
|
42
|
-
args: ${{ matrix.args }}
|
|
43
|
-
strip: ${{ matrix.strip }}
|
|
44
|
-
|
|
45
|
-
- name: Upload asset
|
|
46
|
-
uses: actions/upload-release-asset@v1
|
|
47
|
-
env:
|
|
48
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
49
|
-
with:
|
|
50
|
-
upload_url: ${{ github.event.release.upload_url }}
|
|
51
|
-
asset_path: ./${{ matrix.file }}
|
|
52
|
-
asset_name: ${{ matrix.file }}
|
|
53
|
-
asset_content_type: application/octet-stream
|
|
54
|
-
|
|
55
|
-
publish-npm:
|
|
56
|
-
needs: build
|
|
57
|
-
runs-on: ubuntu-latest
|
|
58
|
-
steps:
|
|
59
|
-
- uses: actions/checkout@v2
|
|
60
|
-
- uses: actions/setup-node@v1
|
|
61
|
-
with:
|
|
62
|
-
node-version: 12
|
|
63
|
-
registry-url: https://registry.npmjs.org/
|
|
64
|
-
- run: npm ci
|
|
65
|
-
- run: npm publish --access=public
|
|
66
|
-
env:
|
|
67
|
-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
package/.golangci.yaml
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
concurrency: 16
|
|
2
|
-
run:
|
|
3
|
-
deadline: 10m
|
|
4
|
-
issues-exit-code: 1
|
|
5
|
-
tests: true
|
|
6
|
-
|
|
7
|
-
output:
|
|
8
|
-
format: colored-line-number
|
|
9
|
-
|
|
10
|
-
linters-settings:
|
|
11
|
-
gocritic:
|
|
12
|
-
disabled-checks:
|
|
13
|
-
- captLocal # CIDR, IpV6, ....
|
|
14
|
-
- unlambda # falsePositive for function passed to defer
|
|
15
|
-
godox:
|
|
16
|
-
keywords:
|
|
17
|
-
- FIXME
|
|
18
|
-
|
|
19
|
-
issues:
|
|
20
|
-
max-same-issues: 0
|
|
21
|
-
|
|
22
|
-
exclude-rules:
|
|
23
|
-
|
|
24
|
-
# Exclude some staticcheck messages
|
|
25
|
-
- linters:
|
|
26
|
-
- staticcheck
|
|
27
|
-
text: "SA4004:" #https://staticcheck.io/docs/checks#SA4004 The loop exits unconditionally after one iteration
|
|
28
|
-
|
|
29
|
-
linters:
|
|
30
|
-
enable:
|
|
31
|
-
- scopelint
|
|
32
|
-
- govet
|
|
33
|
-
- ineffassign
|
|
34
|
-
- varcheck
|
|
35
|
-
- unused
|
|
36
|
-
- deadcode
|
|
37
|
-
- bodyclose
|
|
38
|
-
- structcheck
|
|
39
|
-
- staticcheck
|
|
40
|
-
- godox
|
|
41
|
-
|
|
42
|
-
# high priority
|
|
43
|
-
# - rowserrcheck
|
|
44
|
-
# - errcheck
|
|
45
|
-
|
|
46
|
-
# normal priority
|
|
47
|
-
# - prealloc - jednotky
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
# low priority
|
|
51
|
-
# - gosimple
|
|
52
|
-
# - gosec
|
|
53
|
-
# - goconst
|
|
54
|
-
# - gocritic
|
|
55
|
-
# - nakedret
|
|
56
|
-
|
|
57
|
-
disable-all: true
|
|
58
|
-
fast: false
|
package/LICENSE
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
TODO
|
package/README.md
DELETED
package/bin/.gitignore
DELETED
package/cmd/deploy.go
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
"time"
|
|
6
|
-
|
|
7
|
-
"github.com/zerops-io/zcli/src/command/deploy"
|
|
8
|
-
"github.com/zerops-io/zcli/src/service/httpClient"
|
|
9
|
-
"github.com/zerops-io/zcli/src/service/zipClient"
|
|
10
|
-
|
|
11
|
-
"github.com/spf13/cobra"
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
func deployCmd() *cobra.Command {
|
|
15
|
-
cmd := &cobra.Command{
|
|
16
|
-
Use: "deploy projectName serviceName pathToFileOrDir [pathToFileOrDir]",
|
|
17
|
-
SilenceUsage: true,
|
|
18
|
-
Args: cobra.MinimumNArgs(3),
|
|
19
|
-
RunE: func(cmd *cobra.Command, args []string) error {
|
|
20
|
-
ctx, cancel := context.WithCancel(context.Background())
|
|
21
|
-
regSignals(cancel, logger)
|
|
22
|
-
|
|
23
|
-
certReader, err := createCertReader()
|
|
24
|
-
if err != nil {
|
|
25
|
-
return err
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
tlsConfig, err := createTlsConfig(certReader)
|
|
29
|
-
if err != nil {
|
|
30
|
-
return err
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
apiGrpcClient, closeFunc, err := createApiGrpcClient(ctx, tlsConfig)
|
|
34
|
-
if err != nil {
|
|
35
|
-
return err
|
|
36
|
-
}
|
|
37
|
-
defer closeFunc()
|
|
38
|
-
|
|
39
|
-
httpClient := httpClient.New(httpClient.Config{
|
|
40
|
-
HttpTimeout: time.Minute * 15,
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
zipClient := zipClient.New(zipClient.Config{}, logger)
|
|
44
|
-
|
|
45
|
-
return deploy.New(
|
|
46
|
-
deploy.Config{},
|
|
47
|
-
httpClient,
|
|
48
|
-
zipClient,
|
|
49
|
-
logger,
|
|
50
|
-
apiGrpcClient,
|
|
51
|
-
).Run(ctx, deploy.RunConfig{
|
|
52
|
-
ZipFilePath: params.GetString("zipFilePath"),
|
|
53
|
-
WorkingDir: params.GetString("workingDir"),
|
|
54
|
-
ProjectName: args[0],
|
|
55
|
-
ServiceStackName: args[1],
|
|
56
|
-
PathsForPacking: args[2:],
|
|
57
|
-
})
|
|
58
|
-
},
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
params.RegisterString(cmd, "workingDir", "./", "working dir, all files path are relative to this directory")
|
|
62
|
-
params.RegisterString(cmd, "zipFilePath", "", "if it's set, save final zip file")
|
|
63
|
-
|
|
64
|
-
return cmd
|
|
65
|
-
}
|
package/cmd/di.go
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
"crypto/tls"
|
|
6
|
-
"os"
|
|
7
|
-
"path"
|
|
8
|
-
|
|
9
|
-
"github.com/zerops-io/zcli/src/service/storage"
|
|
10
|
-
|
|
11
|
-
"google.golang.org/grpc"
|
|
12
|
-
"google.golang.org/grpc/credentials"
|
|
13
|
-
|
|
14
|
-
"github.com/zerops-io/zcli/src/service/sudoers"
|
|
15
|
-
|
|
16
|
-
"github.com/zerops-io/zcli/src/service/certReader"
|
|
17
|
-
"github.com/zerops-io/zcli/src/service/tlsConfig"
|
|
18
|
-
"github.com/zerops-io/zcli/src/zeropsApiProtocol"
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
func createCertReader() (*certReader.Handler, error) {
|
|
22
|
-
return certReader.New(
|
|
23
|
-
certReader.Config{
|
|
24
|
-
Token: params.GetString("token"),
|
|
25
|
-
},
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
func createSudoers() *sudoers.Handler {
|
|
30
|
-
return sudoers.New(
|
|
31
|
-
sudoers.Config{},
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
func createStorage() (*storage.Handler, error) {
|
|
36
|
-
currentDir, err := os.Getwd()
|
|
37
|
-
if err != nil {
|
|
38
|
-
return nil, err
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return storage.New(
|
|
42
|
-
storage.Config{
|
|
43
|
-
FilePath: path.Join(currentDir, "zcli.data"),
|
|
44
|
-
},
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
func createTlsConfig(certReader *certReader.Handler) (*tls.Config, error) {
|
|
49
|
-
return tlsConfig.CreateTlsConfig(
|
|
50
|
-
certReader,
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
func createApiGrpcClient(ctx context.Context, tlsConfig *tls.Config) (_ zeropsApiProtocol.ZeropsApiProtocolClient, closeFunc func(), _ error) {
|
|
55
|
-
|
|
56
|
-
connection, err := grpc.DialContext(ctx, params.GetString("grpcApiAddress"), grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig)))
|
|
57
|
-
if err != nil {
|
|
58
|
-
return nil, nil, err
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
closeFunc = func() { _ = connection.Close() }
|
|
62
|
-
|
|
63
|
-
return zeropsApiProtocol.NewZeropsApiProtocolClient(connection), closeFunc, nil
|
|
64
|
-
|
|
65
|
-
}
|
package/cmd/login.go
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
"time"
|
|
6
|
-
|
|
7
|
-
"github.com/zerops-io/zcli/src/command/login"
|
|
8
|
-
"github.com/zerops-io/zcli/src/service/httpClient"
|
|
9
|
-
|
|
10
|
-
"github.com/spf13/cobra"
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
func loginCmd() *cobra.Command {
|
|
14
|
-
cmd := &cobra.Command{
|
|
15
|
-
Use: "login",
|
|
16
|
-
SilenceUsage: true,
|
|
17
|
-
RunE: func(cmd *cobra.Command, args []string) error {
|
|
18
|
-
ctx, cancel := context.WithCancel(context.Background())
|
|
19
|
-
regSignals(cancel, logger)
|
|
20
|
-
|
|
21
|
-
storage, err := createStorage()
|
|
22
|
-
if err != nil {
|
|
23
|
-
return err
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
httpClient := httpClient.New(httpClient.Config{
|
|
27
|
-
HttpTimeout: time.Second * 10,
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
return login.New(
|
|
31
|
-
login.Config{
|
|
32
|
-
ApiAddress: params.GetString("restApiAddress"),
|
|
33
|
-
},
|
|
34
|
-
logger,
|
|
35
|
-
storage,
|
|
36
|
-
httpClient,
|
|
37
|
-
).Run(ctx, login.RunConfig{
|
|
38
|
-
ZeropsLogin: params.GetString("zeropsLogin"),
|
|
39
|
-
ZeropsPassword: params.GetString("zeropsPassword"),
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
params.RegisterString(cmd, "zeropsLogin", "", "zerops account login")
|
|
45
|
-
params.RegisterString(cmd, "zeropsPassword", "", "zerops account password")
|
|
46
|
-
|
|
47
|
-
return cmd
|
|
48
|
-
}
|
package/cmd/root.go
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"os"
|
|
5
|
-
"os/signal"
|
|
6
|
-
"syscall"
|
|
7
|
-
|
|
8
|
-
"github.com/spf13/cobra"
|
|
9
|
-
loggerPackage "github.com/zerops-io/zcli/src/service/logger"
|
|
10
|
-
paramsPackage "github.com/zerops-io/zcli/src/service/params"
|
|
11
|
-
storagePackage "github.com/zerops-io/zcli/src/service/storage"
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
var (
|
|
15
|
-
logger = loggerPackage.New(loggerPackage.Config{})
|
|
16
|
-
params *paramsPackage.Handler
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
func ExecuteRootCmd(builtinToken string) {
|
|
20
|
-
|
|
21
|
-
storage, err := createStorage()
|
|
22
|
-
if err != nil {
|
|
23
|
-
logger.Error(err)
|
|
24
|
-
return
|
|
25
|
-
}
|
|
26
|
-
params = paramsPackage.New(logger, storage)
|
|
27
|
-
|
|
28
|
-
rootCmd := &cobra.Command{
|
|
29
|
-
Use: "zcli",
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
params.RegisterString(rootCmd, "restApiAddress", "https://app.zerops.dev", "address of rest api", paramsPackage.Persistent())
|
|
33
|
-
params.RegisterString(rootCmd, "grpcApiAddress", "app.zerops.dev:20902", "address of grpc api", paramsPackage.Persistent())
|
|
34
|
-
params.RegisterString(rootCmd, "vpnApiAddress", "vpn.app.zerops.dev", "address of vpn api", paramsPackage.Persistent())
|
|
35
|
-
params.RegisterString(
|
|
36
|
-
rootCmd, "token", builtinToken, "authentication token",
|
|
37
|
-
paramsPackage.Persistent(),
|
|
38
|
-
paramsPackage.FromTempData(func(data *storagePackage.Data) interface{} {
|
|
39
|
-
return data.Token
|
|
40
|
-
}),
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
rootCmd.AddCommand(deployCmd())
|
|
44
|
-
rootCmd.AddCommand(startVpnCmd())
|
|
45
|
-
rootCmd.AddCommand(stopVpnCmd())
|
|
46
|
-
rootCmd.AddCommand(loginCmd())
|
|
47
|
-
|
|
48
|
-
err = params.InitViper()
|
|
49
|
-
if err != nil {
|
|
50
|
-
logger.Error(err)
|
|
51
|
-
return
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
err = rootCmd.Execute()
|
|
55
|
-
if err != nil {
|
|
56
|
-
os.Exit(1)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
func regSignals(contextCancel func(), logger loggerPackage.Logger) {
|
|
61
|
-
sigs := make(chan os.Signal, 1)
|
|
62
|
-
|
|
63
|
-
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
|
64
|
-
|
|
65
|
-
go func() {
|
|
66
|
-
sig := <-sigs
|
|
67
|
-
logger.Info("\n", "signal:", sig)
|
|
68
|
-
contextCancel()
|
|
69
|
-
}()
|
|
70
|
-
}
|
package/cmd/startVpn.go
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
|
|
6
|
-
"github.com/zerops-io/zcli/src/command/startVpn"
|
|
7
|
-
|
|
8
|
-
"github.com/spf13/cobra"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
func startVpnCmd() *cobra.Command {
|
|
12
|
-
cmd := &cobra.Command{
|
|
13
|
-
Use: "startVpn projectName",
|
|
14
|
-
SilenceUsage: true,
|
|
15
|
-
Args: cobra.ExactArgs(1),
|
|
16
|
-
RunE: func(cmd *cobra.Command, args []string) error {
|
|
17
|
-
ctx, cancel := context.WithCancel(context.Background())
|
|
18
|
-
regSignals(cancel, logger)
|
|
19
|
-
|
|
20
|
-
sudoers := createSudoers()
|
|
21
|
-
|
|
22
|
-
storage, err := createStorage()
|
|
23
|
-
if err != nil {
|
|
24
|
-
return err
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
certReader, err := createCertReader()
|
|
28
|
-
if err != nil {
|
|
29
|
-
return err
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
tlsConfig, err := createTlsConfig(certReader)
|
|
33
|
-
if err != nil {
|
|
34
|
-
return err
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
apiGrpcClient, apiCloseFunc, err := createApiGrpcClient(ctx, tlsConfig)
|
|
38
|
-
if err != nil {
|
|
39
|
-
return err
|
|
40
|
-
}
|
|
41
|
-
defer apiCloseFunc()
|
|
42
|
-
|
|
43
|
-
return startVpn.New(
|
|
44
|
-
startVpn.Config{
|
|
45
|
-
VpnAddress: params.GetString("vpnApiAddress"),
|
|
46
|
-
UserId: certReader.UserId,
|
|
47
|
-
},
|
|
48
|
-
logger,
|
|
49
|
-
apiGrpcClient,
|
|
50
|
-
sudoers,
|
|
51
|
-
storage,
|
|
52
|
-
).Run(ctx, startVpn.RunConfig{
|
|
53
|
-
ProjectName: args[0],
|
|
54
|
-
})
|
|
55
|
-
},
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return cmd
|
|
59
|
-
}
|
package/cmd/stopVpn.go
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
|
|
6
|
-
"github.com/zerops-io/zcli/src/command/stopVpn"
|
|
7
|
-
|
|
8
|
-
"github.com/spf13/cobra"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
func stopVpnCmd() *cobra.Command {
|
|
12
|
-
cmd := &cobra.Command{
|
|
13
|
-
Use: "stopVpn",
|
|
14
|
-
SilenceUsage: true,
|
|
15
|
-
RunE: func(cmd *cobra.Command, args []string) error {
|
|
16
|
-
ctx, cancel := context.WithCancel(context.Background())
|
|
17
|
-
regSignals(cancel, logger)
|
|
18
|
-
|
|
19
|
-
sudoers := createSudoers()
|
|
20
|
-
|
|
21
|
-
storage, err := createStorage()
|
|
22
|
-
if err != nil {
|
|
23
|
-
return err
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return stopVpn.New(
|
|
27
|
-
stopVpn.Config{},
|
|
28
|
-
logger,
|
|
29
|
-
sudoers,
|
|
30
|
-
storage,
|
|
31
|
-
).Run(ctx, stopVpn.RunConfig{})
|
|
32
|
-
},
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return cmd
|
|
36
|
-
}
|
package/go.mod
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module github.com/zerops-io/zcli
|
|
2
|
-
|
|
3
|
-
go 1.14
|
|
4
|
-
|
|
5
|
-
require (
|
|
6
|
-
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
|
7
|
-
github.com/golang/protobuf v1.4.2
|
|
8
|
-
github.com/google/uuid v1.1.1
|
|
9
|
-
github.com/mitchellh/mapstructure v1.2.2 // indirect
|
|
10
|
-
github.com/onsi/gomega v1.10.1
|
|
11
|
-
github.com/pelletier/go-toml v1.7.0 // indirect
|
|
12
|
-
github.com/spf13/afero v1.2.2 // indirect
|
|
13
|
-
github.com/spf13/cast v1.3.1 // indirect
|
|
14
|
-
github.com/spf13/cobra v1.0.0
|
|
15
|
-
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
|
16
|
-
github.com/spf13/viper v1.6.3
|
|
17
|
-
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 // indirect
|
|
18
|
-
golang.org/x/text v0.3.2 // indirect
|
|
19
|
-
google.golang.org/grpc v1.21.0
|
|
20
|
-
gopkg.in/ini.v1 v1.55.0 // indirect
|
|
21
|
-
)
|