12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package models
- import (
- "encoding/json"
- "github.com/gravitl/netmaker/database"
- )
- // ExtClient - struct for external clients
- type ExtClient struct {
- ClientID string `json:"clientid" bson:"clientid"`
- Description string `json:"description" bson:"description"`
- PrivateKey string `json:"privatekey" bson:"privatekey"`
- PublicKey string `json:"publickey" bson:"publickey"`
- Network string `json:"network" bson:"network"`
- Address string `json:"address" bson:"address"`
- IngressGatewayID string `json:"ingressgatewayid" bson:"ingressgatewayid"`
- IngressGatewayEndpoint string `json:"ingressgatewayendpoint" bson:"ingressgatewayendpoint"`
- LastModified int64 `json:"lastmodified" bson:"lastmodified"`
- }
- // ExtClient.GetEgressRangesOnNetwork - returns the egress ranges on network of ext client
- func (client *ExtClient) GetEgressRangesOnNetwork() ([]string, error) {
- var result []string
- nodesData, err := database.FetchRecords(database.NODES_TABLE_NAME)
- if err != nil {
- return []string{}, err
- }
- for _, nodeData := range nodesData {
- var currentNode Node
- if err = json.Unmarshal([]byte(nodeData), ¤tNode); err != nil {
- continue
- }
- if currentNode.Network != client.Network {
- continue
- }
- if currentNode.IsEgressGateway == "yes" { // add the egress gateway range(s) to the result
- if len(currentNode.EgressGatewayRanges) > 0 {
- result = append(result, currentNode.EgressGatewayRanges...)
- }
- }
- }
- return result, nil
- }
|