Browse Source

allow adding address

afeiszli 3 years ago
parent
commit
d2467e13f3
4 changed files with 27 additions and 12 deletions
  1. 18 9
      logic/nodes.go
  2. 1 0
      netclient/config/config.go
  3. 8 2
      netclient/daemon/systemd.go
  4. 0 1
      netclient/functions/join.go

+ 18 - 9
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 err != nil {
-		return err
+		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")
 	}
-	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

+ 1 - 0
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)

+ 8 - 2
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

+ 0 - 1
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"
 	}