mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-07 09:41:37 +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,
|
GRPCConnString: s.GRPCConnString,
|
||||||
GRPCSSL: s.GRPCSSL,
|
GRPCSSL: s.GRPCSSL,
|
||||||
Server: s.Server,
|
Server: s.Server,
|
||||||
|
APIConnString: s.APIConnString,
|
||||||
}
|
}
|
||||||
accessToken.ServerConfig = servervals
|
accessToken.ServerConfig = servervals
|
||||||
accessToken.ClientConfig.Network = netID
|
accessToken.ClientConfig.Network = netID
|
||||||
|
@@ -15,4 +15,5 @@ type ServerConfig struct {
|
|||||||
GRPCConnString string `json:"grpcconn"`
|
GRPCConnString string `json:"grpcconn"`
|
||||||
GRPCSSL string `json:"grpcssl"`
|
GRPCSSL string `json:"grpcssl"`
|
||||||
Server string `json:"server"`
|
Server string `json:"server"`
|
||||||
|
APIConnString string `json:"apiconnstring"`
|
||||||
}
|
}
|
||||||
|
@@ -105,6 +105,18 @@ func GetCommands(cliFlags []cli.Flag) []*cli.Command {
|
|||||||
return err
|
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()
|
err := functions.Daemon()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Register(cfg *config.ClientConfig) error {
|
||||||
|
return functions.Register(cfg)
|
||||||
|
}
|
||||||
|
@@ -2,6 +2,7 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
//"github.com/davecgh/go-spew/spew"
|
//"github.com/davecgh/go-spew/spew"
|
||||||
|
"crypto/x509"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
@@ -35,6 +36,12 @@ type ServerConfig struct {
|
|||||||
GRPCSSL string `yaml:"grpcssl"`
|
GRPCSSL string `yaml:"grpcssl"`
|
||||||
CommsNetwork string `yaml:"commsnetwork"`
|
CommsNetwork string `yaml:"commsnetwork"`
|
||||||
Server string `yaml:"server"`
|
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
|
// 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.Node.LocalRange = accesstoken.ClientConfig.LocalRange
|
||||||
cfg.Server.GRPCSSL = accesstoken.ServerConfig.GRPCSSL
|
cfg.Server.GRPCSSL = accesstoken.ServerConfig.GRPCSSL
|
||||||
cfg.Server.Server = accesstoken.ServerConfig.Server
|
cfg.Server.Server = accesstoken.ServerConfig.Server
|
||||||
|
cfg.Server.API = accesstoken.ServerConfig.APIConnString
|
||||||
if c.String("grpcserver") != "" {
|
if c.String("grpcserver") != "" {
|
||||||
cfg.Server.GRPCAddress = 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") != "" {
|
if c.String("corednsaddr") != "" {
|
||||||
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
||||||
}
|
}
|
||||||
|
if c.String("apiserver") != "" {
|
||||||
|
cfg.Server.API = c.String("apiserver")
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cfg.Server.GRPCAddress = c.String("grpcserver")
|
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.Node.LocalRange = c.String("localrange")
|
||||||
cfg.Server.GRPCSSL = c.String("grpcssl")
|
cfg.Server.GRPCSSL = c.String("grpcssl")
|
||||||
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
cfg.Server.CoreDNSAddr = c.String("corednsaddr")
|
||||||
|
cfg.Server.API = c.String("apiserver")
|
||||||
}
|
}
|
||||||
cfg.Node.Name = c.String("name")
|
cfg.Node.Name = c.String("name")
|
||||||
cfg.Node.Interface = c.String("interface")
|
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"
|
const NO_DB_RECORDS = "could not find any records"
|
||||||
|
|
||||||
// LINUX_APP_DATA_PATH - linux path
|
// 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
|
// WINDOWS_APP_DATA_PATH - windows path
|
||||||
const WINDOWS_APP_DATA_PATH = "C:\\ProgramData\\Netclient"
|
const WINDOWS_APP_DATA_PATH = "C:\\ProgramData\\Netclient"
|
||||||
|
Reference in New Issue
Block a user