aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-09-09 12:23:42 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-09-09 12:24:07 +0200
commit0e245a943a09740c50c16612482f89e5f7964827 (patch)
treeb72dc98a046fab93f12aca43a1e785f84eeb7fb0
parentversion: bump (diff)
downloadwireguard-windows-0e245a943a09740c50c16612482f89e5f7964827.tar.xz
wireguard-windows-0e245a943a09740c50c16612482f89e5f7964827.zip
conf: use wgnt for those enrolled in insider program
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--conf/admin_windows.go33
-rw-r--r--ui/confview.go6
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() {