mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-11 19:51:29 +08:00
got server side client registration working
This commit is contained in:
@@ -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: {}
|
||||||
|
@@ -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
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
10.10.10.1 netmaker.default
|
||||||
|
@@ -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()
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
9
main.go
9
main.go
@@ -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)
|
||||||
|
@@ -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]
|
||||||
|
if len(tokenvals) > 5 {
|
||||||
cfg.Node.LocalRange = 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")
|
||||||
}
|
}
|
||||||
|
@@ -2,13 +2,13 @@ package local
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
//"github.com/davecgh/go-spew/spew"
|
//"github.com/davecgh/go-spew/spew"
|
||||||
|
"errors"
|
||||||
"github.com/gravitl/netmaker/netclient/config"
|
"github.com/gravitl/netmaker/netclient/config"
|
||||||
"fmt"
|
"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)
|
||||||
|
@@ -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{
|
||||||
|
Reference in New Issue
Block a user