localport_freebsd.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //go:build freebsd
  2. // +build freebsd
  3. package functions
  4. import (
  5. "errors"
  6. "strconv"
  7. "strings"
  8. "github.com/gravitl/netmaker/logger"
  9. "github.com/gravitl/netmaker/netclient/config"
  10. "github.com/gravitl/netmaker/netclient/ncutils"
  11. )
  12. // GetLocalListenPort - Gets the port running on the local interface
  13. func GetLocalListenPort(ifacename string) (int32, error) {
  14. portstring, err := ncutils.RunCmd("wg show "+ifacename+" listen-port", false)
  15. if err != nil {
  16. return 0, err
  17. }
  18. portstring = strings.TrimSuffix(portstring, "\n")
  19. i, err := strconv.ParseInt(portstring, 10, 32)
  20. if err != nil {
  21. return 0, err
  22. } else if i == 0 {
  23. return 0, errors.New("parsed port is unset or invalid")
  24. }
  25. return int32(i), nil
  26. }
  27. // UpdateLocalListenPort - check local port, if different, mod config and publish
  28. func UpdateLocalListenPort(nodeCfg *config.ClientConfig) error {
  29. var err error
  30. localPort, err := GetLocalListenPort(nodeCfg.Node.Interface)
  31. if err != nil {
  32. logger.Log(1, "error encountered checking local listen port: ", err.Error())
  33. } else if nodeCfg.Node.LocalListenPort != localPort && localPort != 0 {
  34. logger.Log(1, "local port has changed from ", strconv.Itoa(int(nodeCfg.Node.LocalListenPort)), " to ", strconv.Itoa(int(localPort)))
  35. nodeCfg.Node.LocalListenPort = localPort
  36. err = config.ModConfig(&nodeCfg.Node)
  37. if err != nil {
  38. return err
  39. }
  40. if err := PublishNodeUpdate(nodeCfg); err != nil {
  41. logger.Log(0, "could not publish local port change")
  42. }
  43. }
  44. return err
  45. }