|
@@ -247,12 +247,50 @@ func pubRelayUpdate(client *models.Client, peers []models.Client) {
|
|
publish(&client.Host, fmt.Sprintf("peer/host/%s/%s", client.Host.ID.String(), servercfg.GetServer()), data)
|
|
publish(&client.Host, fmt.Sprintf("peer/host/%s/%s", client.Host.ID.String(), servercfg.GetServer()), data)
|
|
}
|
|
}
|
|
|
|
|
|
-func BroadCastRelayUpdate(network string) error {
|
|
|
|
|
|
+func BroadCastRelayUpdate(relayReq models.RelayRequest) error {
|
|
/* TODO:
|
|
/* TODO:
|
|
1. FlushPeersTo Relayed Node
|
|
1. FlushPeersTo Relayed Node
|
|
2. BroadCast Remove relayed Peer on network peer
|
|
2. BroadCast Remove relayed Peer on network peer
|
|
3. BroadCast Update Relay peer on netmaker peer
|
|
3. BroadCast Update Relay peer on netmaker peer
|
|
*/
|
|
*/
|
|
|
|
+ clients, err := logic.GetNetworkClients(relayReq.NetID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ // filter relay Node
|
|
|
|
+ filteredClients := clients
|
|
|
|
+ for i := len(filteredClients) - 1; i >= 0; i-- {
|
|
|
|
+ if filteredClients[i].Node.ID.String() == relayReq.NodeID {
|
|
|
|
+ filteredClients = append(filteredClients[:i], filteredClients[i+1:]...)
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for _, relayedNodeID := range relayReq.RelayedNodes {
|
|
|
|
+ relayedNode, err := logic.GetNodeByID(relayedNodeID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ h, err := logic.GetHost(relayedNode.HostID.String())
|
|
|
|
+ if err != nil {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ BroadcastDelPeer(h, filteredClients)
|
|
|
|
+ FlushNetworkPeersToHost(&models.Client{Host: *h, Node: relayedNode}, clients)
|
|
|
|
+ }
|
|
|
|
+ relayNode, err := logic.GetNodeByID(relayReq.NodeID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ relayHost, err := logic.GetHost(relayNode.HostID.String())
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return BroadcastAddOrUpdateNetworkPeer(&models.Client{Host: *relayHost, Node: relayNode}, true)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func BroadCastRelayRemoval(network string) error {
|
|
clients, err := logic.GetNetworkClients(network)
|
|
clients, err := logic.GetNetworkClients(network)
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|