|
@@ -126,7 +126,7 @@ func ServerJoin(network string, serverID string, privateKey string) error {
|
|
if err = StorePrivKey(node.ID, privateKey); err != nil {
|
|
if err = StorePrivKey(node.ID, privateKey); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- if err = ServerPush(node.MacAddress, node.Network); err != nil {
|
|
|
|
|
|
+ if err = ServerPush(node); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -154,7 +154,7 @@ func ServerCheckin(mac string, network string) error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
- newNode, err = ServerPull(mac, network, false)
|
|
|
|
|
|
+ newNode, err = ServerPull(&serverNode, false)
|
|
if isDeleteError(err) {
|
|
if isDeleteError(err) {
|
|
return ServerLeave(mac, network)
|
|
return ServerLeave(mac, network)
|
|
} else if err != nil {
|
|
} else if err != nil {
|
|
@@ -166,22 +166,16 @@ func ServerCheckin(mac string, network string) error {
|
|
return errors.New("node has been removed")
|
|
return errors.New("node has been removed")
|
|
}
|
|
}
|
|
|
|
|
|
- return ServerPush(newNode.MacAddress, newNode.Network)
|
|
|
|
|
|
+ return ServerPush(newNode)
|
|
}
|
|
}
|
|
|
|
|
|
// ServerPull - pulls current config/peers for server
|
|
// ServerPull - pulls current config/peers for server
|
|
-func ServerPull(mac string, network string, onErr bool) (*models.Node, error) {
|
|
|
|
|
|
+func ServerPull(serverNode *models.Node, onErr bool) (*models.Node, error) {
|
|
|
|
|
|
- var serverNode models.Node
|
|
|
|
var err error
|
|
var err error
|
|
- serverNode, err = GetNode(mac, network)
|
|
|
|
- if err != nil {
|
|
|
|
- return &serverNode, err
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if serverNode.IPForwarding == "yes" {
|
|
if serverNode.IPForwarding == "yes" {
|
|
if err = setIPForwardingLinux(); err != nil {
|
|
if err = setIPForwardingLinux(); err != nil {
|
|
- return &serverNode, err
|
|
|
|
|
|
+ return serverNode, err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
serverNode.OS = runtime.GOOS
|
|
serverNode.OS = runtime.GOOS
|
|
@@ -199,38 +193,31 @@ func ServerPull(mac string, network string, onErr bool) (*models.Node, error) {
|
|
Log("removed old interface "+oldIfaceName, 1)
|
|
Log("removed old interface "+oldIfaceName, 1)
|
|
}
|
|
}
|
|
serverNode.PullChanges = "no"
|
|
serverNode.PullChanges = "no"
|
|
- if err = setWGConfig(serverNode, network, false); err != nil {
|
|
|
|
- return &serverNode, err
|
|
|
|
|
|
+ if err = setWGConfig(*serverNode, serverNode.Network, false); err != nil {
|
|
|
|
+ return serverNode, err
|
|
}
|
|
}
|
|
// handle server side update
|
|
// handle server side update
|
|
- if err = UpdateNode(&serverNode, &serverNode); err != nil {
|
|
|
|
- return &serverNode, err
|
|
|
|
|
|
+ if err = UpdateNode(serverNode, serverNode); err != nil {
|
|
|
|
+ return serverNode, err
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if err = setWGConfig(serverNode, network, true); err != nil {
|
|
|
|
|
|
+ if err = setWGConfig(*serverNode, serverNode.Network, true); err != nil {
|
|
if errors.Is(err, os.ErrNotExist) {
|
|
if errors.Is(err, os.ErrNotExist) {
|
|
- return ServerPull(serverNode.MacAddress, serverNode.Network, true)
|
|
|
|
|
|
+ return ServerPull(serverNode, true)
|
|
} else {
|
|
} else {
|
|
- return &serverNode, err
|
|
|
|
|
|
+ return serverNode, err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return &serverNode, nil
|
|
|
|
|
|
+ return serverNode, nil
|
|
}
|
|
}
|
|
|
|
|
|
// ServerPush - pushes config changes for server checkins/join
|
|
// ServerPush - pushes config changes for server checkins/join
|
|
-func ServerPush(mac string, network string) error {
|
|
|
|
-
|
|
|
|
- var serverNode models.Node
|
|
|
|
- var err error
|
|
|
|
- serverNode, err = GetNode(mac, network)
|
|
|
|
- if err != nil /* && !ncutils.IsEmptyRecord(err) May not be necessary */ {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
|
|
+func ServerPush(serverNode *models.Node) error {
|
|
serverNode.OS = runtime.GOOS
|
|
serverNode.OS = runtime.GOOS
|
|
serverNode.SetLastCheckIn()
|
|
serverNode.SetLastCheckIn()
|
|
- return UpdateNode(&serverNode, &serverNode)
|
|
|
|
|
|
+ return UpdateNode(serverNode, serverNode)
|
|
}
|
|
}
|
|
|
|
|
|
// ServerLeave - removes a server node
|
|
// ServerLeave - removes a server node
|