mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-07 01:36:23 +08:00
register command - client
This commit is contained in:
@@ -57,6 +57,7 @@ func CreateAccessKey(accesskey models.AccessKey, network models.Network) (models
|
||||
GRPCConnString: s.GRPCConnString,
|
||||
GRPCSSL: s.GRPCSSL,
|
||||
Server: s.Server,
|
||||
APIConnString: s.APIConnString,
|
||||
}
|
||||
accessToken.ServerConfig = servervals
|
||||
accessToken.ClientConfig.Network = netID
|
||||
|
@@ -15,4 +15,5 @@ type ServerConfig struct {
|
||||
GRPCConnString string `json:"grpcconn"`
|
||||
GRPCSSL string `json:"grpcssl"`
|
||||
Server string `json:"server"`
|
||||
APIConnString string `json:"apiconnstring"`
|
||||
}
|
||||
|
@@ -105,6 +105,18 @@ func GetCommands(cliFlags []cli.Flag) []*cli.Command {
|
||||
return err
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "register",
|
||||
Usage: "register with netmaker",
|
||||
Flags: cliFlags,
|
||||
Action: func(c *cli.Context) error {
|
||||
cfg, _, err := config.GetCLIConfig(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return command.Register(&cfg)
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -154,3 +154,7 @@ func Daemon() error {
|
||||
err := functions.Daemon()
|
||||
return err
|
||||
}
|
||||
|
||||
func Register(cfg *config.ClientConfig) error {
|
||||
return functions.Register(cfg)
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
//"github.com/davecgh/go-spew/spew"
|
||||
"crypto/x509"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
@@ -35,6 +36,12 @@ type ServerConfig struct {
|
||||
GRPCSSL string `yaml:"grpcssl"`
|
||||
CommsNetwork string `yaml:"commsnetwork"`
|
||||
Server string `yaml:"server"`
|
||||
API string `yaml:"api"`
|
||||
}
|
||||
|
||||
// RegisterRequest - struct for registation with netmaker server
|
||||
type RegisterRequest struct {
|
||||
CSR x509.CertificateRequest
|
||||
}
|
||||
|
||||
// Write - writes the config of a client to disk
|
||||
@@ -190,6 +197,7 @@ func GetCLIConfig(c *cli.Context) (ClientConfig, string, error) {
|
||||
cfg.Node.LocalRange = accesstoken.ClientConfig.LocalRange
|
||||
cfg.Server.GRPCSSL = accesstoken.ServerConfig.GRPCSSL
|
||||
cfg.Server.Server = accesstoken.ServerConfig.Server
|
||||
cfg.Server.API = accesstoken.ServerConfig.APIConnString
|
||||
if c.String("grpcserver") != "" {
|
||||
cfg.Server.GRPCAddress = c.String("grpcserver")
|
||||
}
|
||||
@@ -209,6 +217,9 @@ func GetCLIConfig(c *cli.Context) (ClientConfig, string, error) {
|
||||
if c.String("corednsaddr") != "" {
|
||||
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
||||
}
|
||||
if c.String("apiserver") != "" {
|
||||
cfg.Server.API = c.String("apiserver")
|
||||
}
|
||||
|
||||
} else {
|
||||
cfg.Server.GRPCAddress = c.String("grpcserver")
|
||||
@@ -218,6 +229,7 @@ func GetCLIConfig(c *cli.Context) (ClientConfig, string, error) {
|
||||
cfg.Node.LocalRange = c.String("localrange")
|
||||
cfg.Server.GRPCSSL = c.String("grpcssl")
|
||||
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
||||
cfg.Server.API = c.String("apiserver")
|
||||
}
|
||||
cfg.Node.Name = c.String("name")
|
||||
cfg.Node.Interface = c.String("interface")
|
||||
|
45
netclient/functions/register.go
Normal file
45
netclient/functions/register.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package functions
|
||||
|
||||
import (
|
||||
"crypto/x509"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"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 := "https://" + cfg.Server.Server + "/api/register"
|
||||
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 cert *x509.Certificate
|
||||
if err := json.NewDecoder(response.Body).Decode(cert); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server, "root.cert", cert); err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Log(0, "server certificate saved ")
|
||||
return nil
|
||||
}
|
@@ -40,7 +40,7 @@ const NO_DB_RECORD = "no result found"
|
||||
const NO_DB_RECORDS = "could not find any records"
|
||||
|
||||
// LINUX_APP_DATA_PATH - linux path
|
||||
const LINUX_APP_DATA_PATH = "/etc/netclient"
|
||||
const LINUX_APP_DATA_PATH = "/etc/netclient/"
|
||||
|
||||
// WINDOWS_APP_DATA_PATH - windows path
|
||||
const WINDOWS_APP_DATA_PATH = "C:\\ProgramData\\Netclient"
|
||||
|
Reference in New Issue
Block a user