mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-21 07:46:04 +08:00
fixed some bugs around join..
This commit is contained in:
parent
c89ad8d3ce
commit
7bf716429f
|
@ -7,16 +7,11 @@ import (
|
||||||
"github.com/gravitl/netmaker/netclient/daemon"
|
"github.com/gravitl/netmaker/netclient/daemon"
|
||||||
"github.com/gravitl/netmaker/netclient/functions"
|
"github.com/gravitl/netmaker/netclient/functions"
|
||||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// JoinCommsNetwork -- Join the message queue comms network
|
// JoinCommsNetwork -- Join the message queue comms network
|
||||||
func JoinCommsNetwork(cfg config.ClientConfig) error {
|
func JoinCommsNetwork(cfg config.ClientConfig) error {
|
||||||
key, err := wgtypes.GeneratePrivateKey()
|
if err := functions.JoinNetwork(cfg, "", true); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := functions.JoinNetwork(cfg, key.PublicKey().String()); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -28,26 +23,32 @@ func Join(cfg config.ClientConfig, privateKey string) error {
|
||||||
//check if comms network exists
|
//check if comms network exists
|
||||||
var commsCfg config.ClientConfig
|
var commsCfg config.ClientConfig
|
||||||
commsCfg.Network = cfg.Server.CommsNetwork
|
commsCfg.Network = cfg.Server.CommsNetwork
|
||||||
|
commsCfg.Node.Network = cfg.Server.CommsNetwork
|
||||||
|
commsCfg.Server.AccessKey = cfg.Server.AccessKey
|
||||||
|
commsCfg.Server.GRPCAddress = cfg.Server.GRPCAddress
|
||||||
|
commsCfg.Server.GRPCSSL = cfg.Server.GRPCSSL
|
||||||
|
commsCfg.Server.CoreDNSAddr = cfg.Server.CoreDNSAddr
|
||||||
commsCfg.ReadConfig()
|
commsCfg.ReadConfig()
|
||||||
if commsCfg.Node.Name == "" {
|
if commsCfg.Node.Name == "" {
|
||||||
if err := JoinCommsNetwork(commsCfg); err != nil {
|
if err := JoinCommsNetwork(commsCfg); err != nil {
|
||||||
ncutils.Log("could not join comms network " + err.Error())
|
ncutils.Log("could not join comms network " + err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
} else { // check if comms is currently reachable
|
||||||
//ensure comms network is reachable
|
if err := functions.PingServer(&commsCfg); err != nil {
|
||||||
if err := functions.PingServer(&commsCfg); err != nil {
|
if err := functions.LeaveNetwork(commsCfg.Network); err != nil {
|
||||||
if err := functions.LeaveNetwork(commsCfg.Network); err != nil {
|
ncutils.Log("could not leave comms network " + err.Error())
|
||||||
ncutils.Log("could not leave comms network " + err.Error())
|
return err
|
||||||
return err
|
}
|
||||||
}
|
if err := JoinCommsNetwork(commsCfg); err != nil {
|
||||||
if err := JoinCommsNetwork(commsCfg); err != nil {
|
ncutils.Log("could not join comms network " + err.Error())
|
||||||
ncutils.Log("could not join comms network " + err.Error())
|
return err
|
||||||
return err
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//join network
|
//join network
|
||||||
err = functions.JoinNetwork(cfg, privateKey)
|
err = functions.JoinNetwork(cfg, privateKey, false)
|
||||||
if err != nil && !cfg.DebugOn {
|
if err != nil && !cfg.DebugOn {
|
||||||
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
|
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
|
||||||
ncutils.PrintLog("error installing: "+err.Error(), 1)
|
ncutils.PrintLog("error installing: "+err.Error(), 1)
|
||||||
|
|
|
@ -126,7 +126,16 @@ func setupMQTT(publish bool, networkName string) mqtt.Client {
|
||||||
opts.SetWriteTimeout(time.Minute)
|
opts.SetWriteTimeout(time.Minute)
|
||||||
opts.SetOnConnectHandler(func(client mqtt.Client) {
|
opts.SetOnConnectHandler(func(client mqtt.Client) {
|
||||||
if !publish {
|
if !publish {
|
||||||
SetSubscriptions(client, cfg)
|
networks, err := ncutils.GetSystemNetworks()
|
||||||
|
if err != nil {
|
||||||
|
ncutils.Log("error retriving networks " + err.Error())
|
||||||
|
}
|
||||||
|
for _, network := range networks {
|
||||||
|
var currConf config.ClientConfig
|
||||||
|
currConf.Network = network
|
||||||
|
currConf.ReadConfig()
|
||||||
|
SetSubscriptions(client, &currConf)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
opts.SetOrderMatters(true)
|
opts.SetOrderMatters(true)
|
||||||
|
@ -182,29 +191,20 @@ func SetSubscriptions(client mqtt.Client, cfg *config.ClientConfig) {
|
||||||
}
|
}
|
||||||
ncutils.Log("subscribed to all topics for debugging purposes")
|
ncutils.Log("subscribed to all topics for debugging purposes")
|
||||||
}
|
}
|
||||||
networks, err := ncutils.GetSystemNetworks()
|
|
||||||
if err != nil {
|
|
||||||
ncutils.Log("error retriving networks " + err.Error())
|
|
||||||
}
|
|
||||||
for _, network := range networks {
|
|
||||||
var cfg config.ClientConfig
|
|
||||||
cfg.Network = network
|
|
||||||
cfg.ReadConfig()
|
|
||||||
|
|
||||||
if token := client.Subscribe(fmt.Sprintf("update/%s/%s", cfg.Node.Network, cfg.Node.ID), 0, mqtt.MessageHandler(NodeUpdate)); token.Wait() && token.Error() != nil {
|
if token := client.Subscribe(fmt.Sprintf("update/%s/%s", cfg.Node.Network, cfg.Node.ID), 0, mqtt.MessageHandler(NodeUpdate)); token.Wait() && token.Error() != nil {
|
||||||
ncutils.Log(token.Error().Error())
|
ncutils.Log(token.Error().Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if cfg.DebugOn {
|
if cfg.DebugOn {
|
||||||
ncutils.Log(fmt.Sprintf("subscribed to node updates for node %s update/%s/%s", cfg.Node.Name, cfg.Node.Network, cfg.Node.ID))
|
ncutils.Log(fmt.Sprintf("subscribed to node updates for node %s update/%s/%s", cfg.Node.Name, cfg.Node.Network, cfg.Node.ID))
|
||||||
}
|
}
|
||||||
if token := client.Subscribe(fmt.Sprintf("peers/%s/%s", cfg.Node.Network, cfg.Node.ID), 0, mqtt.MessageHandler(UpdatePeers)); token.Wait() && token.Error() != nil {
|
if token := client.Subscribe(fmt.Sprintf("peers/%s/%s", cfg.Node.Network, cfg.Node.ID), 0, mqtt.MessageHandler(UpdatePeers)); token.Wait() && token.Error() != nil {
|
||||||
ncutils.Log(token.Error().Error())
|
ncutils.Log(token.Error().Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if cfg.DebugOn {
|
if cfg.DebugOn {
|
||||||
ncutils.Log(fmt.Sprintf("subscribed to peer updates for node %s peers/%s/%s", cfg.Node.Name, cfg.Node.Network, cfg.Node.ID))
|
ncutils.Log(fmt.Sprintf("subscribed to peer updates for node %s peers/%s/%s", cfg.Node.Name, cfg.Node.Network, cfg.Node.ID))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// JoinNetwork - helps a client join a network
|
// JoinNetwork - helps a client join a network
|
||||||
func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
func JoinNetwork(cfg config.ClientConfig, privateKey string, iscomms bool) error {
|
||||||
if cfg.Node.Network == "" {
|
if cfg.Node.Network == "" {
|
||||||
return errors.New("no network provided")
|
return errors.New("no network provided")
|
||||||
}
|
}
|
||||||
|
@ -250,16 +250,18 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.Daemon != "off" {
|
if !iscomms {
|
||||||
err = daemon.InstallDaemon(cfg)
|
if cfg.Daemon != "off" {
|
||||||
}
|
err = daemon.InstallDaemon(cfg)
|
||||||
if err != nil {
|
}
|
||||||
return err
|
if err != nil {
|
||||||
} else {
|
return err
|
||||||
daemon.Restart()
|
} else {
|
||||||
|
daemon.Restart()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// format name appropriately. Set to blank on failure
|
// format name appropriately. Set to blank on failure
|
||||||
|
|
Loading…
Reference in a new issue