diff --git a/netclient/functions/common.go b/netclient/functions/common.go index 7b78d7ba..34ead956 100644 --- a/netclient/functions/common.go +++ b/netclient/functions/common.go @@ -192,37 +192,10 @@ func LeaveNetwork(network string) error { if err := removeHostDNS(cfg.Node.Interface, ncutils.IsWindows()); err != nil { logger.Log(0, "failed to delete dns entries for", cfg.Node.Interface, err.Error()) } - logger.Log(2, "deleting broker keys as required") - if !brokerInUse(cfg.Server.Server) { - if err := deleteBrokerFiles(cfg.Server.Server); err != nil { - logger.Log(0, "failed to deleter certs for", cfg.Server.Server, err.Error()) - } - } logger.Log(2, "restarting daemon") return daemon.Restart() } -func brokerInUse(broker string) bool { - networks, _ := ncutils.GetSystemNetworks() - for _, net := range networks { - cfg := config.ClientConfig{} - cfg.Network = net - cfg.ReadConfig() - if cfg.Server.Server == broker { - return true - } - } - return false -} - -func deleteBrokerFiles(broker string) error { - dir := ncutils.GetNetclientServerPath(broker) - if err := os.RemoveAll(dir); err != nil { - return err - } - return nil -} - func deleteNodeFromServer(cfg *config.ClientConfig) error { node := cfg.Node if node.IsServer == "yes" { @@ -340,6 +313,7 @@ func API(data any, method, url, authorization string) (*http.Response, error) { if authorization != "" { request.Header.Set("authorization", "Bearer "+authorization) } + request.Header.Set("requestfrom", "node") return HTTPClient.Do(request) } diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index ae626564..12b3ddbe 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -2,8 +2,6 @@ package functions import ( "context" - "crypto/tls" - "crypto/x509" "errors" "fmt" "os" @@ -68,14 +66,18 @@ func Daemon() error { cancel() logger.Log(0, "shutting down netclient daemon") wg.Wait() - mqclient.Disconnect(250) + if mqclient != nil { + mqclient.Disconnect(250) + } logger.Log(0, "shutdown complete") return nil case <-reset: logger.Log(0, "received reset") cancel() wg.Wait() - mqclient.Disconnect(250) + if mqclient != nil { + mqclient.Disconnect(250) + } logger.Log(0, "restarting daemon") cancel = startGoRoutines(&wg) } @@ -111,14 +113,7 @@ func startGoRoutines(wg *sync.WaitGroup) context.CancelFunc { } } wg.Add(1) - for { - if mqclient != nil && mqclient.IsConnected() { - go Checkin(ctx, wg) - break - } - time.Sleep(time.Second) - } - + go Checkin(ctx, wg) return cancel } @@ -207,34 +202,6 @@ func messageQueue(ctx context.Context, wg *sync.WaitGroup, cfg *config.ClientCon logger.Log(0, "shutting down message queue for server", cfg.Server.Server) } -// NewTLSConf sets up tls configuration to connect to broker securely -func NewTLSConfig(server string) (*tls.Config, error) { - file := ncutils.GetNetclientServerPath(server) + ncutils.GetSeparator() + "root.pem" - certpool := x509.NewCertPool() - ca, err := os.ReadFile(file) - if err != nil { - logger.Log(0, "could not read CA file", err.Error()) - } - ok := certpool.AppendCertsFromPEM(ca) - if !ok { - logger.Log(0, "failed to append cert") - } - clientKeyPair, err := tls.LoadX509KeyPair(ncutils.GetNetclientServerPath(server)+ncutils.GetSeparator()+"client.pem", ncutils.GetNetclientPath()+ncutils.GetSeparator()+"client.key") - if err != nil { - logger.Log(0, "could not read client cert/key", err.Error()) - return nil, err - } - certs := []tls.Certificate{clientKeyPair} - return &tls.Config{ - RootCAs: certpool, - ClientAuth: tls.NoClientCert, - ClientCAs: nil, - Certificates: certs, - InsecureSkipVerify: false, - }, nil - -} - // func setMQTTSingenton creates a connection to broker for single use (ie to publish a message) // only to be called from cli (eg. connect/disconnect, join, leave) and not from daemon --- func setupMQTTSingleton(cfg *config.ClientConfig) error { diff --git a/netclient/functions/mqpublish.go b/netclient/functions/mqpublish.go index fe33a3fd..233bc2f5 100644 --- a/netclient/functions/mqpublish.go +++ b/netclient/functions/mqpublish.go @@ -29,7 +29,6 @@ var metricsCache = new(sync.Map) func Checkin(ctx context.Context, wg *sync.WaitGroup) { logger.Log(2, "starting checkin goroutine") defer wg.Done() - checkin() ticker := time.NewTicker(time.Minute * ncutils.CheckInInterval) defer ticker.Stop() for { @@ -38,7 +37,12 @@ func Checkin(ctx context.Context, wg *sync.WaitGroup) { logger.Log(0, "checkin routine closed") return case <-ticker.C: - checkin() + if mqclient != nil && mqclient.IsConnected() { + checkin() + } else { + logger.Log(0, "MQ client is not connected, skipping checkin...") + } + } } }