53 lines
934 B
Go

package wgcommands
import (
"os/exec"
"regexp"
"strings"
)
var whitespacePattern = regexp.MustCompile(`[\s\n]+`)
func AreWireguardToolsAvailable() bool {
_, err := exec.LookPath("wg")
return err == nil
}
func CreateNewPrivateKey() (string, error) {
cmd := exec.Command("wg", "genkey")
bytes, err := cmd.Output()
if err != nil {
return "", err
}
return string(whitespacePattern.ReplaceAll(bytes, []byte(""))), nil
}
func CreatePublicKey(privateKey string) (string, error) {
cmd := exec.Command("wg", "pubkey")
cmd.Stdin = strings.NewReader(privateKey)
bytes, err := cmd.Output()
if err != nil {
return "", err
}
return string(whitespacePattern.ReplaceAll(bytes, []byte(""))), nil
}
func CreatePresharedKey() (string, error) {
cmd := exec.Command("wg", "genpsk")
bytes, err := cmd.Output()
if err != nil {
return "", err
}
return string(whitespacePattern.ReplaceAll(bytes, []byte(""))), nil
}