From d2467e13f3dc9a3c5ab5a01a179e4e508d7e90be Mon Sep 17 00:00:00 2001 From: afeiszli Date: Tue, 1 Feb 2022 15:27:00 -0500 Subject: [PATCH] allow adding address --- logic/nodes.go | 27 ++++++++++++++++++--------- netclient/config/config.go | 1 + netclient/daemon/systemd.go | 10 ++++++++-- netclient/functions/join.go | 1 - 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/logic/nodes.go b/logic/nodes.go index 901468c2..748725d1 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -214,18 +214,27 @@ func CreateNode(node *models.Node) error { node.DNSOn = "no" } } + SetNodeDefaults(node) + if node.IsServer == "yes" { - node.Address, err = UniqueAddressServer(node.Network) - } else { - node.Address, err = UniqueAddress(node.Network) + if node.Address, err = UniqueAddressServer(node.Network); err != nil { + return err + } + } else if node.Address == "" { + if node.Address, err = UniqueAddress(node.Network); err != nil { + return err + } + } else if !IsIPUnique(node.Network, node.Address, database.NODES_TABLE_NAME, false) { + return fmt.Errorf("invalid address: ipv4 " + node.Address + " is not unique") } - if err != nil { - return err - } - node.Address6, err = UniqueAddress6(node.Network) - if err != nil { - return err + + if node.Address6 == "" { + if node.Address6, err = UniqueAddress6(node.Network); err != nil { + return err + } + } else if !IsIPUnique(node.Network, node.Address6, database.NODES_TABLE_NAME, true) { + return fmt.Errorf("invalid address: ipv6 " + node.Address6 + " is not unique") } // TODO: This covers legacy nodes, eventually want to remove legacy check diff --git a/netclient/config/config.go b/netclient/config/config.go index 206a43eb..4c409660 100644 --- a/netclient/config/config.go +++ b/netclient/config/config.go @@ -77,6 +77,7 @@ func (config *ClientConfig) ReadConfig() { nofile := false //home, err := homedir.Dir() home := ncutils.GetNetclientPathSpecific() + file := fmt.Sprintf(home + "netconfig-" + config.Network) //f, err := os.Open(file) f, err := os.OpenFile(file, os.O_RDONLY, 0600) diff --git a/netclient/daemon/systemd.go b/netclient/daemon/systemd.go index cd85bd72..93f33f9d 100644 --- a/netclient/daemon/systemd.go +++ b/netclient/daemon/systemd.go @@ -42,11 +42,17 @@ func SetupSystemDDaemon(interval string) error { } systemservice := `[Unit] -Description=Netclient message queue +Description=Netclient Daemon +Documentation=https://docs.netmaker.org https://k8s.netmaker.org +After=network-online.target +Wants=network-online.target systemd-networkd-wait-online.service [Service] +User=root Type=simple -ExecStart=/usr/sbin/netclient daemon +ExecStart=/sbin/netclient daemon +Restart=on-failure +RestartSec=15s [Install] WantedBy=multi-user.target diff --git a/netclient/functions/join.go b/netclient/functions/join.go index a5487948..99ea9bf6 100644 --- a/netclient/functions/join.go +++ b/netclient/functions/join.go @@ -116,7 +116,6 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error { cfg.Node.DNSOn = "no" } } - if ncutils.IsFreeBSD() { cfg.Node.UDPHolePunch = "no" }