Quellcode durchsuchen

adding checkin and dns fixes

afeiszli vor 4 Jahren
Ursprung
Commit
7c36a83af4

+ 2 - 1
netclient/functions/checkin.go

@@ -286,7 +286,7 @@ func CheckIn(network string) error {
 
 func Pull (network string) error{
         node := server.GetNode(network)
-        cfg, err := config.ReadConfig(network)
+	cfg, err := config.ReadConfig(network)
         if err != nil {
                 return err
         }
@@ -326,6 +326,7 @@ func Pull (network string) error{
         if err != nil {
                 return err
         }
+
 	return err
 }
 

+ 59 - 0
netclient/local/dns.go

@@ -0,0 +1,59 @@
+package local
+
+import (
+	"io/ioutil"
+	"os"
+	"strings"
+	//"github.com/davecgh/go-spew/spew"
+        "log"
+        "os/exec"
+)
+
+func SetDNS(nameserver string) error {
+        bytes, err := ioutil.ReadFile("/etc/resolv.conf")
+        if err != nil {
+                return err
+        }
+        resolvstring := string(bytes)
+        // //check whether s contains substring text
+        hasdns := strings.Contains(resolvstring, nameserver)
+        if hasdns {
+                return nil
+        }
+        resolv, err := os.OpenFile("/etc/resolv.conf",os.O_APPEND|os.O_WRONLY, 0644)
+        if err != nil {
+                return err
+        }
+        defer resolv.Close()
+        _, err = resolv.WriteString("nameserver " + nameserver + "\n")
+
+        return err
+}
+
+
+func UpdateDNS(ifacename string, network string, nameserver string) error {
+                _, err := exec.LookPath("resolvectl")
+                if err != nil {
+                        log.Println(err)
+                        log.Println("WARNING: resolvectl not present. Unable to set dns. Install resolvectl or run manually.")
+                } else {
+                        _, err = exec.Command("resolvectl", "domain", ifacename, "~"+network).Output()
+                        if err != nil {
+                                log.Println(err)
+                                log.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
+                        } else {
+                                _, err = exec.Command("resolvectl", "default-route", ifacename, "false").Output()
+                                if err != nil {
+                                        log.Println(err)
+                                        log.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
+                                } else {
+                                        _, err = exec.Command("resolvectl", "dns", ifacename, nameserver).Output()
+                                        if err!= nil {
+						log.Println("WARNING: Error encountered running resolvectl dns " + ifacename + " " + nameserver)
+						log.Println(err)
+					}
+                                }
+                        }
+                }
+		return err
+}

+ 0 - 21
netclient/local/local.go

@@ -36,27 +36,6 @@ func FileExists(f string) bool {
     return !info.IsDir()
 }
 
-func SetDNS(nameserver string) error {
-	bytes, err := ioutil.ReadFile("/etc/resolv.conf")
-	if err != nil {
-		return err
-	}
-	resolvstring := string(bytes)
-	// //check whether s contains substring text
-	hasdns := strings.Contains(resolvstring, nameserver)
-	if hasdns {
-		return nil
-	}
-	resolv, err := os.OpenFile("/etc/resolv.conf",os.O_APPEND|os.O_WRONLY, 0644)
-	if err != nil {
-		return err
-	}
-	defer resolv.Close()
-	_, err = resolv.WriteString("nameserver " + nameserver + "\n")
-
-	return err
-}
-
 func ConfigureSystemD(network string) error {
 	/*
 	path, err := os.Getwd()

+ 1 - 1
netclient/main.go

@@ -146,7 +146,7 @@ func main() {
         &cli.StringFlag{
             Name:  "dns",
             EnvVars: []string{"NETCLIENT_DNS"},
-            Value: "",
+            Value: "on",
             Usage: "Sets private dns if 'on'. Ignores if 'off'. Will retrieve from network if unset.",
         },
         &cli.StringFlag{

+ 5 - 1
netclient/server/grpc.go

@@ -190,7 +190,11 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
                         continue
                 }
                 if nodecfg.Endpoint == res.Peers.Endpoint {
-                        continue
+                        if nodecfg.LocalAddress != res.Peers.Localaddress && res.Peers.Localaddress != "" {
+				res.Peers.Endpoint = res.Peers.Localaddress
+			} else {
+				continue
+			}
                 }
 
                 var peer wgtypes.PeerConfig

+ 1 - 22
netclient/wireguard/kernel.go

@@ -260,30 +260,9 @@ func InitWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
 			fmt.Printf("This is inconvenient: %v", err)
 		}
 	}
-
 	//=========DNS Setup==========\\
 	if nodecfg.DNS == "on" {
-
-	        _, err := exec.LookPath("resolvectl")
-		if err != nil {
-			fmt.Println(err)
-			fmt.Println("WARNING: resolvectl not present. Unable to set dns. Install resolvectl or run manually.")
-		} else {
-			_, err = exec.Command("resolvectl", "domain", ifacename, "~"+network).Output()
-			if err != nil {
-				fmt.Println(err)
-				fmt.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
-			} else {
-				_, err = exec.Command("resolvectl", "default-route", ifacename, "false").Output()
-				if err != nil {
-	                                fmt.Println(err)
-	                                fmt.Println("WARNING: Error encountered setting dns. Aborted setting dns.")
-				} else {
-					_, err = exec.Command("resolvectl", "dns", ifacename, nameserver).Output()
-					fmt.Println(err)
-				}
-			}
-		}
+		_ = local.UpdateDNS(ifacename, network, nameserver)
 	}
         //=========End DNS Setup=======\\
 

+ 0 - 60
netmaker-install-v3.sh

@@ -1,60 +0,0 @@
-#!/bin/sh
-set -e
-
-[ -z "$SERVER_DOMAIN" ] && echo "Need to set SERVER_DOMAIN (format: 1.2.3.4 or mybackend.com)" && exit 1;
-
-
-docker volume create mongovol && docker run -d --name mongodb -v mongovol:/data/db --network host -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=mongopass mongo --bind_ip 0.0.0.0 
-
-mkdir -p /etc/netmaker/config/environments
-wget -O /etc/netmaker/netmaker https://github.com/gravitl/netmaker/releases/download/latest/netmaker
-chmod +x /etc/netmaker/netmaker
-
-
-cat >/etc/netmaker/config/environments/dev.yaml<<EOL
-server:
-  host: "$SERVER_DOMAIN"
-  apiport: "8081"
-  grpcport: "50051"
-  masterkey: "secretkey"
-  allowedorigin: "*"
-  restbackend: true            
-  agentbackend: true
-  defaultnetname: "default"
-  defaultnetrange: "10.10.10.0/24"
-  createdefault: true
-mongoconn:
-  user: "mongoadmin"
-  pass: "mongopass"
-  host: "localhost"
-  port: "27017"
-  opts: '/?authSource=admin'
-EOL
-
-cat >/etc/netmaker/config/Corefile<<EOL
-. {
-    hosts /root/netmaker.hosts
-}
-EOL
-
-cat >/etc/systemd/system/netmaker.service<<EOL
-[Unit]
-Description=Netmaker Server
-After=network.target
-
-[Service]
-Type=simple
-Restart=on-failure
-
-WorkingDirectory=/etc/netmaker
-ExecStart=/etc/netmaker/netmaker
-
-[Install]
-WantedBy=multi-user.target
-EOL
-systemctl daemon-reload
-systemctl start netmaker.service
-
-
-docker run -d --name netmaker-ui -p 80:80 -e BACKEND_URL="http://$SERVER_DOMAIN:8081" gravitl/netmaker-ui:v0.2
-docker run -d --name coredns --restart=always --volume=/etc/netmaker/config/:/root/ -p 52:53/udp coredns/coredns -conf /root/Corefile

+ 5 - 0
scripts/netclient-install.sh

@@ -1,6 +1,11 @@
 #!/bin/sh
 set -e
 
+if [[ $EUID -ne 0 ]]; then
+   echo "This script must be run as root" 
+   exit 1
+fi
+
 [ -z "$KEY" ] && KEY=nokey;
 
 wget -O netclient https://github.com/gravitl/netmaker/releases/download/v0.5/netclient