mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-07 17:51:56 +08:00
NET-940: Inet Gws (#2828)
* internet gws apis * add validate check for inet request * add default gw changes to peer update * update json tag * add OS checks for inet gws * add set defaul gw pro func * allow disable and enable inet gw * add inet handlers to pro * add fields to api node * add inet allowed ips * add default gw to pull * unset node inet details on deletion * unset internet gw on network nodes * unset inet gw fix * unset inet gw fix * send default gw ip * fix inet node endpoint * add default gw endpoint ip to pull resp * validate after unset gws * add inet client peer allowedips to inet node * validate after unset gws * fix allowed ips for inet peer and gw node * fix allowed ips for inet peer and gw node * fix allowed ips for inet peer and gw node * fix allowed ips for inet peer and gw node * fix inet gw and relayed conflict * fix inet gw and relayed conflict * fix update req * fix update inet gw api * when inet gw is peer ignore other allowedIps * test relay * revert test relay * revert inet peer update changes * channel internet traffic of relayed node to relay's inetgw * channel internet traffic of relayed node to relay's inetgw * channel internet traffic of relayed node to relay's inetgw * add check for relayed node * add inet info to peer update * add inet info to peer update * fix update node to persist inet info * fix go tests * egress ranges with inet gw fix * egress ranges with inet gw fix * disallow node acting using inet gw to act as inet gw * add check to validate inet gw * fix typos * add firewall check * set inetgw on ingress req on community * set inetgw to false on community on ingress del
This commit is contained in:
@@ -218,6 +218,23 @@ func DeleteNode(node *models.Node, purge bool) error {
|
||||
// unset all the relayed nodes
|
||||
SetRelayedNodes(false, node.ID.String(), node.RelayedNodes)
|
||||
}
|
||||
if node.InternetGwID != "" {
|
||||
inetNode, err := GetNodeByID(node.InternetGwID)
|
||||
if err == nil {
|
||||
clientNodeIDs := []string{}
|
||||
for _, inetNodeClientID := range inetNode.InetNodeReq.InetNodeClientIDs {
|
||||
if inetNodeClientID == node.ID.String() {
|
||||
continue
|
||||
}
|
||||
clientNodeIDs = append(clientNodeIDs, inetNodeClientID)
|
||||
}
|
||||
inetNode.InetNodeReq.InetNodeClientIDs = clientNodeIDs
|
||||
UpsertNode(&inetNode)
|
||||
}
|
||||
}
|
||||
if node.IsInternetGateway {
|
||||
UnsetInternetGw(node)
|
||||
}
|
||||
|
||||
if !purge && !alreadyDeleted {
|
||||
newnode := *node
|
||||
@@ -598,3 +615,16 @@ func SortApiNodes(unsortedNodes []models.ApiNode) {
|
||||
return unsortedNodes[i].ID < unsortedNodes[j].ID
|
||||
})
|
||||
}
|
||||
|
||||
func ValidateParams(nodeid, netid string) (models.Node, error) {
|
||||
node, err := GetNodeByID(nodeid)
|
||||
if err != nil {
|
||||
slog.Error("error fetching node", "node", nodeid, "error", err.Error())
|
||||
return node, fmt.Errorf("error fetching node during parameter validation: %v", err)
|
||||
}
|
||||
if node.Network != netid {
|
||||
slog.Error("network url param does not match node id", "url nodeid", netid, "node", node.Network)
|
||||
return node, fmt.Errorf("network url param does not match node network")
|
||||
}
|
||||
return node, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user