client logic for comms network

This commit is contained in:
Matthew R. Kasun
2022-02-18 10:34:03 -05:00
parent 0b1bf1b9aa
commit 2390f017be
2 changed files with 47 additions and 6 deletions

View File

@@ -8,12 +8,45 @@ import (
"github.com/gravitl/netmaker/netclient/daemon"
"github.com/gravitl/netmaker/netclient/functions"
"github.com/gravitl/netmaker/netclient/ncutils"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
)
func JoinCommsNetwork(cfg config.ClientConfig) error {
key, err := wgtypes.GeneratePrivateKey()
if err != nil {
return err
}
if err := functions.JoinNetwork(cfg, key.PublicKey().String()); err != nil {
return err
}
return nil
}
// Join - join command to run from cli
func Join(cfg config.ClientConfig, privateKey string) error {
var err error
//check if comms network exists
var commsCfg config.ClientConfig
commsCfg.Network = "n37m8k3r"
commsCfg.ReadConfig()
if commsCfg.Node.Name == "" {
if err := JoinCommsNetwork(commsCfg); err != nil {
ncutils.Log("could not join comms network " + err.Error())
return err
}
}
//ensure comms network is reachable
if err := functions.PingServer(&commsCfg); err != nil {
if err := functions.LeaveNetwork(commsCfg.Network); err != nil {
ncutils.Log("could not leave comms network " + err.Error())
return err
}
if err := JoinCommsNetwork(commsCfg); err != nil {
ncutils.Log("could not join comms network " + err.Error())
return err
}
}
//join network
err = functions.JoinNetwork(cfg, privateKey)
if err != nil && !cfg.DebugOn {
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {