1234567891011121314151617181920212223242526272829303132333435363738 |
- package relay
- import (
- "encoding/json"
- "errors"
- "github.com/gravitl/netmaker/database"
- "github.com/gravitl/netmaker/functions"
- "github.com/gravitl/netmaker/models"
- )
- // GetNodeRelay - gets the relay node of a given network
- func GetNodeRelay(network string, relayedNodeAddr string) (models.Node, error) {
- collection, err := database.FetchRecords(database.NODES_TABLE_NAME)
- var relay models.Node
- if err != nil {
- if database.IsEmptyRecord(err) {
- return relay, nil
- }
- functions.PrintUserLog("", err.Error(), 2)
- return relay, err
- }
- for _, value := range collection {
- err := json.Unmarshal([]byte(value), &relay)
- if err != nil {
- functions.PrintUserLog("", err.Error(), 2)
- continue
- }
- if relay.IsRelay == "yes" {
- for _, addr := range relay.RelayAddrs {
- if addr == relayedNodeAddr {
- return relay, nil
- }
- }
- }
- }
- return relay, errors.New("could not find relay for node " + relayedNodeAddr)
- }
|