package functions import ( "encoding/json" "errors" "log" "net/http" "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/tls" ) func Register(cfg *config.ClientConfig) error { if cfg.Server.Server == "" { return errors.New("no server provided") } if cfg.Server.AccessKey == "" { return errors.New("no access key provided") } url := cfg.Server.API + "/api/server/register" log.Println("regsiter at ", url) request, err := http.NewRequest(http.MethodPost, url, nil) if err != nil { return err } request.Header.Set("authorization", "Bearer "+cfg.Server.AccessKey) client := http.Client{} response, err := client.Do(request) if err != nil { return err } if response.StatusCode != http.StatusOK { return errors.New(response.Status) } var resp config.RegisterResponse if err := json.NewDecoder(response.Body).Decode(&resp); err != nil { return errors.New("unmarshal cert error " + err.Error()) } if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server, "root.cert", &resp.CA); err != nil { return err } logger.Log(0, "server certificate saved ") return nil }