mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
transplanted join.
This commit is contained in:
@@ -8,7 +8,6 @@ import (
|
||||
"log"
|
||||
|
||||
nodepb "github.com/gravitl/netmaker/grpc"
|
||||
"github.com/gravitl/netmaker/logic"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/netclient/auth"
|
||||
"github.com/gravitl/netmaker/netclient/config"
|
||||
@@ -24,29 +23,30 @@ import (
|
||||
// JoinNetwork - helps a client join a network
|
||||
func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
||||
|
||||
hasnet := local.HasNetwork(cfg.Network)
|
||||
if hasnet {
|
||||
err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient leave -n " + cfg.Network + "'. Then re-run the install command.")
|
||||
return err
|
||||
}
|
||||
|
||||
err := config.Write(&cfg, cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cfg.Node.Network == "" {
|
||||
return errors.New("no network provided")
|
||||
}
|
||||
|
||||
var err error
|
||||
if cfg.Node.IsServer != "yes" {
|
||||
if local.HasNetwork(cfg.Network) {
|
||||
err := errors.New("ALREADY_INSTALLED. Netclient appears to already be installed for " + cfg.Network + ". To re-install, please remove by executing 'sudo netclient leave -n " + cfg.Network + "'. Then re-run the install command.")
|
||||
return err
|
||||
}
|
||||
err = config.Write(&cfg, cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if cfg.Node.Password == "" {
|
||||
cfg.Node.Password = ncutils.GenPass()
|
||||
}
|
||||
auth.StoreSecret(cfg.Node.Password, cfg.Node.Network)
|
||||
}
|
||||
|
||||
if cfg.Node.LocalRange != "" && cfg.Node.LocalAddress == "" {
|
||||
log.Println("local vpn, getting local address from range: " + cfg.Node.LocalRange)
|
||||
cfg.Node.LocalAddress = getLocalIP(cfg.Node)
|
||||
}
|
||||
if cfg.Node.Password == "" {
|
||||
cfg.Node.Password = ncutils.GenPass()
|
||||
}
|
||||
auth.StoreSecret(cfg.Node.Password, cfg.Node.Network)
|
||||
|
||||
// set endpoint if blank. set to local if local net, retrieve from function if not
|
||||
if cfg.Node.Endpoint == "" {
|
||||
@@ -140,19 +140,6 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
||||
if err = json.Unmarshal([]byte(nodeData), &node); err != nil {
|
||||
return err
|
||||
}
|
||||
} else { // handle server side node creation
|
||||
ncutils.Log("adding a server instance on network " + postnode.Network)
|
||||
if err = config.ModConfig(postnode); err != nil {
|
||||
return err
|
||||
}
|
||||
node, err = logic.CreateNode(*postnode, cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = logic.SetNetworkNodesLastModified(node.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// get free port based on returned default listen port
|
||||
@@ -169,28 +156,26 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
||||
}
|
||||
node.Endpoint = node.LocalAddress
|
||||
}
|
||||
|
||||
err = config.ModConfig(&node)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = wireguard.StorePrivKey(privateKey, cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// pushing any local changes to server before starting wireguard
|
||||
err = Push(cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if node.IsPending == "yes" {
|
||||
ncutils.Log("Node is marked as PENDING.")
|
||||
ncutils.Log("Awaiting approval from Admin before configuring WireGuard.")
|
||||
if cfg.Daemon != "off" {
|
||||
return daemon.InstallDaemon(cfg)
|
||||
if node.IsServer != "yes" { // == handle client side ==
|
||||
err = config.ModConfig(&node)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = wireguard.StorePrivKey(privateKey, cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if node.IsPending == "yes" {
|
||||
ncutils.Log("Node is marked as PENDING.")
|
||||
ncutils.Log("Awaiting approval from Admin before configuring WireGuard.")
|
||||
if cfg.Daemon != "off" {
|
||||
return daemon.InstallDaemon(cfg)
|
||||
}
|
||||
}
|
||||
// pushing any local changes to server before starting wireguard
|
||||
err = Push(cfg.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user