reorder register/join

This commit is contained in:
Matthew R. Kasun 2022-04-25 10:38:29 -04:00
parent 0bebda718e
commit f5aa1d1e62
7 changed files with 16 additions and 20 deletions

View file

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

View file

@ -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

View file

@ -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
},
},

View file

@ -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)
}

View file

@ -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"`

View file

@ -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

View file

@ -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
}