Browse Source

host based updates

Abhishek Kondur 2 years ago
parent
commit
21133bca7d
5 changed files with 25 additions and 6 deletions
  1. 1 1
      controllers/node.go
  2. 20 0
      logic/hosts.go
  3. 2 3
      logic/peers.go
  4. 1 1
      mq/dynsec_helper.go
  5. 1 1
      mq/publishers.go

+ 1 - 1
controllers/node.go

@@ -435,7 +435,7 @@ func getNode(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 		return
 	}
 	}
-	peerUpdate, err := logic.GetPeerUpdate(&node, host)
+	peerUpdate, err := logic.GetPeerUpdateForHost(host)
 	if err != nil && !database.IsEmptyRecord(err) {
 	if err != nil && !database.IsEmptyRecord(err) {
 		logger.Log(0, r.Header.Get("user"),
 		logger.Log(0, r.Header.Get("user"),
 			fmt.Sprintf("error fetching wg peers config for node [ %s ]: %v", nodeid, err))
 			fmt.Sprintf("error fetching wg peers config for node [ %s ]: %v", nodeid, err))

+ 20 - 0
logic/hosts.go

@@ -63,6 +63,26 @@ func GetHostsMap() (map[string]*models.Host, error) {
 	return currHostMap, nil
 	return currHostMap, nil
 }
 }
 
 
+func GetNetworkHosts(network string) ([]models.Host, error) {
+	networkHosts := []models.Host{}
+	hosts, err := GetAllHosts()
+	if err != nil {
+		return networkHosts, err
+	}
+	for _, host := range hosts {
+		for _, nodeID := range host.Nodes {
+			node, err := GetNodeByID(nodeID)
+			if err == nil {
+				if node.Network == network {
+					networkHosts = append(networkHosts, host)
+					break
+				}
+			}
+		}
+	}
+	return networkHosts, nil
+}
+
 // GetHost - gets a host from db given id
 // GetHost - gets a host from db given id
 func GetHost(hostid string) (*models.Host, error) {
 func GetHost(hostid string) (*models.Host, error) {
 	record, err := database.FetchRecord(database.HOSTS_TABLE_NAME, hostid)
 	record, err := database.FetchRecord(database.HOSTS_TABLE_NAME, hostid)

+ 2 - 3
logic/peers.go

@@ -199,13 +199,13 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 		ServerVersion: servercfg.GetVersion(),
 		ServerVersion: servercfg.GetVersion(),
 		ServerAddrs:   []models.ServerAddr{},
 		ServerAddrs:   []models.ServerAddr{},
 	}
 	}
+	log.Println("peer update for host ", host.ID.String())
 	peerIndexMap := make(map[string]int)
 	peerIndexMap := make(map[string]int)
 	for _, nodeID := range host.Nodes {
 	for _, nodeID := range host.Nodes {
 		node, err := GetNodeByID(nodeID)
 		node, err := GetNodeByID(nodeID)
 		if err != nil {
 		if err != nil {
 			continue
 			continue
 		}
 		}
-		log.Println("peer update for node ", node.ID)
 		hostPeerUpdate.Network[node.Network] = models.NetworkInfo{
 		hostPeerUpdate.Network[node.Network] = models.NetworkInfo{
 			DNS: getPeerDNS(node.Network),
 			DNS: getPeerDNS(node.Network),
 		}
 		}
@@ -279,10 +279,9 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 				allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
 				allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
 			}
 			}
 			peerConfig.AllowedIPs = allowedips
 			peerConfig.AllowedIPs = allowedips
+
 			if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
 			if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
-			}
-			if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
 				hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, peerConfig)
 				hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, peerConfig)
 				peerIndexMap[peerHost.PublicKey.String()] = len(hostPeerUpdate.Peers) - 1
 				peerIndexMap[peerHost.PublicKey.String()] = len(hostPeerUpdate.Peers) - 1
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()][peer.ID.String()] = models.IDandAddr{
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()][peer.ID.String()] = models.IDandAddr{

+ 1 - 1
mq/dynsec_helper.go

@@ -271,7 +271,7 @@ func createHostRole(hostID string) error {
 			{
 			{
 				Command:  CreateRoleCmd,
 				Command:  CreateRoleCmd,
 				RoleName: getHostRoleName(hostID),
 				RoleName: getHostRoleName(hostID),
-				Textname: "host  role with Acls for hosts",
+				Textname: "host role with Acls for hosts",
 				Acls:     fetchHostAcls(hostID),
 				Acls:     fetchHostAcls(hostID),
 			},
 			},
 		},
 		},

+ 1 - 1
mq/publishers.go

@@ -20,7 +20,7 @@ func PublishPeerUpdate(network string, publishToSelf bool) error {
 		return nil
 		return nil
 	}
 	}
 
 
-	hosts, err := logic.GetAllHosts()
+	hosts, err := logic.GetNetworkHosts(network)
 	if err != nil {
 	if err != nil {
 		logger.Log(1, "err getting all hosts", err.Error())
 		logger.Log(1, "err getting all hosts", err.Error())
 		return err
 		return err