Skip to content

Commit de1c2c5

Browse files
committed
feat: add flag --insecure-skip-tls-verify
Signed-off-by: zongz <[email protected]>
1 parent f38ddf7 commit de1c2c5

File tree

29 files changed

+251
-17
lines changed

29 files changed

+251
-17
lines changed

cmd/kcl/commands/mod.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,19 @@ const (
2727
)
2828

2929
var (
30-
quiet bool
31-
vendor bool
32-
update bool
33-
git string
34-
oci string
35-
path string
36-
tag string
37-
commit string
38-
branch string
39-
target string
40-
rename string
41-
noSumCheck bool
30+
quiet bool
31+
vendor bool
32+
update bool
33+
git string
34+
oci string
35+
path string
36+
tag string
37+
commit string
38+
branch string
39+
target string
40+
rename string
41+
noSumCheck bool
42+
insecureSkipTLSverify bool
4243
)
4344

4445
// NewModCmd returns the mod command.

cmd/kcl/commands/mod_add.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func NewModAddCmd(cli *client.KpmClient) *cobra.Command {
6767
cmd.Flags().StringVar(&path, "path", "", "filesystem path to local dependency to add")
6868
cmd.Flags().StringVar(&rename, "rename", "", "rename the dependency")
6969
cmd.Flags().BoolVar(&noSumCheck, "no_sum_check", false, "do not check the checksum of the package and update kcl.mod.lock")
70+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
7071

7172
return cmd
7273
}
@@ -86,6 +87,8 @@ func ModAdd(cli *client.KpmClient, args []string) error {
8687
}
8788
}()
8889

90+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
91+
8992
pwd, err := os.Getwd()
9093

9194
if err != nil {

cmd/kcl/commands/mod_graph.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ func NewModGraphCmd(cli *client.KpmClient) *cobra.Command {
3333
},
3434
SilenceUsage: true,
3535
}
36+
37+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
3638
return cmd
3739
}
3840

