Browse Source

reorder register/join

Matthew R. Kasun 3 years ago
parent
commit
f5aa1d1e62

+ 1 - 2
controllers/config/dnsconfig/netmaker.hosts

@@ -1,2 +1 @@
-10.0.0.1         testnode.skynet
-10.0.0.2         myhost.skynet
+10.0.0.2         testnode.skynet myhost.skynet

+ 1 - 1
controllers/server.go

@@ -22,7 +22,7 @@ func serverHandlers(r *mux.Router) {
 	// r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(true, http.HandlerFunc(addNetwork))).Methods("POST")
 	r.HandleFunc("/api/server/getconfig", securityCheckServer(false, http.HandlerFunc(getConfig))).Methods("GET")
 	r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(true, http.HandlerFunc(removeNetwork))).Methods("DELETE")
-	r.HandleFunc("/api/server/register", nodeauth(http.HandlerFunc(register))).Methods("POST")
+	r.HandleFunc("/api/server/register", authorize(true, false, "node", http.HandlerFunc(register))).Methods("POST")
 }
 
 //Security check is middleware for every function and just checks to make sure that its the master calling

+ 1 - 1
netclient/cli_options/cmds.go

@@ -26,7 +26,7 @@ func GetCommands(cliFlags []cli.Flag) []*cli.Command {
 					err = errors.New("no network provided")
 					return err
 				}
-				err = command.Register(&cfg, pvtKey)
+				err = command.Join(&cfg, pvtKey)
 				return err
 			},
 		},

+ 1 - 4
netclient/command/commands.go

@@ -53,6 +53,7 @@ func Join(cfg *config.ClientConfig, privateKey string) error {
 			functions.Pull(cfg.Network, true)
 		}
 	*/
+	config.Write(cfg, cfg.Network)
 	return err
 }
 
@@ -118,7 +119,3 @@ func Daemon() error {
 	err := functions.Daemon()
 	return err
 }
-
-func Register(cfg *config.ClientConfig, key string) error {
-	return functions.Register(cfg, key)
-}

+ 1 - 0
netclient/config/config.go

@@ -23,6 +23,7 @@ import (
 // ClientConfig - struct for dealing with client configuration
 type ClientConfig struct {
 	Server          ServerConfig   `yaml:"server"`
+	Registered      bool           `yaml:"registered"`
 	Node            models.Node    `yaml:"node"`
 	NetworkSettings models.Network `yaml:"networksettings"`
 	Network         string         `yaml:"network"`

+ 6 - 1
netclient/functions/join.go

@@ -186,7 +186,12 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string) error {
 	if err != nil {
 		return err
 	}
-	if cfg.Daemon != "off" {
+	if !cfg.Registered {
+		if err := Register(cfg, privateKey); err != nil {
+			logger.Log(0, "registration failed", err.Error())
+		}
+	}
+	if cfg.Daemon != "off" && cfg.Registered {
 		err = daemon.InstallDaemon(cfg)
 		if err != nil {
 			return err

+ 5 - 11
netclient/functions/register.go

@@ -1,7 +1,6 @@
 package functions
 
 import (
-	"bytes"
 	"crypto/ed25519"
 	"crypto/rand"
 	"encoding/json"
@@ -47,7 +46,8 @@ func Register(cfg *config.ClientConfig, key string) error {
 	} else if err != nil {
 		return err
 	}
-	return JoinNetwork(cfg, key)
+	cfg.Registered = true
+	return nil
 }
 
 // RegisterWithServer calls the register endpoint with privatekey and commonname - api returns ca and client certificate
@@ -56,20 +56,14 @@ func RegisterWithServer(private *ed25519.PrivateKey, cfg *config.ClientConfig) e
 		Key:        *private,
 		CommonName: tls.NewCName(cfg.Node.Name),
 	}
-	payload, err := json.Marshal(data)
-	if err != nil {
-		return err
-	}
 	url := "https://" + cfg.Server.API + "/api/server/register"
 	log.Println("register at ", url)
-	request, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(payload))
+
+	token, err := Authenticate(cfg)
 	if err != nil {
 		return err
 	}
-	request.Header.Set("Content-Type", "application/json")
-	request.Header.Set("authorization", "Bearer "+cfg.Server.AccessKey)
-	client := http.Client{}
-	response, err := client.Do(request)
+	response, err := API(data, http.MethodPut, url, token)
 	if err != nil {
 		return err
 	}