unix.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package wireguard
  2. import (
  3. "io/ioutil"
  4. "github.com/gravitl/netmaker/models"
  5. "github.com/gravitl/netmaker/netclient/config"
  6. "github.com/gravitl/netmaker/netclient/ncutils"
  7. "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
  8. //homedir "github.com/mitchellh/go-homedir"
  9. )
  10. func SetWGKeyConfig(network string, serveraddr string) error {
  11. cfg, err := config.ReadConfig(network)
  12. if err != nil {
  13. return err
  14. }
  15. node := cfg.Node
  16. privatekey, err := wgtypes.GeneratePrivateKey()
  17. if err != nil {
  18. return err
  19. }
  20. privkeystring := privatekey.String()
  21. publickey := privatekey.PublicKey()
  22. node.PublicKey = publickey.String()
  23. err = StorePrivKey(privkeystring, network)
  24. if err != nil {
  25. return err
  26. }
  27. if node.Action == models.NODE_UPDATE_KEY {
  28. node.Action = models.NODE_NOOP
  29. }
  30. err = config.ModConfig(&node)
  31. if err != nil {
  32. return err
  33. }
  34. err = SetWGConfig(network, false)
  35. if err != nil {
  36. return err
  37. }
  38. return err
  39. }
  40. func ApplyWGQuickConf(confPath string) error {
  41. if _, err := ncutils.RunCmd("wg-quick up "+confPath, true); err != nil {
  42. return err
  43. }
  44. return nil
  45. }
  46. func RemoveWGQuickConf(confPath string, printlog bool) error {
  47. if _, err := ncutils.RunCmd("wg-quick down "+confPath, printlog); err != nil {
  48. return err
  49. }
  50. return nil
  51. }
  52. func StorePrivKey(key string, network string) error {
  53. d1 := []byte(key)
  54. err := ioutil.WriteFile(ncutils.GetNetclientPathSpecific()+"wgkey-"+network, d1, 0644)
  55. return err
  56. }
  57. func RetrievePrivKey(network string) (string, error) {
  58. dat, err := ioutil.ReadFile(ncutils.GetNetclientPathSpecific() + "wgkey-" + network)
  59. return string(dat), err
  60. }