diff --git a/assets/assets.go b/assets/assets.go index 29352f47..732f1967 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -21,7 +21,7 @@ import ( "embed" "strings" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" ) //go:embed * diff --git a/cmd/swctl/main.go b/cmd/swctl/main.go index 1fd6d38a..81914fac 100644 --- a/cmd/swctl/main.go +++ b/cmd/swctl/main.go @@ -43,8 +43,8 @@ import ( "github.com/apache/skywalking-cli/internal/commands/records" "github.com/apache/skywalking-cli/internal/commands/service" "github.com/apache/skywalking-cli/internal/commands/trace" - "github.com/apache/skywalking-cli/internal/logger" intutil "github.com/apache/skywalking-cli/internal/util" + "github.com/apache/skywalking-cli/pkg/logger" "github.com/apache/skywalking-cli/pkg/util" "github.com/sirupsen/logrus" @@ -173,6 +173,12 @@ func flags() []cli.Flag { "if `authorization` is set, `--username` and `--password` are ignored", Value: "", }), + altsrc.NewStringFlag(&cli.StringFlag{ + Name: "insecure", + Required: false, + Usage: "skip TLS certificate verification", + Value: "", + }), altsrc.NewStringFlag(&cli.StringFlag{ Name: "timezone", Required: false, diff --git a/internal/commands/event/report.go b/internal/commands/event/report.go index 395d0cf0..7e24d320 100644 --- a/internal/commands/event/report.go +++ b/internal/commands/event/report.go @@ -26,11 +26,11 @@ import ( "github.com/apache/skywalking-cli/internal/commands/interceptor" "github.com/apache/skywalking-cli/internal/flags" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/internal/model" "github.com/apache/skywalking-cli/pkg/display" "github.com/apache/skywalking-cli/pkg/display/displayable" "github.com/apache/skywalking-cli/pkg/grpc" + "github.com/apache/skywalking-cli/pkg/logger" ) var reportCommand = &cli.Command{ diff --git a/internal/commands/healthcheck/healthcheck.go b/internal/commands/healthcheck/healthcheck.go index f67efc13..553da2af 100644 --- a/internal/commands/healthcheck/healthcheck.go +++ b/internal/commands/healthcheck/healthcheck.go @@ -22,8 +22,8 @@ import ( "github.com/apache/skywalking-cli/pkg/healthcheck" - "github.com/apache/skywalking-cli/internal/logger" hc "github.com/apache/skywalking-cli/pkg/graphql/healthcheck" + "github.com/apache/skywalking-cli/pkg/logger" ) var Command = &cli.Command{ diff --git a/internal/commands/interceptor/duration.go b/internal/commands/interceptor/duration.go index 0d08f17b..75eb864d 100644 --- a/internal/commands/interceptor/duration.go +++ b/internal/commands/interceptor/duration.go @@ -30,8 +30,8 @@ import ( "github.com/urfave/cli/v2" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/internal/model" + "github.com/apache/skywalking-cli/pkg/logger" ) func TryParseTime(unparsed string, userStep api.Step) (api.Step, time.Time, error) { diff --git a/internal/commands/interceptor/entity.go b/internal/commands/interceptor/entity.go index d03f3e2d..2e08f2bc 100644 --- a/internal/commands/interceptor/entity.go +++ b/internal/commands/interceptor/entity.go @@ -26,8 +26,8 @@ import ( "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/pkg/graphql/utils" + "github.com/apache/skywalking-cli/pkg/logger" api "skywalking.apache.org/repo/goapi/query" ) diff --git a/internal/commands/interceptor/interceptor.go b/internal/commands/interceptor/interceptor.go index 6bf49b61..9cb873ea 100644 --- a/internal/commands/interceptor/interceptor.go +++ b/internal/commands/interceptor/interceptor.go @@ -30,6 +30,7 @@ func BeforeChain(beforeFunctions ...cli.BeforeFunc) cli.BeforeFunc { return func(cliCtx *cli.Context) error { ctx := cliCtx.Context ctx = context.WithValue(ctx, contextkey.BaseURL{}, cliCtx.String("base-url")) + ctx = context.WithValue(ctx, contextkey.Insecure{}, cliCtx.Bool("insecure")) ctx = context.WithValue(ctx, contextkey.Username{}, cliCtx.String("username")) ctx = context.WithValue(ctx, contextkey.Password{}, cliCtx.String("password")) ctx = context.WithValue(ctx, contextkey.Authorization{}, cliCtx.String("authorization")) diff --git a/internal/commands/interceptor/service.go b/internal/commands/interceptor/service.go index e770c152..d87e12ac 100644 --- a/internal/commands/interceptor/service.go +++ b/internal/commands/interceptor/service.go @@ -25,8 +25,8 @@ import ( "github.com/urfave/cli/v2" api "skywalking.apache.org/repo/goapi/query" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/pkg/graphql/metadata" + "github.com/apache/skywalking-cli/pkg/logger" ) type nodeType int diff --git a/internal/commands/interceptor/timezone.go b/internal/commands/interceptor/timezone.go index 425d8ddc..67ab128b 100644 --- a/internal/commands/interceptor/timezone.go +++ b/internal/commands/interceptor/timezone.go @@ -23,8 +23,8 @@ import ( "github.com/urfave/cli/v2" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/pkg/graphql/metadata" + "github.com/apache/skywalking-cli/pkg/logger" ) // TimezoneInterceptor sets the server timezone if the server supports the API, diff --git a/internal/commands/metrics/aggregation/metrics.go b/internal/commands/metrics/aggregation/metrics.go index 6f4c72d5..cae4bc5e 100644 --- a/internal/commands/metrics/aggregation/metrics.go +++ b/internal/commands/metrics/aggregation/metrics.go @@ -24,11 +24,11 @@ import ( "github.com/apache/skywalking-cli/internal/commands/interceptor" "github.com/apache/skywalking-cli/internal/flags" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/internal/model" "github.com/apache/skywalking-cli/pkg/display" "github.com/apache/skywalking-cli/pkg/display/displayable" "github.com/apache/skywalking-cli/pkg/graphql/metrics" + "github.com/apache/skywalking-cli/pkg/logger" ) var SortedMetrics = &cli.Command{ diff --git a/internal/commands/metrics/aggregation/sampled-record.go b/internal/commands/metrics/aggregation/sampled-record.go index 16fddae7..ecaac19c 100644 --- a/internal/commands/metrics/aggregation/sampled-record.go +++ b/internal/commands/metrics/aggregation/sampled-record.go @@ -26,12 +26,12 @@ import ( "github.com/apache/skywalking-cli/internal/commands/interceptor" "github.com/apache/skywalking-cli/internal/flags" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/internal/model" "github.com/apache/skywalking-cli/pkg/display" "github.com/apache/skywalking-cli/pkg/display/displayable" "github.com/apache/skywalking-cli/pkg/graphql/metadata" "github.com/apache/skywalking-cli/pkg/graphql/metrics" + "github.com/apache/skywalking-cli/pkg/logger" ) var SampledRecords = &cli.Command{ diff --git a/internal/commands/metrics/aggregation/topn.go b/internal/commands/metrics/aggregation/topn.go index 134a31c9..0c02ac5c 100644 --- a/internal/commands/metrics/aggregation/topn.go +++ b/internal/commands/metrics/aggregation/topn.go @@ -24,11 +24,11 @@ import ( "github.com/apache/skywalking-cli/internal/commands/interceptor" "github.com/apache/skywalking-cli/internal/flags" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/internal/model" "github.com/apache/skywalking-cli/pkg/display" "github.com/apache/skywalking-cli/pkg/display/displayable" "github.com/apache/skywalking-cli/pkg/graphql/metrics" + "github.com/apache/skywalking-cli/pkg/logger" ) var TopN = &cli.Command{ diff --git a/pkg/contextkey/contextkey.go b/pkg/contextkey/contextkey.go index 0f5380e2..d6875066 100644 --- a/pkg/contextkey/contextkey.go +++ b/pkg/contextkey/contextkey.go @@ -19,6 +19,7 @@ package contextkey type ( BaseURL struct{} + Insecure struct{} Username struct{} Password struct{} Authorization struct{} diff --git a/pkg/display/graph/flamegraph/flamegraph.go b/pkg/display/graph/flamegraph/flamegraph.go index 4eb1c8df..00cb4906 100644 --- a/pkg/display/graph/flamegraph/flamegraph.go +++ b/pkg/display/graph/flamegraph/flamegraph.go @@ -26,7 +26,7 @@ import ( "path/filepath" "time" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" api "skywalking.apache.org/repo/goapi/query" ) diff --git a/pkg/display/graph/tree/list.go b/pkg/display/graph/tree/list.go index 89cd4c87..daf9dc1e 100644 --- a/pkg/display/graph/tree/list.go +++ b/pkg/display/graph/tree/list.go @@ -30,7 +30,7 @@ import ( ui "github.com/gizak/termui/v3" "github.com/gizak/termui/v3/widgets" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" ) const ( diff --git a/pkg/display/graph/tree/tree.go b/pkg/display/graph/tree/tree.go index 916c94cf..b2ee6eed 100644 --- a/pkg/display/graph/tree/tree.go +++ b/pkg/display/graph/tree/tree.go @@ -24,7 +24,7 @@ import ( ui "github.com/gizak/termui/v3" "github.com/gizak/termui/v3/widgets" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" ) type Node struct { diff --git a/pkg/display/table/table.go b/pkg/display/table/table.go index 0c82376a..212e1b6d 100644 --- a/pkg/display/table/table.go +++ b/pkg/display/table/table.go @@ -23,7 +23,7 @@ import ( d "github.com/apache/skywalking-cli/pkg/display/displayable" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" "github.com/olekukonko/tablewriter" ) diff --git a/pkg/graphql/client/client.go b/pkg/graphql/client/client.go index 40b49473..29e0910c 100644 --- a/pkg/graphql/client/client.go +++ b/pkg/graphql/client/client.go @@ -19,20 +19,32 @@ package client import ( "context" + "crypto/tls" "encoding/base64" + "net/http" "github.com/machinebox/graphql" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/pkg/contextkey" + "github.com/apache/skywalking-cli/pkg/logger" ) -func newClient(ctx context.Context) (client *graphql.Client) { - client = graphql.NewClient(ctx.Value(contextkey.BaseURL{}).(string)) +func newClient(ctx context.Context) *graphql.Client { + options := []graphql.ClientOption{} + + insecure := ctx.Value(contextkey.Insecure{}).(bool) + if insecure { + customTransport := http.DefaultTransport.(*http.Transport).Clone() + customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: insecure} // #nosec G402 + httpClient := &http.Client{Transport: customTransport} + options = append(options, graphql.WithHTTPClient(httpClient)) + } + + client := graphql.NewClient(ctx.Value(contextkey.BaseURL{}).(string), options...) client.Log = func(msg string) { logger.Log.Debugln(msg) } - return + return client } // ExecuteQuery executes the `request` and parse to the `response`, returning `error` if there is any. diff --git a/pkg/graphql/dashboard/global.go b/pkg/graphql/dashboard/global.go index 3c9c1d16..44060304 100644 --- a/pkg/graphql/dashboard/global.go +++ b/pkg/graphql/dashboard/global.go @@ -36,9 +36,9 @@ import ( "gopkg.in/yaml.v2" "github.com/apache/skywalking-cli/assets" - "github.com/apache/skywalking-cli/internal/logger" "github.com/apache/skywalking-cli/pkg/graphql/metrics" "github.com/apache/skywalking-cli/pkg/graphql/utils" + "github.com/apache/skywalking-cli/pkg/logger" ) type ButtonTemplate struct { diff --git a/pkg/graphql/utils/adapter.go b/pkg/graphql/utils/adapter.go index de40351c..db932f92 100644 --- a/pkg/graphql/utils/adapter.go +++ b/pkg/graphql/utils/adapter.go @@ -24,12 +24,13 @@ import ( api "skywalking.apache.org/repo/goapi/query" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" ) // MetricsValuesArrayToMap converts Array of MetricsValues into a map that uses time as key. func MetricsValuesArrayToMap(duration api.Duration, mvArray []api.MetricsValues, - labelsMap map[string]string) map[string]map[string]*displayable.MetricValue { + labelsMap map[string]string, +) map[string]map[string]*displayable.MetricValue { ret := make(map[string]map[string]*displayable.MetricValue, len(mvArray)) for _, mvs := range mvArray { label := *mvs.Label @@ -47,7 +48,6 @@ func MetricsValuesToMap(duration api.Duration, metricsValues api.MetricsValues) ret := map[string]*displayable.MetricValue{} format := StepFormats[duration.Step] startTime, err := time.Parse(format, duration.Start) - if err != nil { logger.Log.Fatalln(err) } diff --git a/pkg/healthcheck/grpc.go b/pkg/healthcheck/grpc.go index f4c63574..cc0fa81e 100644 --- a/pkg/healthcheck/grpc.go +++ b/pkg/healthcheck/grpc.go @@ -22,7 +22,7 @@ import ( "crypto/tls" "time" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -43,7 +43,8 @@ func HealthCheck(addr string, enableTLS bool) int { opts := []grpc.DialOption{ grpc.WithUserAgent("swctl_health_probe"), - grpc.WithBlock()} + grpc.WithBlock(), + } if enableTLS { // #nosec creds := credentials.NewTLS(&tls.Config{ diff --git a/internal/logger/log.go b/pkg/logger/log.go similarity index 100% rename from internal/logger/log.go rename to pkg/logger/log.go diff --git a/pkg/util/io.go b/pkg/util/io.go index 3e957f43..5dd91abf 100644 --- a/pkg/util/io.go +++ b/pkg/util/io.go @@ -21,7 +21,7 @@ import ( "os/user" "strings" - "github.com/apache/skywalking-cli/internal/logger" + "github.com/apache/skywalking-cli/pkg/logger" ) // UserHomeDir returns the current user's home directory absolute path,