mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 00:17:13 +08:00 
			
		
		
		
	added netmaker check on checkin
This commit is contained in:
		
							parent
							
								
									f1760c625b
								
							
						
					
					
						commit
						eb1b79f898
					
				
					 1 changed files with 47 additions and 48 deletions
				
			
		|  | @ -3,7 +3,6 @@ package functions | |||
| import ( | ||||
|         "google.golang.org/grpc/credentials" | ||||
|         "crypto/tls" | ||||
| 	"fmt" | ||||
| 	"context" | ||||
| 	"strings" | ||||
| 	"log" | ||||
|  | @ -29,13 +28,13 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|         } | ||||
| 	nodecfg := cfg.Node | ||||
| 	servercfg := cfg.Server | ||||
| 	fmt.Println("Checking into server at " + servercfg.GRPCAddress) | ||||
| 	log.Println("Checking into server at " + servercfg.GRPCAddress) | ||||
| 
 | ||||
| 	setupcheck := true | ||||
| 	ipchange := false | ||||
| 
 | ||||
|         if nodecfg.DNS == "on" || cliconf.Node.DNS == "on" { | ||||
| 		fmt.Println("setting dns") | ||||
| 		log.Println("setting dns") | ||||
| 		ifacename := node.Interface | ||||
| 		nameserver := servercfg.CoreDNSAddr | ||||
| 		network := node.Nodenetwork | ||||
|  | @ -45,15 +44,15 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 	if !(nodecfg.IPForwarding == "off") { | ||||
| 		out, err := exec.Command("sysctl", "net.ipv4.ip_forward").Output() | ||||
|                  if err != nil { | ||||
| 	                 fmt.Println(err) | ||||
| 			 fmt.Println("WARNING: Error encountered setting ip forwarding. This can break functionality.") | ||||
| 	                 log.Println(err) | ||||
| 			 log.Println("WARNING: Error encountered setting ip forwarding. This can break functionality.") | ||||
|                  } else { | ||||
|                          s := strings.Fields(string(out)) | ||||
|                          if s[2] != "1" { | ||||
| 				_, err = exec.Command("sysctl", "-w", "net.ipv4.ip_forward=1").Output() | ||||
| 				if err != nil { | ||||
| 					fmt.Println(err) | ||||
| 					fmt.Println("WARNING: Error encountered setting ip forwarding. You may want to investigate this.") | ||||
| 					log.Println(err) | ||||
| 					log.Println("WARNING: Error encountered setting ip forwarding. You may want to investigate this.") | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | @ -61,15 +60,15 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 
 | ||||
| 	if nodecfg.Roaming != "off" { | ||||
| 		if nodecfg.IsLocal != "yes" { | ||||
| 		fmt.Println("Checking to see if public addresses have changed") | ||||
| 		log.Println("Checking to see if public addresses have changed") | ||||
| 		extIP, err := getPublicIP() | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Error encountered checking ip addresses: %v", err) | ||||
| 			log.Println("Error encountered checking ip addresses: %v", err) | ||||
| 		} | ||||
| 		if nodecfg.Endpoint != extIP  && extIP != "" { | ||||
| 	                fmt.Println("Endpoint has changed from " + | ||||
| 	                log.Println("Endpoint has changed from " + | ||||
| 			nodecfg.Endpoint + " to " + extIP) | ||||
| 			fmt.Println("Updating address") | ||||
| 			log.Println("Updating address") | ||||
| 			nodecfg.Endpoint = extIP | ||||
| 			nodecfg.PostChanges = "true" | ||||
| 			node.Endpoint = extIP | ||||
|  | @ -78,12 +77,12 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 		} | ||||
| 		intIP, err := getPrivateAddr() | ||||
|                 if err != nil { | ||||
|                         fmt.Printf("Error encountered checking ip addresses: %v", err) | ||||
|                         log.Println("Error encountered checking ip addresses: %v", err) | ||||
|                 } | ||||
|                 if nodecfg.LocalAddress != intIP  && intIP != "" { | ||||
|                         fmt.Println("Local Address has changed from " + | ||||
|                         log.Println("Local Address has changed from " + | ||||
| 			nodecfg.LocalAddress + " to " + intIP) | ||||
| 			fmt.Println("Updating address") | ||||
| 			log.Println("Updating address") | ||||
| 			nodecfg.LocalAddress = intIP | ||||
| 			nodecfg.PostChanges = "true" | ||||
| 			node.Localaddress = intIP | ||||
|  | @ -91,15 +90,15 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 			ipchange = true | ||||
|                 } | ||||
| 		} else { | ||||
|                 fmt.Println("Checking to see if local addresses have changed") | ||||
|                 log.Println("Checking to see if local addresses have changed") | ||||
|                 localIP, err := getLocalIP(nodecfg.LocalRange) | ||||
|                 if err != nil { | ||||
|                         fmt.Printf("Error encountered checking ip addresses: %v", err) | ||||
|                         log.Println("Error encountered checking ip addresses: %v", err) | ||||
|                 } | ||||
|                 if nodecfg.Endpoint != localIP  && localIP != "" { | ||||
|                         fmt.Println("Endpoint has changed from " + | ||||
|                         log.Println("Endpoint has changed from " + | ||||
|                         nodecfg.Endpoint + " to " + localIP) | ||||
|                         fmt.Println("Updating address") | ||||
|                         log.Println("Updating address") | ||||
|                         nodecfg.Endpoint = localIP | ||||
|                         nodecfg.LocalAddress = localIP | ||||
|                         nodecfg.PostChanges = "true" | ||||
|  | @ -110,7 +109,7 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|                 } | ||||
| 		} | ||||
| 		if node.Postchanges != "true" { | ||||
| 			fmt.Println("Addresses have not changed.") | ||||
| 			log.Println("Addresses have not changed.") | ||||
| 		} | ||||
| 	} | ||||
| 	if ipchange { | ||||
|  | @ -144,20 +143,20 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 	} | ||||
|         conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts) | ||||
|         if err != nil { | ||||
| 		fmt.Printf("Cant dial GRPC server: %v", err) | ||||
| 		log.Println("Cant dial GRPC server: %v", err) | ||||
| 		return err | ||||
|         } | ||||
|         wcclient = nodepb.NewNodeServiceClient(conn) | ||||
| 
 | ||||
|         ctx := context.Background() | ||||
|         fmt.Println("Authenticating with GRPC Server") | ||||
|         log.Println("Authenticating with GRPC Server") | ||||
|         ctx, err = auth.SetJWT(wcclient, network) | ||||
|         if err != nil { | ||||
|                 fmt.Printf("Failed to authenticate: %v", err) | ||||
|                 log.Println("Failed to authenticate: %v", err) | ||||
| 		return err | ||||
| 	} | ||||
|         fmt.Println("Authenticated") | ||||
|         fmt.Println("Checking In.") | ||||
|         log.Println("Authenticated") | ||||
|         log.Println("Checking In.") | ||||
| 
 | ||||
|         var header metadata.MD | ||||
| 	node.Nodenetwork = network | ||||
|  | @ -170,15 +169,15 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|         ) | ||||
|         if err != nil { | ||||
|         if  checkinres != nil && checkinres.Checkinresponse.Ispending { | ||||
|                 fmt.Println("Node is in pending status. Waiting for Admin approval of  node before making further updates.") | ||||
|                 log.Println("Node is in pending status. Waiting for Admin approval of  node before making further updates.") | ||||
|                 return nil | ||||
|         } | ||||
|                 fmt.Printf("Unable to process Check In request: %v", err) | ||||
|                 log.Println("Unable to process Check In request: %v", err) | ||||
| 		return err | ||||
|         } | ||||
| 	fmt.Println("Checked in.") | ||||
| 	log.Println("Checked in.") | ||||
| 	if  checkinres.Checkinresponse.Ispending { | ||||
| 		fmt.Println("Node is in pending status. Waiting for Admin approval of  node before making further updates.") | ||||
| 		log.Println("Node is in pending status. Waiting for Admin approval of  node before making further updates.") | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
|  | @ -189,30 +188,30 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|                 } | ||||
|                 readres, err := wcclient.ReadNode(ctx, readreq, grpc.Header(&header)) | ||||
|                 if err != nil { | ||||
|                         fmt.Printf("Error: %v", err) | ||||
|                         log.Println("Error: %v", err) | ||||
|                 } else { | ||||
|                 currentiface := readres.Node.Interface | ||||
|                 ifaceupdate := newinterface != currentiface | ||||
|                 if err != nil { | ||||
|                         log.Printf("Error retrieving interface: %v", err) | ||||
|                         log.Println("Error retrieving interface: %v", err) | ||||
|                 } | ||||
|                 if ifaceupdate { | ||||
| 			fmt.Println("Interface update: " + currentiface + | ||||
| 			log.Println("Interface update: " + currentiface + | ||||
| 			" >>>> " + newinterface) | ||||
|                         err := DeleteInterface(currentiface, nodecfg.PostDown) | ||||
|                         if err != nil { | ||||
|                                 fmt.Println("ERROR DELETING INTERFACE: " + currentiface) | ||||
|                                 log.Println("ERROR DELETING INTERFACE: " + currentiface) | ||||
|                         } | ||||
|                 err = wireguard.SetWGConfig(network, false) | ||||
|                 if err != nil { | ||||
|                         log.Printf("Error updating interface: %v", err) | ||||
|                         log.Println("Error updating interface: %v", err) | ||||
|                 } | ||||
| 		} | ||||
| 		} | ||||
| 
 | ||||
| 	if checkinres.Checkinresponse.Needconfigupdate { | ||||
| 		fmt.Println("Server has requested that node update config.") | ||||
| 		fmt.Println("Updating config from remote server.") | ||||
| 		log.Println("Server has requested that node update config.") | ||||
| 		log.Println("Updating config from remote server.") | ||||
|                 req := &nodepb.ReadNodeReq{ | ||||
|                         Macaddress: node.Macaddress, | ||||
|                         Network: node.Nodenetwork, | ||||
|  | @ -234,10 +233,10 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|                 } | ||||
| 		setupcheck = false | ||||
| 	} else if nodecfg.PostChanges == "true" { | ||||
|                 fmt.Println("Node has requested to update remote config.") | ||||
|                 fmt.Println("Posting local config to remote server.") | ||||
|                 log.Println("Node has requested to update remote config.") | ||||
|                 log.Println("Posting local config to remote server.") | ||||
| 		postnode := server.GetNode(network) | ||||
| 		fmt.Println("POSTING NODE: ",postnode.Macaddress,postnode.Saveconfig) | ||||
| 		log.Println("POSTING NODE: ",postnode.Macaddress,postnode.Saveconfig) | ||||
| 		req := &nodepb.UpdateNodeReq{ | ||||
|                                Node: &postnode, | ||||
|                         } | ||||
|  | @ -259,8 +258,8 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 		setupcheck = false | ||||
| 	} | ||||
|         if checkinres.Checkinresponse.Needkeyupdate { | ||||
|                 fmt.Println("Server has requested that node update key pairs.") | ||||
|                 fmt.Println("Proceeding to re-generate key pairs for Wiregard.") | ||||
|                 log.Println("Server has requested that node update key pairs.") | ||||
|                 log.Println("Proceeding to re-generate key pairs for Wiregard.") | ||||
|                 err = wireguard.SetWGKeyConfig(network, servercfg.GRPCAddress) | ||||
|                 if err != nil { | ||||
|                         return err | ||||
|  | @ -269,8 +268,8 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
|                 setupcheck = false | ||||
|         } | ||||
|         if checkinres.Checkinresponse.Needpeerupdate { | ||||
|                 fmt.Println("Server has requested that node update peer list.") | ||||
|                 fmt.Println("Updating peer list from remote server.") | ||||
|                 log.Println("Server has requested that node update peer list.") | ||||
|                 log.Println("Updating peer list from remote server.") | ||||
|                 err = wireguard.SetWGConfig(network, true) | ||||
|                 if err != nil { | ||||
| 			return err | ||||
|  | @ -279,7 +278,7 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 		setupcheck = false | ||||
|         } | ||||
| 	if checkinres.Checkinresponse.Needdelete { | ||||
| 		fmt.Println("This machine got the delete signal. Deleting.") | ||||
| 		log.Println("This machine got the delete signal. Deleting.") | ||||
|                 err := LeaveNetwork(network) | ||||
|                 if err != nil { | ||||
|                         return err | ||||
|  | @ -290,7 +289,7 @@ func CheckIn(cliconf config.ClientConfig) error { | |||
| 	iface := nodecfg.Interface | ||||
| 	_, err := net.InterfaceByName(iface) | ||||
|         if err != nil { | ||||
| 		fmt.Println("interface " + iface + " does not currently exist. Setting up WireGuard.") | ||||
| 		log.Println("interface " + iface + " does not currently exist. Setting up WireGuard.") | ||||
|                 err = wireguard.SetWGKeyConfig(network, servercfg.GRPCAddress) | ||||
|                 if err != nil { | ||||
|                         return err | ||||
|  | @ -320,7 +319,7 @@ func Pull (network string) error{ | |||
|         } | ||||
|         conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts) | ||||
|         if err != nil { | ||||
|                 fmt.Printf("Cant dial GRPC server: %v", err) | ||||
|                 log.Println("Cant dial GRPC server: %v", err) | ||||
|                 return err | ||||
|         } | ||||
|         wcclient = nodepb.NewNodeServiceClient(conn) | ||||
|  | @ -328,7 +327,7 @@ func Pull (network string) error{ | |||
|         ctx := context.Background() | ||||
|         ctx, err = auth.SetJWT(wcclient, network) | ||||
|         if err != nil { | ||||
|                 fmt.Printf("Failed to authenticate: %v", err) | ||||
|                 log.Println("Failed to authenticate: %v", err) | ||||
|                 return err | ||||
|         } | ||||
| 
 | ||||
|  | @ -370,7 +369,7 @@ func Push (network string) error{ | |||
|         } | ||||
|         conn, err := grpc.Dial(servercfg.GRPCAddress, requestOpts) | ||||
|         if err != nil { | ||||
|                 fmt.Printf("Cant dial GRPC server: %v", err) | ||||
|                 log.Println("Cant dial GRPC server: %v", err) | ||||
|                 return err | ||||
|         } | ||||
|         wcclient = nodepb.NewNodeServiceClient(conn) | ||||
|  | @ -378,7 +377,7 @@ func Push (network string) error{ | |||
|         ctx := context.Background() | ||||
|         ctx, err = auth.SetJWT(wcclient, network) | ||||
|         if err != nil { | ||||
|                 fmt.Printf("Failed to authenticate: %v", err) | ||||
|                 log.Println("Failed to authenticate: %v", err) | ||||
|                 return err | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue