mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-30 19:56:28 +08:00
refactor join
also removes server node suspect there may be issues with proxy and UI interactions with nodes
This commit is contained in:
@@ -12,21 +12,25 @@ import (
|
||||
)
|
||||
|
||||
// CreateRelay - creates a relay
|
||||
func CreateRelay(relay models.RelayRequest) ([]models.LegacyNode, models.LegacyNode, error) {
|
||||
var returnnodes []models.LegacyNode
|
||||
func CreateRelay(relay models.RelayRequest) ([]models.Node, models.Node, error) {
|
||||
var returnnodes []models.Node
|
||||
|
||||
node, err := GetNodeByID(relay.NodeID)
|
||||
if err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
if node.OS != "linux" {
|
||||
return returnnodes, models.LegacyNode{}, fmt.Errorf("only linux machines can be relay nodes")
|
||||
host, err := GetHost(node.ID.String())
|
||||
if err != nil {
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
if host.OS != "linux" {
|
||||
return returnnodes, models.Node{}, fmt.Errorf("only linux machines can be relay nodes")
|
||||
}
|
||||
err = ValidateRelay(relay)
|
||||
if err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
node.IsRelay = "yes"
|
||||
node.IsRelay = true
|
||||
node.RelayAddrs = relay.RelayAddrs
|
||||
|
||||
node.SetLastModified()
|
||||
@@ -34,8 +38,8 @@ func CreateRelay(relay models.RelayRequest) ([]models.LegacyNode, models.LegacyN
|
||||
if err != nil {
|
||||
return returnnodes, node, err
|
||||
}
|
||||
if err = database.Insert(node.ID, string(nodeData), database.NODES_TABLE_NAME); err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
if err = database.Insert(node.ID.String(), string(nodeData), database.NODES_TABLE_NAME); err != nil {
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
returnnodes, err = SetRelayedNodes(true, node.Network, node.RelayAddrs)
|
||||
if err != nil {
|
||||
@@ -45,45 +49,41 @@ func CreateRelay(relay models.RelayRequest) ([]models.LegacyNode, models.LegacyN
|
||||
}
|
||||
|
||||
// SetRelayedNodes- set relayed nodes
|
||||
func SetRelayedNodes(setRelayed bool, networkName string, addrs []string) ([]models.LegacyNode, error) {
|
||||
var returnnodes []models.LegacyNode
|
||||
func SetRelayedNodes(setRelayed bool, networkName string, addrs []string) ([]models.Node, error) {
|
||||
var returnnodes []models.Node
|
||||
networkNodes, err := GetNetworkNodes(networkName)
|
||||
if err != nil {
|
||||
return returnnodes, err
|
||||
}
|
||||
for _, node := range networkNodes {
|
||||
if node.IsServer != "yes" {
|
||||
for _, addr := range addrs {
|
||||
if addr == node.Address || addr == node.Address6 {
|
||||
if setRelayed {
|
||||
node.IsRelayed = "yes"
|
||||
} else {
|
||||
node.IsRelayed = "no"
|
||||
}
|
||||
data, err := json.Marshal(&node)
|
||||
if err != nil {
|
||||
return returnnodes, err
|
||||
}
|
||||
database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
|
||||
returnnodes = append(returnnodes, node)
|
||||
for _, addr := range addrs {
|
||||
if addr == node.Address.IP.String() || addr == node.Address6.IP.String() {
|
||||
if setRelayed {
|
||||
node.IsRelayed = true
|
||||
} else {
|
||||
node.IsRelayed = false
|
||||
}
|
||||
data, err := json.Marshal(&node)
|
||||
if err != nil {
|
||||
return returnnodes, err
|
||||
}
|
||||
database.Insert(node.ID.String(), string(data), database.NODES_TABLE_NAME)
|
||||
returnnodes = append(returnnodes, node)
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnnodes, nil
|
||||
}
|
||||
func GetRelayedNodes(relayNode *models.LegacyNode) ([]models.LegacyNode, error) {
|
||||
var returnnodes []models.LegacyNode
|
||||
func GetRelayedNodes(relayNode *models.Node) ([]models.Node, error) {
|
||||
var returnnodes []models.Node
|
||||
networkNodes, err := GetNetworkNodes(relayNode.Network)
|
||||
if err != nil {
|
||||
return returnnodes, err
|
||||
}
|
||||
for _, node := range networkNodes {
|
||||
if node.IsServer != "yes" {
|
||||
for _, addr := range relayNode.RelayAddrs {
|
||||
if addr == node.Address || addr == node.Address6 {
|
||||
returnnodes = append(returnnodes, node)
|
||||
}
|
||||
for _, addr := range relayNode.RelayAddrs {
|
||||
if addr == node.Address.IP.String() || addr == node.Address6.IP.String() {
|
||||
returnnodes = append(returnnodes, node)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -102,8 +102,8 @@ func ValidateRelay(relay models.RelayRequest) error {
|
||||
}
|
||||
|
||||
// UpdateRelay - updates a relay
|
||||
func UpdateRelay(network string, oldAddrs []string, newAddrs []string) []models.LegacyNode {
|
||||
var returnnodes []models.LegacyNode
|
||||
func UpdateRelay(network string, oldAddrs []string, newAddrs []string) []models.Node {
|
||||
var returnnodes []models.Node
|
||||
time.Sleep(time.Second / 4)
|
||||
_, err := SetRelayedNodes(false, network, oldAddrs)
|
||||
if err != nil {
|
||||
@@ -117,27 +117,27 @@ func UpdateRelay(network string, oldAddrs []string, newAddrs []string) []models.
|
||||
}
|
||||
|
||||
// DeleteRelay - deletes a relay
|
||||
func DeleteRelay(network, nodeid string) ([]models.LegacyNode, models.LegacyNode, error) {
|
||||
var returnnodes []models.LegacyNode
|
||||
func DeleteRelay(network, nodeid string) ([]models.Node, models.Node, error) {
|
||||
var returnnodes []models.Node
|
||||
node, err := GetNodeByID(nodeid)
|
||||
if err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
returnnodes, err = SetRelayedNodes(false, node.Network, node.RelayAddrs)
|
||||
if err != nil {
|
||||
return returnnodes, node, err
|
||||
}
|
||||
|
||||
node.IsRelay = "no"
|
||||
node.IsRelay = false
|
||||
node.RelayAddrs = []string{}
|
||||
node.SetLastModified()
|
||||
|
||||
data, err := json.Marshal(&node)
|
||||
if err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
if err = database.Insert(nodeid, string(data), database.NODES_TABLE_NAME); err != nil {
|
||||
return returnnodes, models.LegacyNode{}, err
|
||||
return returnnodes, models.Node{}, err
|
||||
}
|
||||
return returnnodes, node, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user