relay.go 939 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package relay
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "github.com/gravitl/netmaker/database"
  6. "github.com/gravitl/netmaker/functions"
  7. "github.com/gravitl/netmaker/models"
  8. )
  9. // GetNodeRelay - gets the relay node of a given network
  10. func GetNodeRelay(network string, relayedNodeAddr string) (models.Node, error) {
  11. collection, err := database.FetchRecords(database.NODES_TABLE_NAME)
  12. var relay models.Node
  13. if err != nil {
  14. if database.IsEmptyRecord(err) {
  15. return relay, nil
  16. }
  17. functions.PrintUserLog("", err.Error(), 2)
  18. return relay, err
  19. }
  20. for _, value := range collection {
  21. err := json.Unmarshal([]byte(value), &relay)
  22. if err != nil {
  23. functions.PrintUserLog("", err.Error(), 2)
  24. continue
  25. }
  26. if relay.IsRelay == "yes" {
  27. for _, addr := range relay.RelayAddrs {
  28. if addr == relayedNodeAddr {
  29. return relay, nil
  30. }
  31. }
  32. }
  33. }
  34. return relay, errors.New("could not find relay for node " + relayedNodeAddr)
  35. }