Browse Source

Merge pull request #168 from gravitl/develop

Develop
Alex 4 years ago
parent
commit
83949372c4

+ 1 - 1
compose/docker-compose.yml

@@ -33,7 +33,7 @@ services:
     restart: always
     network_mode: host
     environment:
-      SERVER_HOST: "3.235.190.90"
+      SERVER_HOST: "HOST_IP"
   netmaker-ui:
     container_name: netmaker-ui
     depends_on:

+ 0 - 1
controllers/networkHttpController.go

@@ -650,7 +650,6 @@ func CreateAccessKey(accesskey models.AccessKey, network models.Network) (models
 	// Create filter
 	filter := bson.M{"netid": network.NetID}
 	// Read update model from body request
-	fmt.Println("Adding key to " + network.NetID)
 	// prepare update model.
 	update := bson.D{
 		{"$set", bson.D{

+ 0 - 3
controllers/nodeGrpcController.go

@@ -3,7 +3,6 @@ package controller
 import (
 	"context"
 	"fmt"
-	"log"
 	"github.com/gravitl/netmaker/functions"
 	nodepb "github.com/gravitl/netmaker/grpc"
 	"github.com/gravitl/netmaker/models"
@@ -161,8 +160,6 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.CreateNo
 	network, err := functions.GetParentNetwork(node.Network)
 	if err != nil {
 		return nil, status.Errorf(codes.NotFound, fmt.Sprintf("Could not find network: %v", err))
-	} else {
-		log.Println("Creating node in network " + network.NetID)
 	}
 
 	if !validKey {

+ 0 - 3
functions/helpers.go

@@ -57,9 +57,6 @@ func CreateServerToken(netID string) (string, error) {
 	// Create filter
 	filter := bson.M{"netid": netID}
 
-	// Read update model from body request
-	fmt.Println("Adding key to " + network.NetID)
-
 	// prepare update model.
 	update := bson.D{
 		{"$set", bson.D{

+ 1 - 1
netclient/config/config.go

@@ -381,7 +381,7 @@ func GetCLIConfig(c *cli.Context) (ClientConfig, error){
                 cfg.Network = tokenvals[3]
                 cfg.Node.Network = tokenvals[3]
                 cfg.Server.AccessKey = tokenvals[4]
-                if len(tokenvals) > 5 {
+                if len(tokenvals) > 4 {
 			cfg.Node.LocalRange = tokenvals[5]
 		}
 		if c.String("grpcserver") != "" {

+ 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
 }
 

+ 1 - 2
netclient/functions/join.go

@@ -23,7 +23,7 @@ func JoinNetwork(cfg config.ClientConfig) error {
 
 	hasnet := local.HasNetwork(cfg.Network)
 	if hasnet {
-		   err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for cfg.Network " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient -c remove -n " + cfg.Network + "'. Then re-run the install command.")
+		   err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient leave -n " + cfg.Network + "'. Then re-run the install command.")
 		return err
 	}
 	log.Println("attempting to joining " + cfg.Network + " at " + cfg.Server.GRPCAddress)
@@ -111,7 +111,6 @@ func JoinNetwork(cfg config.ClientConfig) error {
 		}
         } else {
                 cfg.Node.Endpoint = cfg.Node.Endpoint
-		fmt.Println("Endpoint set in config. Setting to address: " + cfg.Node.Endpoint)
         }
 	if cfg.Node.PrivateKey == "" {
 		privatekey, err := wgtypes.GeneratePrivateKey()

+ 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 - 7
netclient/main.go

@@ -143,16 +143,10 @@ func main() {
             Value: "",
             Usage: "Local Range if network is local, for instance 192.168.1.0/24.",
         },
-        &cli.StringFlag{
-            Name:  "roaming",
-            EnvVars: []string{"NETCLIENT_ROAMING"},
-            Value: "on",
-            Usage: "Checks for changes in IP address during updates if 'on'. Stays static if 'off'. On by default.",
-        },
         &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-beta/netclient