3941
func ModGraph(cli *client.KpmClient, args []string) error {
42+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
4043
// acquire the lock of the package cache.
4144
err := cli.AcquirePackageCacheLock()
4245
if err != nil {

cmd/kcl/commands/mod_metadata.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ func NewModMetadataCmd(cli *client.KpmClient) *cobra.Command {
3838
}
3939

4040
cli.SetLogWriter(nil)
41+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
4142
kclPkg, err := cli.LoadPkgFromPath(pwd)
4243
if err != nil {
4344
return err
@@ -76,6 +77,7 @@ func NewModMetadataCmd(cli *client.KpmClient) *cobra.Command {
7677

7778
cmd.Flags().BoolVar(&vendor, "vendor", false, "run in vendor mode (default: false)")
7879
cmd.Flags().BoolVar(&update, "update", false, "check the local package and update and download the local package. (default: false)")
80+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
7981

8082
return cmd
8183
}

cmd/kcl/commands/mod_pull.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func NewModPullCmd(cli *client.KpmClient) *cobra.Command {
5050
cmd.Flags().StringVar(&tag, "tag", "", "git or oci repository tag")
5151
cmd.Flags().StringVar(&commit, "commit", "", "git repository commit")
5252
cmd.Flags().StringVar(&branch, "branch", "", "git repository branch")
53+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
5354

5455
return cmd
5556
}
@@ -64,6 +65,7 @@ func pull(cli *client.KpmClient, args []string, localPath string) error {
6465
return err
6566
}
6667

68+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
6769
_, err = cli.Pull(
6870
client.WithPullSource(source),
6971
client.WithLocalPath(localPath),

cmd/kcl/commands/mod_push.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@ func NewModPushCmd(cli *client.KpmClient) *cobra.Command {
4343

4444
cmd.Flags().BoolVar(&vendor, "vendor", false, "run in vendor mode (default: false)")
4545
cmd.Flags().StringVar(&target, "tar_path", "", "packaged target path that will be pushed")
46+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
4647

4748
return cmd
4849
}
4950

5051
func ModPush(cli *client.KpmClient, args []string) error {
52+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
5153
localTarPath := target
5254
ociUrl := argsGet(args, 0)
5355

cmd/kcl/commands/mod_test.go

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
gohttp "net/http"
7+
"net/http/httptest"
8+
"net/url"
9+
"os"
10+
"path/filepath"
11+
"testing"
12+
13+
"github.com/stretchr/testify/assert"
14+
"kcl-lang.io/kpm/pkg/client"
15+
)
16+
17+
func TestModCmdWithSkipTlsVerify(t *testing.T) {
18+
var buf bytes.Buffer
19+
20+
mux := gohttp.NewServeMux()
21+
mux.HandleFunc("/", func(w gohttp.ResponseWriter, r *gohttp.Request) {
22+
buf.WriteString("Called Success\n")
23+
fmt.Fprintln(w, "Hello, client")
24+
})
25+
26+
mux.HandleFunc("/subpath/tags/list", func(w gohttp.ResponseWriter, r *gohttp.Request) {
27+
buf.WriteString("Called Success\n")
28+
fmt.Fprintln(w, "Hello, client")
29+
})
30+
31+
mux.HandleFunc("/subpath", func(w gohttp.ResponseWriter, r *gohttp.Request) {
32+
fmt.Fprintln(w, "Hello from subpath")
33+
})
34+
35+
ts := httptest.NewTLSServer(mux)
36+
defer ts.Close()
37+
38+
fmt.Printf("ts.URL: %v\n", ts.URL)
39+
turl, err := url.Parse(ts.URL)
40+
assert.Equal(t, err, nil)
41+
turl.Scheme = "oci"
42+
turl.Path = filepath.Join(turl.Path, "subpath")
43+
fmt.Printf("turl.String(): %v\n", turl.String())
44+
45+
kpmcli, err := client.NewKpmClient()
46+
assert.Equal(t, err, nil)
47+
48+
originalDir, err := os.Getwd()
49+
assert.NoError(t, err)
50+
testRootDir := filepath.Join(originalDir, "test_data")
51+
52+
runTest := func(testDir string, testFunc func(), beforeTestFuncs []func()) {
53+
if testDir != "" {
54+
err = os.Chdir(filepath.Join(testRootDir, testDir))
55+
assert.NoError(t, err)
56+
}
57+
58+
for _, beforeTestFunc := range beforeTestFuncs {
59+
beforeTestFunc()
60+
}
61+
62+
testFunc()
63+
assert.Equal(t, buf.String(), "Called Success\n")
64+
buf.Reset()
65+
defer func() {
66+
err := os.Chdir(originalDir)
67+
assert.NoError(t, err)
68+
}()
69+
}
70+
71+
genKclModWithDep := func(depUrl string) {
72+
fmt.Println("Executing extra function for test_mod_graph")
73+
kclModContent := fmt.Sprintf(`[package]
74+
name = "test_mod"
75+
edition = "v0.10.0"
76+
version = "0.0.1"
77+
78+
[dependencies]
79+
dep1 = { oci = "%s"}
80+
`, depUrl)
81+
err := os.WriteFile("kcl.mod", []byte(kclModContent), 0644)
82+
assert.NoError(t, err)
83+
}
84+
85+
runTest("", func() {
86+
fmt.Println("test_mod_pull")
87+
cmd := NewModPullCmd(kpmcli)
88+
cmd.SetArgs([]string{turl.String(), "--insecure-skip-tls-verify"})
89+
_ = cmd.Execute()
90+
}, []func(){})
91+
92+
runTest("test_mod_push", func() {
93+
fmt.Println("test_mod_push")
94+
cmd := NewModPushCmd(kpmcli)
95+
cmd.SetArgs([]string{turl.String(), "--insecure-skip-tls-verify"})
96+
_ = cmd.Execute()
97+
}, []func(){})
98+
99+
runTest("test_mod_add", func() {
100+
fmt.Println("test_mod_add")
101+
cmd := NewModAddCmd(kpmcli)
102+
cmd.SetArgs([]string{turl.String(), "--insecure-skip-tls-verify"})
103+
_ = cmd.Execute()
104+
}, []func(){})
105+
106+
runTest("test_mod_graph", func() {
107+
fmt.Println("test_mod_graph")
108+
cmd := NewModGraphCmd(kpmcli)
109+
cmd.SetArgs([]string{"--insecure-skip-tls-verify"})
110+
_ = cmd.Execute()
111+
}, []func(){
112+
func() { genKclModWithDep(turl.String()) },
113+
})
114+
115+
runTest("test_mod_metadata", func() {
116+
fmt.Println("test_mod_metadata")
117+
cmd := NewModMetadataCmd(kpmcli)
118+
cmd.SetArgs([]string{"--update", "--insecure-skip-tls-verify"})
119+
_ = cmd.Execute()
120+
}, []func(){
121+
func() { genKclModWithDep(turl.String()) },
122+
})
123+
124+
runTest("test_mod_update", func() {
125+
fmt.Println("test_mod_update")
126+
cmd := NewModUpdateCmd(kpmcli)
127+
cmd.SetArgs([]string{"--insecure-skip-tls-verify"})
128+
_ = cmd.Execute()
129+
}, []func(){
130+
func() { genKclModWithDep(turl.String()) },
131+
})
132+
}

cmd/kcl/commands/mod_update.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func NewModUpdateCmd(cli *client.KpmClient) *cobra.Command {
3434
}
3535

3636
cmd.Flags().BoolVar(&noSumCheck, "no_sum_check", false, "do not check the checksum of the package and update kcl.mod.lock")
37+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the KCL module download")
3738

3839
return cmd
3940
}
@@ -49,6 +50,7 @@ func ModUpdate(cli *client.KpmClient, args []string) error {
4950
pkgPath = pwd
5051
}
5152
cli.SetNoSumCheck(noSumCheck)
53+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
5254
kclPkg, err := cli.LoadPkgFromPath(pkgPath)
5355
if err != nil {
5456
return err

cmd/kcl/commands/registry_login.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func NewRegistryLoginCmd(cli *client.KpmClient) *cobra.Command {
3535
if err != nil {
3636
return err
3737
}
38-
38+
cli.SetInsecureSkipTLSverify(insecureSkipTLSverify)
3939
err = cli.LoginOci(registry, username, password)
4040
if err != nil {
4141
return err
@@ -50,6 +50,6 @@ func NewRegistryLoginCmd(cli *client.KpmClient) *cobra.Command {
5050

5151
cmd.Flags().StringVarP(&username, "username", "u", "", "registry username")
5252
cmd.Flags().StringVarP(&password, "password", "p", "", "registry password or identity token")
53-
53+
cmd.Flags().BoolVar(&insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls verification")
5454
return cmd
5555
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
gohttp "net/http"
7+
"net/http/httptest"
8+
"net/url"
9+
"path/filepath"
10+
"testing"
11+
12+
"github.com/stretchr/testify/assert"
13+
"kcl-lang.io/kpm/pkg/client"
14+
)
15+
16+
func TestLoginCmdWithSkipTlsVerify(t *testing.T) {
17+
var buf bytes.Buffer
18+
19+
mux := gohttp.NewServeMux()
20+
mux.HandleFunc("/", func(w gohttp.ResponseWriter, r *gohttp.Request) {
21+
buf.WriteString("Called Success\n")
22+
fmt.Fprintln(w, "Hello, client")
23+
})
24+
25+
ts := httptest.NewTLSServer(mux)
26+
defer ts.Close()
27+
28+
fmt.Printf("ts.URL: %v\n", ts.URL)
29+
turl, err := url.Parse(ts.URL)
30+
assert.Equal(t, err, nil)
31+
turl.Path = filepath.Join(turl.Path, "subpath")
32+
fmt.Printf("turl.String(): %v\n", turl.String())
33+
34+
cli, err := client.NewKpmClient()
35+
assert.Equal(t, err, nil)
36+
cmd := NewRegistryLoginCmd(cli)
37+
cmd.SetArgs([]string{turl.String(), "--username=test-user", "--password=test-pass", "--insecure-skip-tls-verify"})
38+
err = cmd.Execute()
39+
assert.NoError(t, err)
40+
assert.Equal(t, buf.String(), "Called Success\nCalled Success\n")
41+
}

0 commit comments

Comments
 (0)