netclientutils_darwin.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package ncutils
  2. import (
  3. "log"
  4. "os/exec"
  5. "strings"
  6. )
  7. // RunCmd - runs a local command
  8. func RunCmd(command string, printerr bool) (string, error) {
  9. args := strings.Fields(command)
  10. cmd := exec.Command(args[0], args[1:]...)
  11. cmd.Wait()
  12. out, err := cmd.CombinedOutput()
  13. if err != nil && printerr {
  14. log.Println("error running command:", command)
  15. log.Println(strings.TrimSuffix(string(out), "\n"))
  16. }
  17. return string(out), err
  18. }
  19. // CreateUserSpaceConf - creates a user space WireGuard conf
  20. func CreateUserSpaceConf(address string, privatekey string, listenPort string, mtu int32, fwmark int32, perskeepalive int32, peers []wgtypes.PeerConfig) (string, error) {
  21. peersString, err := parsePeers(perskeepalive, peers)
  22. var listenPortString string
  23. var fwmarkString string
  24. if mtu <= 0 {
  25. mtu = 1280
  26. }
  27. if listenPort != "" {
  28. listenPortString += "ListenPort = " + listenPort
  29. }
  30. if fwmark != 0 {
  31. fwmarkString += "FWMark = " + strconv.Itoa(int(fwmark))
  32. }
  33. if err != nil {
  34. return "", err
  35. }
  36. config := fmt.Sprintf(`[Interface]
  37. Address = %s
  38. PrivateKey = %s
  39. MTU = %s
  40. %s
  41. %s
  42. %s
  43. `,
  44. address+"/32",
  45. privatekey,
  46. strconv.Itoa(int(mtu)),
  47. listenPortString,
  48. fwmarkString,
  49. peersString)
  50. return config, nil
  51. }