From 0e245a943a09740c50c16612482f89e5f7964827 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 9 Sep 2021 12:23:42 +0200 Subject: conf: use wgnt for those enrolled in insider program Signed-off-by: Jason A. Donenfeld --- conf/admin_windows.go | 33 ++++++++++++++++++++++++++++++++- ui/confview.go | 6 +++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/conf/admin_windows.go b/conf/admin_windows.go index 9b1a4035..3ac1cae0 100644 --- a/conf/admin_windows.go +++ b/conf/admin_windows.go @@ -5,7 +5,11 @@ package conf -import "golang.org/x/sys/windows/registry" +import ( + "strings" + + "golang.org/x/sys/windows/registry" +) const adminRegKey = `Software\WireGuard` @@ -23,7 +27,34 @@ func openAdminKey() (registry.Key, error) { return adminKey, nil } +func IsInsiderEnrolled() bool { + if AdminBool("IgnoreInsiderProgram") { + return false + } + key, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\WindowsSelfHost\Applicability`, registry.QUERY_VALUE) + if err != nil { + return false + } + defer key.Close() + val, _, err := key.GetIntegerValue("IsBuildFlightingEnabled") + if err != nil || val != 1 { + return false + } + val, _, err = key.GetIntegerValue("EnablePreviewBuilds") + if err != nil || val != 1 { + return false + } + ring, _, err := key.GetStringValue("Ring") + if err != nil || !strings.EqualFold(ring, "external") { + return false + } + return true +} + func AdminBool(name string) bool { + if name == "ExperimentalKernelDriver" && IsInsiderEnrolled() { + return true + } key, err := openAdminKey() if err != nil { return false diff --git a/ui/confview.go b/ui/confview.go index 430f8ef6..c4e5b8bb 100644 --- a/ui/confview.go +++ b/ui/confview.go @@ -212,8 +212,8 @@ func (tal *toggleActiveLine) widgets() (walk.Widget, walk.Widget) { func (tal *toggleActiveLine) updateGlobal(globalState manager.TunnelState) { tal.button.SetEnabled(globalState == manager.TunnelStarted || globalState == manager.TunnelStopped) - tal.betaTest.SetVisible(globalState == manager.TunnelStopped && IsAdmin) - if globalState == manager.TunnelStopped && IsAdmin { + tal.betaTest.SetVisible(globalState == manager.TunnelStopped && IsAdmin && !conf.IsInsiderEnrolled()) + if globalState == manager.TunnelStopped && IsAdmin && !conf.IsInsiderEnrolled() { tal.composite.Layout().SetMargins(walk.Margins{}) } else { tal.composite.Layout().SetMargins(walk.Margins{0, 0, 0, 6}) @@ -283,7 +283,7 @@ func newToggleActiveLine(parent walk.Container) (*toggleActiveLine, error) { return nil, err } tal.betaTest.SetText(l18n.Sprintf("&Test experimental kernel driver")) - tal.betaTest.SetVisible(IsAdmin) + tal.betaTest.SetVisible(IsAdmin && !conf.IsInsiderEnrolled()) const experimentalKernelDriver = "ExperimentalKernelDriver" tal.betaTest.SetChecked(conf.AdminBool(experimentalKernelDriver)) tal.betaTest.CheckedChanged().Attach(func() { -- cgit v1.2.3-59-g8ed1b