register.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package functions
  2. import (
  3. "crypto/x509"
  4. "encoding/json"
  5. "errors"
  6. "net/http"
  7. "github.com/gravitl/netmaker/logger"
  8. "github.com/gravitl/netmaker/netclient/config"
  9. "github.com/gravitl/netmaker/netclient/ncutils"
  10. "github.com/gravitl/netmaker/tls"
  11. )
  12. func Register(cfg *config.ClientConfig) error {
  13. if cfg.Server.Server == "" {
  14. return errors.New("no server provided")
  15. }
  16. if cfg.Server.AccessKey == "" {
  17. return errors.New("no access key provided")
  18. }
  19. url := "https://" + cfg.Server.Server + "/api/register"
  20. request, err := http.NewRequest(http.MethodPost, url, nil)
  21. if err != nil {
  22. return err
  23. }
  24. request.Header.Set("authorization", "Bearer "+cfg.Server.AccessKey)
  25. client := http.Client{}
  26. response, err := client.Do(request)
  27. if err != nil {
  28. return err
  29. }
  30. if response.StatusCode != http.StatusOK {
  31. return errors.New(response.Status)
  32. }
  33. var cert *x509.Certificate
  34. if err := json.NewDecoder(response.Body).Decode(cert); err != nil {
  35. return err
  36. }
  37. if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server, "root.cert", cert); err != nil {
  38. return err
  39. }
  40. logger.Log(0, "server certificate saved ")
  41. return nil
  42. }