| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | package logicimport (	"github.com/gravitl/netmaker/logic"	"github.com/gravitl/netmaker/models")// GetNetworkIngresses - gets the gateways of a networkfunc GetNetworkIngresses(network string) ([]models.Node, error) {	var ingresses []models.Node	netNodes, err := logic.GetNetworkNodes(network)	if err != nil {		return []models.Node{}, err	}	for i := range netNodes {		if netNodes[i].IsIngressGateway {			ingresses = append(ingresses, netNodes[i])		}	}	return ingresses, nil}func GetTagMapWithNodes() (tagNodesMap map[models.TagID][]models.Node) {	tagNodesMap = make(map[models.TagID][]models.Node)	nodes, _ := logic.GetAllNodes()	for _, nodeI := range nodes {		if nodeI.Tags == nil {			continue		}		if nodeI.Mutex != nil {			nodeI.Mutex.Lock()		}		for nodeTagID := range nodeI.Tags {			tagNodesMap[nodeTagID] = append(tagNodesMap[nodeTagID], nodeI)		}		if nodeI.Mutex != nil {			nodeI.Mutex.Unlock()		}	}	return}func AddTagMapWithStaticNodesWithUsers(netID models.NetworkID,	tagNodesMap map[models.TagID][]models.Node) map[models.TagID][]models.Node {	extclients, err := logic.GetNetworkExtClients(netID.String())	if err != nil {		return tagNodesMap	}	for _, extclient := range extclients {		tagNodesMap[models.TagID(extclient.ClientID)] = []models.Node{			{				IsStatic:   true,				StaticNode: extclient,			},		}		if extclient.Tags == nil {			continue		}		if extclient.Mutex != nil {			extclient.Mutex.Lock()		}		for tagID := range extclient.Tags {			tagNodesMap[tagID] = append(tagNodesMap[tagID], extclient.ConvertToStaticNode())		}		if extclient.Mutex != nil {			extclient.Mutex.Unlock()		}	}	return tagNodesMap}func GetNodeIDsWithTag(tagID models.TagID) (ids []string) {	tag, err := GetTag(tagID)	if err != nil {		return	}	nodes, _ := logic.GetNetworkNodes(tag.Network.String())	for _, nodeI := range nodes {		if nodeI.Tags == nil {			continue		}		if nodeI.Mutex != nil {			nodeI.Mutex.Lock()		}		if _, ok := nodeI.Tags[tagID]; ok {			ids = append(ids, nodeI.ID.String())		}		if nodeI.Mutex != nil {			nodeI.Mutex.Unlock()		}	}	return}func GetNodesWithTag(tagID models.TagID) map[string]models.Node {	nMap := make(map[string]models.Node)	tag, err := GetTag(tagID)	if err != nil {		return nMap	}	nodes, _ := logic.GetNetworkNodes(tag.Network.String())	for _, nodeI := range nodes {		if nodeI.Tags == nil {			continue		}		if nodeI.Mutex != nil {			nodeI.Mutex.Lock()		}		if _, ok := nodeI.Tags[tagID]; ok {			nMap[nodeI.ID.String()] = nodeI		}		if nodeI.Mutex != nil {			nodeI.Mutex.Unlock()		}	}	return AddStaticNodesWithTag(tag, nMap)}func AddStaticNodesWithTag(tag models.Tag, nMap map[string]models.Node) map[string]models.Node {	extclients, err := logic.GetNetworkExtClients(tag.Network.String())	if err != nil {		return nMap	}	for _, extclient := range extclients {		if extclient.RemoteAccessClientID != "" {			continue		}		if extclient.Mutex != nil {			extclient.Mutex.Lock()		}		if _, ok := extclient.Tags[tag.ID]; ok {			nMap[extclient.ClientID] = extclient.ConvertToStaticNode()		}		if extclient.Mutex != nil {			extclient.Mutex.Unlock()		}	}	return nMap}func GetStaticNodeWithTag(tagID models.TagID) map[string]models.Node {	nMap := make(map[string]models.Node)	tag, err := GetTag(tagID)	if err != nil {		return nMap	}	extclients, err := logic.GetNetworkExtClients(tag.Network.String())	if err != nil {		return nMap	}	for _, extclient := range extclients {		nMap[extclient.ClientID] = extclient.ConvertToStaticNode()	}	return nMap}
 |