|
@@ -11,6 +11,7 @@ import (
|
|
|
"net"
|
|
|
"time"
|
|
|
|
|
|
+ "github.com/gravitl/netmaker/database"
|
|
|
nodepb "github.com/gravitl/netmaker/grpc"
|
|
|
"github.com/gravitl/netmaker/models"
|
|
|
"github.com/gravitl/netmaker/netclient/auth"
|
|
@@ -115,8 +116,6 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- cfg.Node.Endpoint = cfg.Node.Endpoint
|
|
|
}
|
|
|
if privateKey == "" {
|
|
|
wgPrivatekey, err := wgtypes.GeneratePrivateKey()
|
|
@@ -158,27 +157,27 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|
|
|
|
|
wcclient = nodepb.NewNodeServiceClient(conn)
|
|
|
|
|
|
- postnode := &models.Node{
|
|
|
- Password: cfg.Node.Password,
|
|
|
- MacAddress: cfg.Node.MacAddress,
|
|
|
- AccessKey: cfg.Server.AccessKey,
|
|
|
- Network: cfg.Network,
|
|
|
- ListenPort: cfg.Node.ListenPort,
|
|
|
- PostUp: cfg.Node.PostUp,
|
|
|
- PostDown: cfg.Node.PostDown,
|
|
|
- PersistentKeepalive: cfg.Node.PersistentKeepalive,
|
|
|
- LocalAddress: cfg.Node.LocalAddress,
|
|
|
- Interface: cfg.Node.Interface,
|
|
|
- PublicKey: cfg.Node.PublicKey,
|
|
|
- Name: cfg.Node.Name,
|
|
|
- Endpoint: cfg.Node.Endpoint,
|
|
|
- SaveConfig: cfg.Node.SaveConfig,
|
|
|
- UDPHolePunch: cfg.Node.UDPHolePunch,
|
|
|
- }
|
|
|
- if err = config.ModConfig(postnode); err != nil {
|
|
|
+ // postnode := &models.Node{
|
|
|
+ // Password: cfg.Node.Password,
|
|
|
+ // MacAddress: cfg.Node.MacAddress,
|
|
|
+ // AccessKey: cfg.Server.AccessKey,
|
|
|
+ // Network: cfg.Network,
|
|
|
+ // ListenPort: cfg.Node.ListenPort,
|
|
|
+ // PostUp: cfg.Node.PostUp,
|
|
|
+ // PostDown: cfg.Node.PostDown,
|
|
|
+ // PersistentKeepalive: cfg.Node.PersistentKeepalive,
|
|
|
+ // LocalAddress: cfg.Node.LocalAddress,
|
|
|
+ // Interface: cfg.Node.Interface,
|
|
|
+ // PublicKey: cfg.Node.PublicKey,
|
|
|
+ // Name: cfg.Node.Name,
|
|
|
+ // Endpoint: cfg.Node.Endpoint,
|
|
|
+ // SaveConfig: cfg.Node.SaveConfig,
|
|
|
+ // UDPHolePunch: cfg.Node.UDPHolePunch,
|
|
|
+ // }
|
|
|
+ if err = config.ModConfig(&cfg.Node); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- data, err := json.Marshal(&postnode)
|
|
|
+ data, err := json.Marshal(&cfg.Node)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -216,6 +215,11 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+ err = wireguard.StorePrivKey(privateKey, cfg.Network)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
if node.IsPending == "yes" {
|
|
|
fmt.Println("Node is marked as PENDING.")
|
|
|
fmt.Println("Awaiting approval from Admin before configuring WireGuard.")
|
|
@@ -227,14 +231,11 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|
|
log.Println("retrieving remote peers")
|
|
|
peers, hasGateway, gateways, err := server.GetPeers(node.MacAddress, cfg.Network, cfg.Server.GRPCAddress, node.IsDualStack == "yes", node.IsIngressGateway == "yes")
|
|
|
|
|
|
- if err != nil {
|
|
|
- log.Println("failed to retrieve peers")
|
|
|
- return err
|
|
|
- }
|
|
|
- err = wireguard.StorePrivKey(privateKey, cfg.Network)
|
|
|
- if err != nil {
|
|
|
+ if err != nil && !database.IsEmptyRecord(err) {
|
|
|
+ log.Println("failed to retrieve peers", err)
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
log.Println("starting wireguard")
|
|
|
err = wireguard.InitWireguard(&node, privateKey, peers, hasGateway, gateways)
|
|
|
if err != nil {
|