|
@@ -1,30 +1,32 @@
|
|
|
|
|
+//go:build !freebsd
|
|
|
|
|
+// +build !freebsd
|
|
|
|
|
+
|
|
|
package functions
|
|
package functions
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "errors"
|
|
|
|
|
"strconv"
|
|
"strconv"
|
|
|
- "strings"
|
|
|
|
|
|
|
|
|
|
"github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/logger"
|
|
|
"github.com/gravitl/netmaker/netclient/config"
|
|
"github.com/gravitl/netmaker/netclient/config"
|
|
|
"github.com/gravitl/netmaker/netclient/local"
|
|
"github.com/gravitl/netmaker/netclient/local"
|
|
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
|
|
|
|
+ "golang.zx2c4.com/wireguard/wgctrl"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// GetLocalListenPort - Gets the port running on the local interface
|
|
// GetLocalListenPort - Gets the port running on the local interface
|
|
|
func GetLocalListenPort(ifacename string) (int32, error) {
|
|
func GetLocalListenPort(ifacename string) (int32, error) {
|
|
|
- portstring, err := ncutils.RunCmd("wg show "+ifacename+" listen-port", false)
|
|
|
|
|
|
|
+ client, err := wgctrl.New()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
|
|
+ logger.Log(0, "failed to start wgctrl")
|
|
|
return 0, err
|
|
return 0, err
|
|
|
}
|
|
}
|
|
|
- portstring = strings.TrimSuffix(portstring, "\n")
|
|
|
|
|
- i, err := strconv.ParseInt(portstring, 10, 32)
|
|
|
|
|
|
|
+ defer client.Close()
|
|
|
|
|
+ device, err := client.Device(ifacename)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
|
|
+ logger.Log(0, "failed to parse interface")
|
|
|
return 0, err
|
|
return 0, err
|
|
|
- } else if i == 0 {
|
|
|
|
|
- return 0, errors.New("parsed port is unset or invalid")
|
|
|
|
|
}
|
|
}
|
|
|
- return int32(i), nil
|
|
|
|
|
|
|
+ return int32(device.ListenPort), nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// UpdateLocalListenPort - check local port, if different, mod config and publish
|
|
// UpdateLocalListenPort - check local port, if different, mod config and publish
|