mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-11 20:45:32 +08:00
Allow self-signed certificates with configuration option in mdmctl (#147)
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/go-kit/kit/log"
|
||||
httptransport "github.com/go-kit/kit/transport/http"
|
||||
"github.com/micromdm/micromdm/core/apply"
|
||||
)
|
||||
|
||||
@@ -25,7 +26,7 @@ func (cmd *applyCommand) setup() error {
|
||||
}
|
||||
cmd.config = cfg
|
||||
logger := log.NewLogfmtLogger(os.Stderr)
|
||||
applysvc, err := apply.NewClient(cfg.ServerURL, logger, cfg.APIToken)
|
||||
applysvc, err := apply.NewClient(cfg.ServerURL, logger, cfg.APIToken, httptransport.SetClient(skipVerifyHTTPClient(cmd.config.SkipVerify)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -10,12 +10,26 @@ import (
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"crypto/tls"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type configCommand struct {
|
||||
config *ClientConfig
|
||||
}
|
||||
|
||||
// skipVerifyHTTPClient returns an *http.Client with InsecureSkipVerify set
|
||||
// to true for its TLS config. This allows self-signed SSL certificates.
|
||||
func skipVerifyHTTPClient(skipVerify bool) *http.Client {
|
||||
if skipVerify {
|
||||
tlsConfig := &tls.Config{InsecureSkipVerify: true}
|
||||
transport := &http.Transport{TLSClientConfig: tlsConfig}
|
||||
return &http.Client{Transport: transport}
|
||||
}
|
||||
return http.DefaultClient
|
||||
}
|
||||
|
||||
func (cmd *configCommand) Run(args []string) error {
|
||||
if len(args) < 1 {
|
||||
cmd.Usage()
|
||||
@@ -51,8 +65,9 @@ mdmctl config set -h
|
||||
func setCmd(cfg *ClientConfig, args []string) error {
|
||||
flagset := flag.NewFlagSet("set", flag.ExitOnError)
|
||||
var (
|
||||
flToken = flagset.String("api-token", "", "api token to connect to micromdm server")
|
||||
flServerURL = flagset.String("server-url", "", "server url of micromdm server")
|
||||
flToken = flagset.String("api-token", "", "api token to connect to micromdm server")
|
||||
flServerURL = flagset.String("server-url", "", "server url of micromdm server")
|
||||
flSkipVerify = flagset.Bool("skip-verify", false, "skip verification of server certificate (insecure)")
|
||||
)
|
||||
|
||||
flagset.Usage = usageFor(flagset, "mdmctl config set [flags]")
|
||||
@@ -78,6 +93,8 @@ func setCmd(cfg *ClientConfig, args []string) error {
|
||||
cfg.ServerURL = u.String()
|
||||
}
|
||||
|
||||
cfg.SkipVerify = *flSkipVerify
|
||||
|
||||
return SaveClientConfig(cfg)
|
||||
}
|
||||
|
||||
@@ -131,6 +148,7 @@ func LoadClientConfig() (*ClientConfig, error) {
|
||||
}
|
||||
|
||||
type ClientConfig struct {
|
||||
APIToken string `json:"api_token"`
|
||||
ServerURL string `json:"server_url"`
|
||||
APIToken string `json:"api_token"`
|
||||
ServerURL string `json:"server_url"`
|
||||
SkipVerify bool `json:"skip_verify"`
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"encoding/pem"
|
||||
|
||||
"github.com/go-kit/kit/log"
|
||||
httptransport "github.com/go-kit/kit/transport/http"
|
||||
"github.com/micromdm/micromdm/core/list"
|
||||
)
|
||||
|
||||
@@ -28,7 +29,7 @@ func (cmd *getCommand) setup() error {
|
||||
}
|
||||
cmd.config = cfg
|
||||
logger := log.NewLogfmtLogger(os.Stderr)
|
||||
listsvc, err := list.NewClient(cfg.ServerURL, logger, cfg.APIToken)
|
||||
listsvc, err := list.NewClient(cfg.ServerURL, logger, cfg.APIToken, httptransport.SetClient(skipVerifyHTTPClient(cmd.config.SkipVerify)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
httptransport "github.com/go-kit/kit/transport/http"
|
||||
)
|
||||
|
||||
func NewClient(instance string, logger log.Logger, token string) (Service, error) {
|
||||
func NewClient(instance string, logger log.Logger, token string, opts ...httptransport.ClientOption) (Service, error) {
|
||||
u, err := url.Parse(instance)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -23,6 +23,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
|
||||
copyURL(u, "/v1/blueprints"),
|
||||
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
|
||||
DecodeBlueprintRequest,
|
||||
opts...,
|
||||
).Endpoint()
|
||||
}
|
||||
var applyDEPTokensEndpoint endpoint.Endpoint
|
||||
@@ -32,6 +33,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
|
||||
copyURL(u, "/v1/dep-tokens"),
|
||||
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
|
||||
DecodeDEPTokensRequest,
|
||||
opts...,
|
||||
).Endpoint()
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
httptransport "github.com/go-kit/kit/transport/http"
|
||||
)
|
||||
|
||||
func NewClient(instance string, logger log.Logger, token string) (Service, error) {
|
||||
func NewClient(instance string, logger log.Logger, token string, opts ...httptransport.ClientOption) (Service, error) {
|
||||
u, err := url.Parse(instance)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -23,6 +23,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
|
||||
copyURL(u, "/v1/devices"),
|
||||
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
|
||||
DecodeDevicesResponse,
|
||||
opts...,
|
||||
).Endpoint()
|
||||
}
|
||||
var getDEPTokensEndpoint endpoint.Endpoint
|
||||
@@ -32,6 +33,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
|
||||
copyURL(u, "/v1/dep-tokens"),
|
||||
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
|
||||
DecodeGetDEPTokensResponse,
|
||||
opts...,
|
||||
).Endpoint()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user