got server side client registration working

This commit is contained in:
afeiszli
2021-06-02 15:13:47 +00:00
parent 859f86a431
commit 2a4395014e
9 changed files with 64 additions and 49 deletions

View File

@@ -21,6 +21,6 @@ services:
ports: ports:
- "80:80" - "80:80"
environment: environment:
BACKEND_URL: "http://3.235.190.90:8081" BACKEND_URL: "http://HOST_IP:8081"
volumes: volumes:
mongovol: {} mongovol: {}

View File

@@ -44,7 +44,7 @@ services:
ports: ports:
- "80:80" - "80:80"
environment: environment:
BACKEND_URL: "http://3.235.190.90:8081" BACKEND_URL: "http://HOST_IP:8081"
coredns: coredns:
depends_on: depends_on:
- netmaker - netmaker

View File

@@ -0,0 +1 @@
10.10.10.1 netmaker.default

View File

@@ -3,7 +3,7 @@ package controller
import ( import (
"context" "context"
"fmt" "fmt"
"log"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
nodepb "github.com/gravitl/netmaker/grpc" nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
@@ -162,7 +162,7 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.CreateNo
if err != nil { if err != nil {
return nil, status.Errorf(codes.NotFound, fmt.Sprintf("Could not find network: %v", err)) return nil, status.Errorf(codes.NotFound, fmt.Sprintf("Could not find network: %v", err))
} else { } else {
fmt.Println("Creating node in network " + network.NetID) log.Println("Creating node in network " + network.NetID)
} }
if !validKey { if !validKey {
@@ -356,7 +356,6 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.UpdateNo
} }
func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.DeleteNodeReq) (*nodepb.DeleteNodeRes, error) { func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.DeleteNodeReq) (*nodepb.DeleteNodeRes, error) {
fmt.Println("beginning node delete")
macaddress := req.GetMacaddress() macaddress := req.GetMacaddress()
network := req.GetNetworkName() network := req.GetNetworkName()

View File

@@ -46,7 +46,6 @@ func CreateServerToken(netID string) (string, error) {
} }
accessstringdec := address + "|"+ address + "|" + address + "|" + netID + "|" + accesskey.Value + "|" + privAddr accessstringdec := address + "|"+ address + "|" + address + "|" + netID + "|" + accesskey.Value + "|" + privAddr
log.Println("Access String: " + accessstringdec)
accesskey.AccessString = base64.StdEncoding.EncodeToString([]byte(accessstringdec)) accesskey.AccessString = base64.StdEncoding.EncodeToString([]byte(accessstringdec))
network.AccessKeys = append(network.AccessKeys, accesskey) network.AccessKeys = append(network.AccessKeys, accesskey)

View File

@@ -10,7 +10,6 @@ import (
"github.com/gravitl/netmaker/serverctl" "github.com/gravitl/netmaker/serverctl"
"github.com/gravitl/netmaker/mongoconn" "github.com/gravitl/netmaker/mongoconn"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
"fmt"
"os" "os"
"os/exec" "os/exec"
"net" "net"
@@ -33,12 +32,12 @@ func main() {
output, err := cmd.Output() output, err := cmd.Output()
if err != nil { if err != nil {
fmt.Println("Error running 'id -u' for prereq check. Please investigate or disable client mode.") log.Println("Error running 'id -u' for prereq check. Please investigate or disable client mode.")
log.Fatal(err) log.Fatal(err)
} }
i, err := strconv.Atoi(string(output[:len(output)-1])) i, err := strconv.Atoi(string(output[:len(output)-1]))
if err != nil { if err != nil {
fmt.Println("Error retrieving uid from 'id -u' for prereq check. Please investigate or disable client mode.") log.Println("Error retrieving uid from 'id -u' for prereq check. Please investigate or disable client mode.")
log.Fatal(err) log.Fatal(err)
} }
if i != 0 { if i != 0 {
@@ -146,8 +145,8 @@ func runGRPC(wg *sync.WaitGroup, installserver bool) {
}() }()
log.Println("Agent Server succesfully started on port " + grpcport + " (gRPC)") log.Println("Agent Server succesfully started on port " + grpcport + " (gRPC)")
if !installserver { if installserver {
fmt.Println("Adding server to default network") log.Println("Adding server to default network")
success, err := serverctl.AddNetwork("default") success, err := serverctl.AddNetwork("default")
if err != nil { if err != nil {
log.Printf("Error adding to default network: %v", err) log.Printf("Error adding to default network: %v", err)

View File

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

View File

@@ -2,13 +2,13 @@ package local
import ( import (
//"github.com/davecgh/go-spew/spew" //"github.com/davecgh/go-spew/spew"
"github.com/gravitl/netmaker/netclient/config" "errors"
"fmt" "github.com/gravitl/netmaker/netclient/config"
"log"
"io/ioutil" "io/ioutil"
"path/filepath" "path/filepath"
"io" "io"
"strings" "strings"
"log"
"os" "os"
"os/exec" "os/exec"
) )
@@ -19,7 +19,7 @@ func RunCmds(commands []string) error {
args := strings.Fields(command) args := strings.Fields(command)
out, err := exec.Command(args[0], args[1:]...).Output() out, err := exec.Command(args[0], args[1:]...).Output()
if string(out) != "" { if string(out) != "" {
fmt.Println(string(out)) log.Println(string(out))
} }
if err != nil { if err != nil {
return err return err
@@ -72,13 +72,11 @@ func ConfigureSystemD(network string) error {
} }
binarypath := dir + "/netclient" binarypath := dir + "/netclient"
fmt.Println("Installing Binary from Path: " + binarypath)
_, err = os.Stat("/etc/netclient") _, err = os.Stat("/etc/netclient")
if os.IsNotExist(err) { if os.IsNotExist(err) {
os.Mkdir("/etc/netclient", 744) os.Mkdir("/etc/netclient", 744)
} else if err != nil { } else if err != nil {
fmt.Println("couldnt find or create /etc/netclient") log.Println("couldnt find or create /etc/netclient")
return err return err
} }
@@ -184,23 +182,23 @@ WantedBy=timers.target
err = cmdSysEnableService.Run() err = cmdSysEnableService.Run()
if err != nil { if err != nil {
fmt.Println("Error enabling netclient@.service. Please investigate.") log.Println("Error enabling netclient@.service. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysDaemonReload.Run() err = cmdSysDaemonReload.Run()
if err != nil { if err != nil {
fmt.Println("Error reloading system daemons. Please investigate.") log.Println("Error reloading system daemons. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysEnableTimer.Run() err = cmdSysEnableTimer.Run()
if err != nil { if err != nil {
fmt.Println("Error enabling netclient.timer. Please investigate.") log.Println("Error enabling netclient.timer. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysStartTimer.Run() err = cmdSysStartTimer.Run()
if err != nil { if err != nil {
fmt.Println("Error starting netclient-"+network+".timer. Please investigate.") log.Println("Error starting netclient-"+network+".timer. Please investigate.")
fmt.Println(err) log.Println(err)
} }
return nil return nil
} }
@@ -225,7 +223,7 @@ func RemoveSystemDServices(network string) error {
fullremove, err := isOnlyService(network) fullremove, err := isOnlyService(network)
if err != nil { if err != nil {
fmt.Println(err) log.Println(err)
} }
cmdSysDisableService := exec.Command("systemctl","disable","netclient@.service") cmdSysDisableService := exec.Command("systemctl","disable","netclient@.service")
@@ -234,43 +232,43 @@ func RemoveSystemDServices(network string) error {
cmdSysStopTimer := exec.Command("systemctl", "stop", "netclient-"+network+".timer") cmdSysStopTimer := exec.Command("systemctl", "stop", "netclient-"+network+".timer")
cmdSysDisableTimer := exec.Command("systemctl", "disable", "netclient-"+network+".timer") cmdSysDisableTimer := exec.Command("systemctl", "disable", "netclient-"+network+".timer")
if err != nil { if err != nil {
fmt.Println("Error stopping netclient@.service. Please investigate.") log.Println("Error stopping netclient@.service. Please investigate.")
fmt.Println(err) log.Println(err)
} }
if fullremove { if fullremove {
err = cmdSysDisableService.Run() err = cmdSysDisableService.Run()
if err != nil { if err != nil {
fmt.Println("Error disabling netclient@.service. Please investigate.") log.Println("Error disabling netclient@.service. Please investigate.")
fmt.Println(err) log.Println(err)
} }
} }
err = cmdSysStopTimer.Run() err = cmdSysStopTimer.Run()
if err != nil { if err != nil {
fmt.Println("Error stopping netclient-"+network+".timer. Please investigate.") log.Println("Error stopping netclient-"+network+".timer. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysDisableTimer.Run() err = cmdSysDisableTimer.Run()
if err != nil { if err != nil {
fmt.Println("Error disabling netclient-"+network+".timer. Please investigate.") log.Println("Error disabling netclient-"+network+".timer. Please investigate.")
fmt.Println(err) log.Println(err)
} }
if fullremove { if fullremove {
err = os.Remove("/etc/systemd/system/netclient@.service") err = os.Remove("/etc/systemd/system/netclient@.service")
} }
err = os.Remove("/etc/systemd/system/netclient-"+network+".timer") err = os.Remove("/etc/systemd/system/netclient-"+network+".timer")
if err != nil { if err != nil {
fmt.Println("Error removing file. Please investigate.") log.Println("Error removing file. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysDaemonReload.Run() err = cmdSysDaemonReload.Run()
if err != nil { if err != nil {
fmt.Println("Error reloading system daemons. Please investigate.") log.Println("Error reloading system daemons. Please investigate.")
fmt.Println(err) log.Println(err)
} }
err = cmdSysResetFailed.Run() err = cmdSysResetFailed.Run()
if err != nil { if err != nil {
fmt.Println("Error reseting failed system services. Please investigate.") log.Println("Error reseting failed system services. Please investigate.")
fmt.Println(err) log.Println(err)
} }
return err return err
@@ -301,13 +299,13 @@ func WipeLocal(network string) error{
} }
err = cmdIPLinkDel.Run() err = cmdIPLinkDel.Run()
if err != nil { if err != nil {
fmt.Println(err) log.Println(err)
} }
if nodecfg.PostDown != "" { if nodecfg.PostDown != "" {
runcmds := strings.Split(nodecfg.PostDown, "; ") runcmds := strings.Split(nodecfg.PostDown, "; ")
err = RunCmds(runcmds) err = RunCmds(runcmds)
if err != nil { if err != nil {
fmt.Println("Error encountered running PostDown: " + err.Error()) log.Println("Error encountered running PostDown: " + err.Error())
} }
} }
} }
@@ -345,7 +343,7 @@ func copy(src, dst string) (int64, error) {
} }
if !sourceFileStat.Mode().IsRegular() { if !sourceFileStat.Mode().IsRegular() {
return 0, fmt.Errorf("%s is not a regular file", src) return 0, errors.New(src + " is not a regular file")
} }
source, err := os.Open(src) source, err := os.Open(src)

View File

@@ -71,6 +71,13 @@ func main() {
Value: 0, Value: 0,
Usage: "Default PersistentKeepAlive for Peers in WireGuard Interface.", Usage: "Default PersistentKeepAlive for Peers in WireGuard Interface.",
}, },
&cli.StringFlag{
Name: "operatingsystem",
Aliases: []string{"os"},
EnvVars: []string{"NETCLIENT_OS"},
Value: "",
Usage: "Identifiable name for machine within Netmaker network.",
},
&cli.StringFlag{ &cli.StringFlag{
Name: "name", Name: "name",
EnvVars: []string{"NETCLIENT_NAME"}, EnvVars: []string{"NETCLIENT_NAME"},
@@ -105,12 +112,17 @@ func main() {
Usage: "WireGuard local network interface name.", Usage: "WireGuard local network interface name.",
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: "server", Name: "apiserver",
Aliases: []string{"s"}, EnvVars: []string{"NETCLIENT_API_SERVER"},
EnvVars: []string{"NETCLIENT_SERVER"},
Value: "", Value: "",
Usage: "Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server.", Usage: "Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server.",
}, },
&cli.StringFlag{
Name: "grpcserver",
EnvVars: []string{"NETCLIENT_GRPC_SERVER"},
Value: "",
Usage: "Address + API Port (e.g. 1.2.3.4:8081) of Netmaker server.",
},
&cli.StringFlag{ &cli.StringFlag{
Name: "key", Name: "key",
Aliases: []string{"k"}, Aliases: []string{"k"},
@@ -179,6 +191,12 @@ func main() {
Value: "on", Value: "on",
Usage: "Installs daemon if 'on'. Ignores if 'off'. On by default.", Usage: "Installs daemon if 'on'. Ignores if 'off'. On by default.",
}, },
&cli.StringFlag{
Name: "roaming",
EnvVars: []string{"NETCLIENT_ROAMING"},
Value: "on",
Usage: "Checks for IP changes if 'on'. Ignores if 'off'. On by default.",
},
} }
app.Commands = []*cli.Command{ app.Commands = []*cli.Command{