mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
userspace implementation
This commit is contained in:
@@ -109,6 +109,8 @@ func Uninstall() error {
|
|||||||
daemon.CleanupWindows()
|
daemon.CleanupWindows()
|
||||||
} else if ncutils.IsMac() {
|
} else if ncutils.IsMac() {
|
||||||
daemon.CleanupMac()
|
daemon.CleanupMac()
|
||||||
|
} else if !ncutils.IsKernel() {
|
||||||
|
ncutils.PrintLog("manual cleanup required",1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
@@ -8,6 +8,7 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"os"
|
||||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -54,9 +55,8 @@ func SetIPForwardingMac() error {
|
|||||||
func IsWGInstalled() bool {
|
func IsWGInstalled() bool {
|
||||||
out, err := ncutils.RunCmd("wg help", true)
|
out, err := ncutils.RunCmd("wg help", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_, err1 := exec.LookPath("wireguard-go")
|
_, err = exec.LookPath(os.Getenv("WG_QUICK_USERSPACE_IMPLEMENTATION"))
|
||||||
_, err2 := exec.LookPath("boringtun")
|
return err == nil
|
||||||
return err1 == nil || err2 == nil
|
|
||||||
}
|
}
|
||||||
return strings.Contains(out, "Available subcommand")
|
return strings.Contains(out, "Available subcommand")
|
||||||
}
|
}
|
||||||
|
@@ -341,14 +341,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err = exec.LookPath("wg")
|
_, err = exec.LookPath("wg")
|
||||||
|
uspace := ncutils.GetWireGuard()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
userspace := os.Getenv("WG_QUICK_USERSPACE_IMPLEMENTATION")
|
if uspace == "wg" {
|
||||||
if userspace == "" {
|
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
log.Fatal("WireGuard not installed. Please install WireGuard (wireguard-tools) and try again.")
|
log.Fatal("WireGuard not installed. Please install WireGuard (wireguard-tools) and try again.")
|
||||||
}
|
}
|
||||||
ncutils.PrintLog("Running with userspace wireguard: "+userspace, 0)
|
ncutils.PrintLog("Running with userspace wireguard: "+uspace, 0)
|
||||||
}
|
} else if uspace != "wg" {
|
||||||
|
log.Println("running userspace WireGuard with "+uspace )
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !ncutils.IsKernel() {
|
if !ncutils.IsKernel() {
|
||||||
if !local.IsWGInstalled() {
|
if !local.IsWGInstalled() {
|
||||||
|
@@ -48,11 +48,19 @@ func IsLinux() bool {
|
|||||||
return runtime.GOOS == "linux"
|
return runtime.GOOS == "linux"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetWireGuard() string {
|
||||||
|
userspace := os.Getenv("WG_QUICK_USERSPACE_IMPLEMENTATION")
|
||||||
|
if userspace != "" && (userspace == "boringtun" || userspace == "wireguard-go") {
|
||||||
|
return userspace
|
||||||
|
}
|
||||||
|
return "wg"
|
||||||
|
}
|
||||||
|
|
||||||
func IsKernel() bool {
|
func IsKernel() bool {
|
||||||
//TODO
|
//TODO
|
||||||
//Replace && true with some config file value
|
//Replace && true with some config file value
|
||||||
//This value should be something like kernelmode, which should be 'on' by default.
|
//This value should be something like kernelmode, which should be 'on' by default.
|
||||||
return IsLinux() && true
|
return IsLinux() && os.Getenv("WG_QUICK_USERSPACE_IMPLEMENTATION") == ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// == database returned nothing error ==
|
// == database returned nothing error ==
|
||||||
|
@@ -45,7 +45,7 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|||||||
for _, currentPeer := range devicePeers {
|
for _, currentPeer := range devicePeers {
|
||||||
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
|
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
|
||||||
currentPeer.PublicKey.String() != peer.PublicKey.String() {
|
currentPeer.PublicKey.String() != peer.PublicKey.String() {
|
||||||
_, err := ncutils.RunCmd("wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
|
_, err := ncutils.RunCmd( "wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("error removing peer", peer.Endpoint.String())
|
log.Println("error removing peer", peer.Endpoint.String())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user