mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-29 03:12:36 +08:00
fixed client side for multinet and added group filter to query params server side.
This commit is contained in:
@@ -121,6 +121,7 @@ func UpdateNode(nodechange models.Node, node models.Node) (models.Node, error) {
|
|||||||
//Question: Is there a better way of doing this than a bunch of "if" statements? probably...
|
//Question: Is there a better way of doing this than a bunch of "if" statements? probably...
|
||||||
//Eventually, lets have a better way to check if any of the fields are filled out...
|
//Eventually, lets have a better way to check if any of the fields are filled out...
|
||||||
queryMac := node.MacAddress
|
queryMac := node.MacAddress
|
||||||
|
queryGroup := node.Group
|
||||||
notifygroup := false
|
notifygroup := false
|
||||||
|
|
||||||
if nodechange.Address != "" {
|
if nodechange.Address != "" {
|
||||||
@@ -183,7 +184,7 @@ func UpdateNode(nodechange models.Node, node models.Node) (models.Node, error) {
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
|
||||||
// Create filter
|
// Create filter
|
||||||
filter := bson.M{"macaddress": queryMac}
|
filter := bson.M{"macaddress": queryMac, "group": queryGroup}
|
||||||
|
|
||||||
node.SetLastModified()
|
node.SetLastModified()
|
||||||
|
|
||||||
@@ -446,7 +447,7 @@ func TimestampNode(node models.Node, updatecheckin bool, updatepeers bool, updat
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
|
||||||
// Create filter
|
// Create filter
|
||||||
filter := bson.M{"macaddress": node.MacAddress}
|
filter := bson.M{"macaddress": node.MacAddress, "group": node.Group}
|
||||||
|
|
||||||
// prepare update model.
|
// prepare update model.
|
||||||
update := bson.D{
|
update := bson.D{
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ func checkIn(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
|
||||||
filter := bson.M{"macaddress": params["macaddress"]}
|
filter := bson.M{"macaddress": params["macaddress"], "group": params["group"]}
|
||||||
|
|
||||||
//old code was inefficient, this is all we need.
|
//old code was inefficient, this is all we need.
|
||||||
time := time.Now().String()
|
time := time.Now().String()
|
||||||
@@ -570,7 +570,7 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) {
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
|
||||||
// Create filter
|
// Create filter
|
||||||
filter := bson.M{"macaddress": params["macaddress"]}
|
filter := bson.M{"macaddress": params["macaddress"], "group": params["group"]}
|
||||||
|
|
||||||
node.SetLastModified()
|
node.SetLastModified()
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ services:
|
|||||||
container_name: netmaker
|
container_name: netmaker
|
||||||
depends_on:
|
depends_on:
|
||||||
- mongodb
|
- mongodb
|
||||||
image: gravitl/netmaker:v0.1
|
image: gravitl/netmaker:v0.1-hotfix
|
||||||
ports:
|
ports:
|
||||||
- "8081:8081"
|
- "8081:8081"
|
||||||
- "50051:50051"
|
- "50051:50051"
|
||||||
|
|||||||
BIN
models/.node.go.swp
Normal file
BIN
models/.node.go.swp
Normal file
Binary file not shown.
@@ -3,18 +3,20 @@ package config
|
|||||||
import (
|
import (
|
||||||
// "github.com/davecgh/go-spew/spew"
|
// "github.com/davecgh/go-spew/spew"
|
||||||
"os"
|
"os"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
//homedir "github.com/mitchellh/go-homedir"
|
//homedir "github.com/mitchellh/go-homedir"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Config *ClientConfig
|
//var Config *ClientConfig
|
||||||
|
|
||||||
// Configurations exported
|
// Configurations exported
|
||||||
type ClientConfig struct {
|
type ClientConfig struct {
|
||||||
Server ServerConfig `yaml:"server"`
|
Server ServerConfig `yaml:"server"`
|
||||||
Node NodeConfig `yaml:"node"`
|
Node NodeConfig `yaml:"node"`
|
||||||
|
Network string
|
||||||
}
|
}
|
||||||
type ServerConfig struct {
|
type ServerConfig struct {
|
||||||
Address string `yaml:"address"`
|
Address string `yaml:"address"`
|
||||||
@@ -41,7 +43,11 @@ type NodeConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//reading in the env file
|
//reading in the env file
|
||||||
func Write(config *ClientConfig) error{
|
func Write(config *ClientConfig, network string) error{
|
||||||
|
if network == "" {
|
||||||
|
err := errors.New("No network provided. Exiting.")
|
||||||
|
return err
|
||||||
|
}
|
||||||
nofile := false
|
nofile := false
|
||||||
//home, err := homedir.Dir()
|
//home, err := homedir.Dir()
|
||||||
_, err := os.Stat("/etc/netclient")
|
_, err := os.Stat("/etc/netclient")
|
||||||
@@ -55,11 +61,11 @@ func Write(config *ClientConfig) error{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
file := fmt.Sprintf(home + "/.netconfig")
|
file := fmt.Sprintf(home + "/netconfig-" + network)
|
||||||
f, err := os.OpenFile(file, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm)
|
f, err := os.OpenFile(file, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
nofile = true
|
nofile = true
|
||||||
//fmt.Println("Could not access " + home + "/.netconfig, proceeding...")
|
//fmt.Println("Could not access " + home + "/netconfig, proceeding...")
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
@@ -71,7 +77,7 @@ func Write(config *ClientConfig) error{
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
newf, err := os.Create(home + "/.netconfig")
|
newf, err := os.Create(home + "/netconfig-" + network)
|
||||||
err = yaml.NewEncoder(newf).Encode(config)
|
err = yaml.NewEncoder(newf).Encode(config)
|
||||||
defer newf.Close()
|
defer newf.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -82,7 +88,11 @@ func Write(config *ClientConfig) error{
|
|||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
func WriteServer(server string, accesskey string) error{
|
func WriteServer(server string, accesskey string, network string) error{
|
||||||
|
if network == "" {
|
||||||
|
err := errors.New("No network provided. Exiting.")
|
||||||
|
return err
|
||||||
|
}
|
||||||
nofile := false
|
nofile := false
|
||||||
//home, err := homedir.Dir()
|
//home, err := homedir.Dir()
|
||||||
_, err := os.Stat("/etc/netclient")
|
_, err := os.Stat("/etc/netclient")
|
||||||
@@ -94,12 +104,12 @@ func WriteServer(server string, accesskey string) error{
|
|||||||
}
|
}
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
|
|
||||||
file := fmt.Sprintf(home + "/.netconfig")
|
file := fmt.Sprintf(home + "/netconfig-" + network)
|
||||||
//f, err := os.Open(file)
|
//f, err := os.Open(file)
|
||||||
f, err := os.OpenFile(file, os.O_CREATE|os.O_RDWR, 0666)
|
f, err := os.OpenFile(file, os.O_CREATE|os.O_RDWR, 0666)
|
||||||
//f, err := ioutil.ReadFile(file)
|
//f, err := ioutil.ReadFile(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("couldnt open netconfig")
|
fmt.Println("couldnt open netconfig-" + network)
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
nofile = true
|
nofile = true
|
||||||
//err = nil
|
//err = nil
|
||||||
@@ -111,7 +121,7 @@ func WriteServer(server string, accesskey string) error{
|
|||||||
var cfg ClientConfig
|
var cfg ClientConfig
|
||||||
|
|
||||||
if !nofile {
|
if !nofile {
|
||||||
fmt.Println("Writing to existing config file at " + home + "/.netconfig")
|
fmt.Println("Writing to existing config file at " + home + "/netconfig-" + network)
|
||||||
decoder := yaml.NewDecoder(f)
|
decoder := yaml.NewDecoder(f)
|
||||||
err = decoder.Decode(&cfg)
|
err = decoder.Decode(&cfg)
|
||||||
//err = yaml.Unmarshal(f, &cfg)
|
//err = yaml.Unmarshal(f, &cfg)
|
||||||
@@ -145,12 +155,12 @@ func WriteServer(server string, accesskey string) error{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("Creating new config file at " + home + "/.netconfig")
|
fmt.Println("Creating new config file at " + home + "/netconfig-" + network)
|
||||||
|
|
||||||
cfg.Server.Address = server
|
cfg.Server.Address = server
|
||||||
cfg.Server.AccessKey = accesskey
|
cfg.Server.AccessKey = accesskey
|
||||||
|
|
||||||
newf, err := os.Create(home + "/.netconfig")
|
newf, err := os.Create(home + "/netconfig-" + network)
|
||||||
err = yaml.NewEncoder(newf).Encode(cfg)
|
err = yaml.NewEncoder(newf).Encode(cfg)
|
||||||
defer newf.Close()
|
defer newf.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -168,7 +178,7 @@ func(config *ClientConfig) ReadConfig() {
|
|||||||
nofile := false
|
nofile := false
|
||||||
//home, err := homedir.Dir()
|
//home, err := homedir.Dir()
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
file := fmt.Sprintf(home + "/.netconfig")
|
file := fmt.Sprintf(home + "/netconfig-" + config.Network)
|
||||||
//f, err := os.Open(file)
|
//f, err := os.Open(file)
|
||||||
f, err := os.OpenFile(file, os.O_RDONLY, 0666)
|
f, err := os.OpenFile(file, os.O_RDONLY, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -194,12 +204,15 @@ func(config *ClientConfig) ReadConfig() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadConfig(network string) (*ClientConfig, error) {
|
||||||
func readConfig() *ClientConfig {
|
if network == "" {
|
||||||
|
err := errors.New("No network provided. Exiting.")
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
nofile := false
|
nofile := false
|
||||||
//home, err := homedir.Dir()
|
//home, err := homedir.Dir()
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
file := fmt.Sprintf(home + "/.netconfig")
|
file := fmt.Sprintf(home + "/netconfig-" + network)
|
||||||
f, err := os.Open(file)
|
f, err := os.Open(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
nofile = true
|
nofile = true
|
||||||
@@ -213,13 +226,14 @@ func readConfig() *ClientConfig {
|
|||||||
err = decoder.Decode(&cfg)
|
err = decoder.Decode(&cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("trouble decoding file")
|
fmt.Println("trouble decoding file")
|
||||||
log.Fatal(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &cfg
|
return &cfg, err
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
func init() {
|
func init() {
|
||||||
Config = readConfig()
|
Config = readConfig()
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -14,17 +14,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// CreateJWT func will used to create the JWT while signing in and signing out
|
// CreateJWT func will used to create the JWT while signing in and signing out
|
||||||
func SetJWT(client nodepb.NodeServiceClient) (context.Context, error) {
|
func SetJWT(client nodepb.NodeServiceClient, network string) (context.Context, error) {
|
||||||
//home, err := os.UserHomeDir()
|
//home, err := os.UserHomeDir()
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
tokentext, err := ioutil.ReadFile(home + "/.nettoken")
|
tokentext, err := ioutil.ReadFile(home + "/nettoken")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error reading token. Logging in to retrieve new token.")
|
fmt.Println("Error reading token. Logging in to retrieve new token.")
|
||||||
err = AutoLogin(client)
|
err = AutoLogin(client, network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong with Auto Login: %v", err))
|
return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong with Auto Login: %v", err))
|
||||||
}
|
}
|
||||||
tokentext, err = ioutil.ReadFile(home + "/.nettoken")
|
tokentext, err = ioutil.ReadFile(home + "/nettoken")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong: %v", err))
|
return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong: %v", err))
|
||||||
}
|
}
|
||||||
@@ -38,13 +38,17 @@ func SetJWT(client nodepb.NodeServiceClient) (context.Context, error) {
|
|||||||
return ctx, nil
|
return ctx, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func AutoLogin(client nodepb.NodeServiceClient) error {
|
func AutoLogin(client nodepb.NodeServiceClient, network string) error {
|
||||||
//home, err := os.UserHomeDir()
|
//home, err := os.UserHomeDir()
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
nodecfg := config.Config.Node
|
//nodecfg := config.Config.Node
|
||||||
|
config, err := config.ReadConfig(network)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
login := &nodepb.LoginRequest{
|
login := &nodepb.LoginRequest{
|
||||||
Password: nodecfg.Password,
|
Password: config.Node.Password,
|
||||||
Macaddress: nodecfg.MacAddress,
|
Macaddress: config.Node.MacAddress,
|
||||||
}
|
}
|
||||||
// RPC call
|
// RPC call
|
||||||
res, err := client.Login(context.TODO(), login)
|
res, err := client.Login(context.TODO(), login)
|
||||||
@@ -52,7 +56,7 @@ func AutoLogin(client nodepb.NodeServiceClient) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
tokenstring := []byte(res.Accesstoken)
|
tokenstring := []byte(res.Accesstoken)
|
||||||
err = ioutil.WriteFile(home + "/.nettoken", tokenstring, 0644)
|
err = ioutil.WriteFile(home + "/nettoken", tokenstring, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,12 @@ func Install(accesskey string, password string, server string, group string, noa
|
|||||||
}
|
}
|
||||||
defer wgclient.Close()
|
defer wgclient.Close()
|
||||||
|
|
||||||
nodecfg := config.Config.Node
|
cfg, err := config.ReadConfig(group)
|
||||||
servercfg := config.Config.Server
|
if err != nil {
|
||||||
|
log.Printf("No Config Yet. Will Write: %v", err)
|
||||||
|
}
|
||||||
|
nodecfg := cfg.Node
|
||||||
|
servercfg := cfg.Server
|
||||||
fmt.Println("SERVER SETTINGS:")
|
fmt.Println("SERVER SETTINGS:")
|
||||||
|
|
||||||
if server == "" {
|
if server == "" {
|
||||||
@@ -58,7 +62,7 @@ func Install(accesskey string, password string, server string, group string, noa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println(" AccessKey: " + accesskey)
|
fmt.Println(" AccessKey: " + accesskey)
|
||||||
err = config.WriteServer(server, accesskey)
|
err = config.WriteServer(server, accesskey, group)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error encountered while writing Server Config.")
|
fmt.Println("Error encountered while writing Server Config.")
|
||||||
return err
|
return err
|
||||||
@@ -278,13 +282,13 @@ func Install(accesskey string, password string, server string, group string, noa
|
|||||||
fmt.Println("Awaiting approval from Admin before configuring WireGuard.")
|
fmt.Println("Awaiting approval from Admin before configuring WireGuard.")
|
||||||
if !noauto {
|
if !noauto {
|
||||||
fmt.Println("Configuring Netmaker Service.")
|
fmt.Println("Configuring Netmaker Service.")
|
||||||
err = ConfigureSystemD()
|
err = ConfigureSystemD(group)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
peers, err := getPeers(node.Macaddress, node.Nodegroup, server)
|
peers, err := getPeers(node.Macaddress, group, server)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -299,7 +303,7 @@ func Install(accesskey string, password string, server string, group string, noa
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !noauto {
|
if !noauto {
|
||||||
err = ConfigureSystemD()
|
err = ConfigureSystemD(group)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -336,8 +340,16 @@ func getPublicIP() (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func modConfig(node *nodepb.Node) error{
|
func modConfig(node *nodepb.Node) error{
|
||||||
modconfig := config.Config
|
group := node.Nodegroup
|
||||||
modconfig.ReadConfig()
|
if group == "" {
|
||||||
|
return errors.New("No Group Provided")
|
||||||
|
}
|
||||||
|
//modconfig := config.Config
|
||||||
|
modconfig, err := config.ReadConfig(group)
|
||||||
|
//modconfig.ReadConfig()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
nodecfg := modconfig.Node
|
nodecfg := modconfig.Node
|
||||||
if node.Name != ""{
|
if node.Name != ""{
|
||||||
nodecfg.Name = node.Name
|
nodecfg.Name = node.Name
|
||||||
@@ -376,7 +388,7 @@ func modConfig(node *nodepb.Node) error{
|
|||||||
nodecfg.PostChanges = node.Postchanges
|
nodecfg.PostChanges = node.Postchanges
|
||||||
}
|
}
|
||||||
modconfig.Node = nodecfg
|
modconfig.Node = nodecfg
|
||||||
err := config.Write(modconfig)
|
err = config.Write(modconfig, group)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,8 +429,14 @@ func initWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
wgclient, err := wgctrl.New()
|
wgclient, err := wgctrl.New()
|
||||||
modcfg := config.Config
|
//modcfg := config.Config
|
||||||
modcfg.ReadConfig()
|
//modcfg.ReadConfig()
|
||||||
|
modcfg, err := config.ReadConfig(node.Nodegroup)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
nodecfg := modcfg.Node
|
nodecfg := modcfg.Node
|
||||||
fmt.Println("beginning local WG config")
|
fmt.Println("beginning local WG config")
|
||||||
|
|
||||||
@@ -535,10 +553,15 @@ func initWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func setWGConfig() error {
|
func setWGConfig(network string) error {
|
||||||
servercfg := config.Config.Server
|
|
||||||
nodecfg := config.Config.Node
|
cfg, err := config.ReadConfig(network)
|
||||||
node := getNode()
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
servercfg := cfg.Server
|
||||||
|
nodecfg := cfg.Node
|
||||||
|
node := getNode(network)
|
||||||
|
|
||||||
peers, err := getPeers(node.Macaddress, nodecfg.Group, servercfg.Address)
|
peers, err := getPeers(node.Macaddress, nodecfg.Group, servercfg.Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -612,10 +635,14 @@ func getPrivateAddr() (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func CheckIn() error {
|
func CheckIn(network string) error {
|
||||||
node := getNode()
|
node := getNode(network)
|
||||||
nodecfg := config.Config.Node
|
cfg, err := config.ReadConfig(network)
|
||||||
servercfg := config.Config.Server
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
nodecfg := cfg.Node
|
||||||
|
servercfg := cfg.Server
|
||||||
fmt.Println("Checking into server: " + servercfg.Address)
|
fmt.Println("Checking into server: " + servercfg.Address)
|
||||||
|
|
||||||
setupcheck := true
|
setupcheck := true
|
||||||
@@ -661,13 +688,17 @@ func CheckIn() error {
|
|||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
node = getNode()
|
node = getNode(network)
|
||||||
nodecfg = config.Config.Node
|
cfg, err := config.ReadConfig(network)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
nodecfg = cfg.Node
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -683,7 +714,7 @@ func CheckIn() error {
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fmt.Println("Authenticating with GRPC Server")
|
fmt.Println("Authenticating with GRPC Server")
|
||||||
ctx, err = SetJWT(wcclient)
|
ctx, err = SetJWT(wcclient, network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Failed to authenticate: %v", err)
|
fmt.Printf("Failed to authenticate: %v", err)
|
||||||
return err
|
return err
|
||||||
@@ -714,7 +745,7 @@ func CheckIn() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
newinterface := getNode().Interface
|
newinterface := getNode(network).Interface
|
||||||
readreq := &nodepb.ReadNodeReq{
|
readreq := &nodepb.ReadNodeReq{
|
||||||
Macaddress: node.Macaddress,
|
Macaddress: node.Macaddress,
|
||||||
Group: node.Nodegroup,
|
Group: node.Nodegroup,
|
||||||
@@ -736,7 +767,7 @@ func CheckIn() error {
|
|||||||
fmt.Println("ERROR DELETING INTERFACE: " + currentiface)
|
fmt.Println("ERROR DELETING INTERFACE: " + currentiface)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
}
|
}
|
||||||
|
|
||||||
if checkinres.Checkinresponse.Needconfigupdate {
|
if checkinres.Checkinresponse.Needconfigupdate {
|
||||||
@@ -756,7 +787,7 @@ func CheckIn() error {
|
|||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
@@ -765,7 +796,7 @@ func CheckIn() error {
|
|||||||
} else if nodecfg.PostChanges == "true" {
|
} else if nodecfg.PostChanges == "true" {
|
||||||
fmt.Println("Node has requested to update remote config.")
|
fmt.Println("Node has requested to update remote config.")
|
||||||
fmt.Println("Posting local config to remote server.")
|
fmt.Println("Posting local config to remote server.")
|
||||||
postnode := getNode()
|
postnode := getNode(network)
|
||||||
|
|
||||||
req := &nodepb.UpdateNodeReq{
|
req := &nodepb.UpdateNodeReq{
|
||||||
Node: &postnode,
|
Node: &postnode,
|
||||||
@@ -781,7 +812,7 @@ func CheckIn() error {
|
|||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
@@ -791,7 +822,7 @@ func CheckIn() error {
|
|||||||
if checkinres.Checkinresponse.Needpeerupdate {
|
if checkinres.Checkinresponse.Needpeerupdate {
|
||||||
fmt.Println("Server has requested that node update peer list.")
|
fmt.Println("Server has requested that node update peer list.")
|
||||||
fmt.Println("Updating peer list from remote server.")
|
fmt.Println("Updating peer list from remote server.")
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Unable to process Set Peers request: %v", err)
|
log.Fatalf("Unable to process Set Peers request: %v", err)
|
||||||
@@ -803,7 +834,7 @@ func CheckIn() error {
|
|||||||
_, err := net.InterfaceByName(iface)
|
_, err := net.InterfaceByName(iface)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("interface " + iface + " does not currently exist. Setting up WireGuard.")
|
fmt.Println("interface " + iface + " does not currently exist. Setting up WireGuard.")
|
||||||
err = setWGConfig()
|
err = setWGConfig(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
@@ -829,9 +860,13 @@ func needInterfaceUpdate(ctx context.Context, mac string, group string, iface st
|
|||||||
return iface != oldiface, oldiface, err
|
return iface != oldiface, oldiface, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNode() nodepb.Node {
|
func getNode(network string) nodepb.Node {
|
||||||
modcfg := config.Config
|
|
||||||
modcfg.ReadConfig()
|
modcfg, err := config.ReadConfig(network)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
nodecfg := modcfg.Node
|
nodecfg := modcfg.Node
|
||||||
var node nodepb.Node
|
var node nodepb.Node
|
||||||
|
|
||||||
@@ -856,10 +891,14 @@ func getNode() nodepb.Node {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
func Remove() error {
|
func Remove(network string) error {
|
||||||
//need to implement checkin on server side
|
//need to implement checkin on server side
|
||||||
servercfg := config.Config.Server
|
cfg, err := config.ReadConfig(network)
|
||||||
node := config.Config.Node
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
servercfg := cfg.Server
|
||||||
|
node := cfg.Node
|
||||||
fmt.Println("Deleting remote node with MAC: " + node.MacAddress)
|
fmt.Println("Deleting remote node with MAC: " + node.MacAddress)
|
||||||
|
|
||||||
|
|
||||||
@@ -875,7 +914,7 @@ func Remove() error {
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fmt.Println("Authenticating with GRPC Server")
|
fmt.Println("Authenticating with GRPC Server")
|
||||||
ctx, err = SetJWT(wcclient)
|
ctx, err = SetJWT(wcclient, network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//return err
|
//return err
|
||||||
log.Printf("Failed to authenticate: %v", err)
|
log.Printf("Failed to authenticate: %v", err)
|
||||||
@@ -900,11 +939,11 @@ func Remove() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = WipeLocal()
|
err = WipeLocal(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Unable to wipe local config: %v", err)
|
log.Printf("Unable to wipe local config: %v", err)
|
||||||
}
|
}
|
||||||
err = RemoveSystemDServices()
|
err = RemoveSystemDServices(network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Printf("Unable to remove systemd services: %v", err)
|
log.Printf("Unable to remove systemd services: %v", err)
|
||||||
@@ -915,17 +954,21 @@ func Remove() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func WipeLocal() error{
|
func WipeLocal(network string) error{
|
||||||
nodecfg := config.Config.Node
|
cfg, err := config.ReadConfig(network)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
nodecfg := cfg.Node
|
||||||
ifacename := nodecfg.Interface
|
ifacename := nodecfg.Interface
|
||||||
|
|
||||||
//home, err := homedir.Dir()
|
//home, err := homedir.Dir()
|
||||||
home := "/etc/netclient"
|
home := "/etc/netclient"
|
||||||
err := os.Remove(home + "/.netconfig")
|
err = os.Remove(home + "/netconfig-" + network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
err = os.Remove(home + "/.nettoken")
|
err = os.Remove(home + "/nettoken")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
@@ -967,9 +1010,11 @@ func getPeers(macaddress string, group string, server string) ([]wgtypes.PeerCon
|
|||||||
//need to implement checkin on server side
|
//need to implement checkin on server side
|
||||||
var peers []wgtypes.PeerConfig
|
var peers []wgtypes.PeerConfig
|
||||||
var wcclient nodepb.NodeServiceClient
|
var wcclient nodepb.NodeServiceClient
|
||||||
modcfg := config.Config
|
cfg, err := config.ReadConfig(group)
|
||||||
modcfg.ReadConfig()
|
if err != nil {
|
||||||
nodecfg := modcfg.Node
|
log.Fatalf("Issue retrieving config for network: " + group + ". Please investigate: %v", err)
|
||||||
|
}
|
||||||
|
nodecfg := cfg.Node
|
||||||
keepalive := nodecfg.KeepAlive
|
keepalive := nodecfg.KeepAlive
|
||||||
keepalivedur, err := time.ParseDuration(strconv.FormatInt(int64(keepalive), 10) + "s")
|
keepalivedur, err := time.ParseDuration(strconv.FormatInt(int64(keepalive), 10) + "s")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -992,7 +1037,7 @@ func getPeers(macaddress string, group string, server string) ([]wgtypes.PeerCon
|
|||||||
}
|
}
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fmt.Println("Authenticating with GRPC Server")
|
fmt.Println("Authenticating with GRPC Server")
|
||||||
ctx, err = SetJWT(wcclient)
|
ctx, err = SetJWT(wcclient, group)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Failed to authenticate.")
|
fmt.Println("Failed to authenticate.")
|
||||||
return peers, err
|
return peers, err
|
||||||
|
|||||||
@@ -11,7 +11,16 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ConfigureSystemD() error {
|
|
||||||
|
func fileExists(f string) bool {
|
||||||
|
info, err := os.Stat(f)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return !info.IsDir()
|
||||||
|
}
|
||||||
|
|
||||||
|
func ConfigureSystemD(network string) error {
|
||||||
/*
|
/*
|
||||||
path, err := os.Getwd()
|
path, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -36,17 +45,20 @@ func ConfigureSystemD() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !fileExists("/usr/local/bin/netclient") {
|
||||||
_, err = copy(binarypath, "/usr/local/bin/netclient")
|
_, err = copy(binarypath, "/usr/local/bin/netclient")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if !fileExists("/etc/netclient/netclient") {
|
||||||
_, err = copy(binarypath, "/etc/netclient/netclient")
|
_, err = copy(binarypath, "/etc/netclient/netclient")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
systemservice := `[Unit]
|
systemservice := `[Unit]
|
||||||
@@ -54,8 +66,8 @@ Description=Regularly checks for updates in peers and local config
|
|||||||
Wants=netclient.timer
|
Wants=netclient.timer
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=simple
|
||||||
ExecStart=/etc/netclient/netclient -c checkin
|
ExecStart=/etc/netclient/netclient -c checkin -n %i
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -63,45 +75,62 @@ WantedBy=multi-user.target
|
|||||||
|
|
||||||
systemtimer := `[Unit]
|
systemtimer := `[Unit]
|
||||||
Description=Calls the Netmaker Mesh Client Service
|
Description=Calls the Netmaker Mesh Client Service
|
||||||
Requires=netclient.service
|
|
||||||
|
`
|
||||||
|
systemtimer = systemtimer + "Requires=netclient@"+network+".service"
|
||||||
|
|
||||||
|
systemtimer = systemtimer +
|
||||||
|
`
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
Unit=netclient.service
|
|
||||||
|
`
|
||||||
|
systemtimer = systemtimer + "Unit=netclient@"+network+".service"
|
||||||
|
|
||||||
|
systemtimer = systemtimer +
|
||||||
|
`
|
||||||
|
|
||||||
OnCalendar=*:*:0/30
|
OnCalendar=*:*:0/30
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=timers.target
|
WantedBy=timers.target
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|
||||||
servicebytes := []byte(systemservice)
|
servicebytes := []byte(systemservice)
|
||||||
timerbytes := []byte(systemtimer)
|
timerbytes := []byte(systemtimer)
|
||||||
|
|
||||||
err = ioutil.WriteFile("/etc/systemd/system/netclient.service", servicebytes, 0644)
|
if !fileExists("/etc/systemd/system/netclient@.service") {
|
||||||
|
err = ioutil.WriteFile("/etc/systemd/system/netclient@.service", servicebytes, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile("/etc/systemd/system/netclient.timer", timerbytes, 0644)
|
if !fileExists("/etc/systemd/system/netclient-"+network+".timer") {
|
||||||
|
err = ioutil.WriteFile("/etc/systemd/system/netclient-"+network+".timer", timerbytes, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
sysExec, err := exec.LookPath("systemctl")
|
sysExec, err := exec.LookPath("systemctl")
|
||||||
|
|
||||||
cmdSysEnableService := &exec.Cmd {
|
cmdSysEnableService := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "enable", "netclient.service" },
|
Args: []string{ sysExec, "enable", "netclient@.service" },
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
cmdSysStartService := &exec.Cmd {
|
cmdSysStartService := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "start", "netclient.service"},
|
Args: []string{ sysExec, "start", "netclient@.service"},
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
cmdSysDaemonReload := &exec.Cmd {
|
cmdSysDaemonReload := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "daemon-reload"},
|
Args: []string{ sysExec, "daemon-reload"},
|
||||||
@@ -110,25 +139,20 @@ WantedBy=timers.target
|
|||||||
}
|
}
|
||||||
cmdSysEnableTimer := &exec.Cmd {
|
cmdSysEnableTimer := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "enable", "netclient.timer" },
|
Args: []string{ sysExec, "enable", "netclient-"+network+".timer" },
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
cmdSysStartTimer := &exec.Cmd {
|
cmdSysStartTimer := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "start", "netclient.timer"},
|
Args: []string{ sysExec, "start", "netclient-"+network+".timer"},
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = cmdSysEnableService.Run()
|
err = cmdSysEnableService.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error enabling netclient.service. Please investigate.")
|
fmt.Println("Error enabling netclient@.service. Please investigate.")
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
err = cmdSysStartService.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error starting netclient.service. Please investigate.")
|
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
err = cmdSysDaemonReload.Run()
|
err = cmdSysDaemonReload.Run()
|
||||||
@@ -143,24 +167,18 @@ WantedBy=timers.target
|
|||||||
}
|
}
|
||||||
err = cmdSysStartTimer.Run()
|
err = cmdSysStartTimer.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error starting netclient.timer. Please investigate.")
|
fmt.Println("Error starting netclient-"+network+".timer. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemoveSystemDServices() error {
|
func RemoveSystemDServices(network string) error {
|
||||||
sysExec, err := exec.LookPath("systemctl")
|
sysExec, err := exec.LookPath("systemctl")
|
||||||
|
|
||||||
cmdSysStopService := &exec.Cmd {
|
|
||||||
Path: sysExec,
|
|
||||||
Args: []string{ sysExec, "stop", "netclient.service" },
|
|
||||||
Stdout: os.Stdout,
|
|
||||||
Stderr: os.Stdout,
|
|
||||||
}
|
|
||||||
cmdSysDisableService := &exec.Cmd {
|
cmdSysDisableService := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "disable", "netclient.service"},
|
Args: []string{ sysExec, "disable", "netclient@.service"},
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
@@ -178,40 +196,40 @@ func RemoveSystemDServices() error {
|
|||||||
}
|
}
|
||||||
cmdSysStopTimer := &exec.Cmd {
|
cmdSysStopTimer := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "stop", "netclient.timer" },
|
Args: []string{ sysExec, "stop", "netclient-"+network+".timer" },
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
cmdSysDisableTimer := &exec.Cmd {
|
cmdSysDisableTimer := &exec.Cmd {
|
||||||
Path: sysExec,
|
Path: sysExec,
|
||||||
Args: []string{ sysExec, "disable", "netclient.timer"},
|
Args: []string{ sysExec, "disable", "netclient-"+network+".timer"},
|
||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = cmdSysStopService.Run()
|
//err = cmdSysStopService.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error stopping netclient.service. Please investigate.")
|
fmt.Println("Error stopping netclient@.service. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
err = cmdSysDisableService.Run()
|
err = cmdSysDisableService.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error disabling netclient.service. Please investigate.")
|
fmt.Println("Error disabling netclient@.service. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
err = cmdSysStopTimer.Run()
|
err = cmdSysStopTimer.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error stopping netclient.timer. Please investigate.")
|
fmt.Println("Error stopping netclient-"+network+".timer. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
err = cmdSysDisableTimer.Run()
|
err = cmdSysDisableTimer.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error disabling netclient.timer. Please investigate.")
|
fmt.Println("Error disabling netclient-"+network+".timer. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.Remove("/etc/systemd/system/netclient.service")
|
err = os.Remove("/etc/systemd/system/netclient@.service")
|
||||||
err = os.Remove("/etc/systemd/system/netclient.timer")
|
err = os.Remove("/etc/systemd/system/netclient-"+network+".timer")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error removing file. Please investigate.")
|
fmt.Println("Error removing file. Please investigate.")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func main() {
|
|||||||
tpassword := flag.String("p", "changeme", "This node's password for accessing the server regularly")
|
tpassword := flag.String("p", "changeme", "This node's password for accessing the server regularly")
|
||||||
taccesskey := flag.String("k", "badkey", "an access key generated by the server and used for one-time access (install only)")
|
taccesskey := flag.String("k", "badkey", "an access key generated by the server and used for one-time access (install only)")
|
||||||
tserver := flag.String("s", "localhost:50051", "The location (including port) of the remote gRPC server.")
|
tserver := flag.String("s", "localhost:50051", "The location (including port) of the remote gRPC server.")
|
||||||
tgroup := flag.String("g", "badgroup", "The node group you are attempting to join.")
|
tnetwork := flag.String("n", "nonetwork", "The node group you are attempting to join.")
|
||||||
tnoauto := flag.Bool("na", false, "No auto mode. If true, netmclient will not be installed as a system service and you will have to retrieve updates manually via checkin command.")
|
tnoauto := flag.Bool("na", false, "No auto mode. If true, netmclient will not be installed as a system service and you will have to retrieve updates manually via checkin command.")
|
||||||
tnoforward := flag.Bool("nf", false, "No Forward mode. If true, netclient will not check for IP forwarding. This may break functionality")
|
tnoforward := flag.Bool("nf", false, "No Forward mode. If true, netclient will not check for IP forwarding. This may break functionality")
|
||||||
command := flag.String("c", "required", "The command to run")
|
command := flag.String("c", "required", "The command to run")
|
||||||
@@ -75,6 +75,12 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
log.Fatal("Exiting")
|
log.Fatal("Exiting")
|
||||||
case "install":
|
case "install":
|
||||||
|
|
||||||
|
if *tnetwork == "nonetwork" || *tnetwork == ""{
|
||||||
|
fmt.Println("Required, '-n'. No network provided. Exiting.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
if !*tnoforward {
|
if !*tnoforward {
|
||||||
forward := exec.Command("sysctl", "net.ipv4.ip_forward")
|
forward := exec.Command("sysctl", "net.ipv4.ip_forward")
|
||||||
out, err := forward.Output()
|
out, err := forward.Output()
|
||||||
@@ -93,25 +99,26 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("Beginning agent installation.")
|
fmt.Println("Beginning agent installation.")
|
||||||
err := functions.Install(*taccesskey, *tpassword, *tserver, *tgroup, *tnoauto)
|
err := functions.Install(*taccesskey, *tpassword, *tserver, *tnetwork, *tnoauto)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error installing: ", err)
|
fmt.Println("Error installing: ", err)
|
||||||
fmt.Println("Cleaning up (uninstall)")
|
fmt.Println("Cleaning up (uninstall)")
|
||||||
err = functions.Remove()
|
err = functions.Remove(*tnetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error uninstalling: ", err)
|
fmt.Println("Error uninstalling: ", err)
|
||||||
fmt.Println("Wiping local.")
|
fmt.Println("Wiping local.")
|
||||||
err = functions.WipeLocal()
|
err = functions.WipeLocal(*tnetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error removing artifacts: ", err)
|
fmt.Println("Error removing artifacts: ", err)
|
||||||
}
|
}
|
||||||
err = functions.RemoveSystemDServices()
|
err = functions.RemoveSystemDServices(*tnetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error removing services: ", err)
|
fmt.Println("Error removing services: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
case "service-install":
|
case "service-install":
|
||||||
fmt.Println("Beginning service installation.")
|
fmt.Println("Beginning service installation.")
|
||||||
err := functions.ConfigureSystemD()
|
err := functions.ConfigureSystemD()
|
||||||
@@ -126,16 +133,25 @@ func main() {
|
|||||||
fmt.Println("Error installing service: ", err)
|
fmt.Println("Error installing service: ", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case "checkin":
|
case "checkin":
|
||||||
fmt.Println("Beginning node check in.")
|
if *tnetwork == "nonetwork" || *tnetwork == "" {
|
||||||
err := functions.CheckIn()
|
fmt.Println("Required, '-n'. No network provided. Exiting.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
fmt.Println("Beginning node check in for group " + *tnetwork)
|
||||||
|
err := functions.CheckIn(*tnetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error checking in: ", err)
|
fmt.Println("Error checking in: ", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
case "remove":
|
case "remove":
|
||||||
|
if *tnetwork == "nonetwork" || *tnetwork == "" {
|
||||||
|
fmt.Println("Required, '-n'. No network provided. Exiting.")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
fmt.Println("Beginning node cleanup.")
|
fmt.Println("Beginning node cleanup.")
|
||||||
err := functions.Remove()
|
err := functions.Remove(*tnetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
/*
|
/*
|
||||||
fmt.Println("Error uninstalling: ", err)
|
fmt.Println("Error uninstalling: ", err)
|
||||||
@@ -152,6 +168,10 @@ func main() {
|
|||||||
fmt.Println("Error deleting node: ", err)
|
fmt.Println("Error deleting node: ", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
fmt.Println("You must select from the following commands: install|remove|checkin", err)
|
||||||
|
os.Exit(1)
|
||||||
|
|
||||||
}
|
}
|
||||||
fmt.Println("Command " + *command + " Executed Successfully")
|
fmt.Println("Command " + *command + " Executed Successfully")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user