added netmaker check on checkin

This commit is contained in:
afeiszli 2021-08-02 13:12:39 -04:00
parent f1760c625b
commit eb1b79f898

View file

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