Browse Source

NET-1308:return error if relayed node is an InetClient (#2980)

* return error if relayed node is an InetClient

* add relayed InetGW/Relay check

* add relayedby check when adding InetClient
Max Ma 1 year ago
parent
commit
7254fd850a
2 changed files with 4 additions and 1 deletions
  1. 1 1
      pro/logic/nodes.go
  2. 3 0
      pro/logic/relays.go

+ 1 - 1
pro/logic/nodes.go

@@ -59,7 +59,7 @@ func ValidateInetGwReq(inetNode models.Node, req models.InetNodeReq, update bool
 			ResetFailedOverPeer(&clientNode)
 		}
 
-		if clientNode.IsRelayed {
+		if clientNode.IsRelayed && clientNode.RelayedBy != inetNode.ID.String() {
 			return fmt.Errorf("node %s is being relayed", clientHost.Name)
 		}
 

+ 3 - 0
pro/logic/relays.go

@@ -123,6 +123,9 @@ func ValidateRelay(relay models.RelayRequest, update bool) error {
 		if relayedNode.IsInternetGateway {
 			return errors.New("cannot relay an internet gateway (" + relayedNodeID + ")")
 		}
+		if relayedNode.InternetGwID != "" && relayedNode.InternetGwID != relay.NodeID {
+			return errors.New("cannot relay an internet client (" + relayedNodeID + ")")
+		}
 		if relayedNode.IsFailOver {
 			return errors.New("cannot relay a failOver (" + relayedNodeID + ")")
 		}