diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-09-11 23:24:22 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-10-16 22:55:24 -0600 |
commit | 548405e21b87d982a2d2094ce565bac5ac3c308a (patch) | |
tree | 6843727e22985d3cd08cd76ee47868d2e53fd2cc /manager | |
parent | manager: remove legacy store support (diff) | |
download | wireguard-windows-548405e21b87d982a2d2094ce565bac5ac3c308a.tar.xz wireguard-windows-548405e21b87d982a2d2094ce565bac5ac3c308a.zip |
global: remove wireguard-go/Wintun implementation
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'manager')
-rw-r--r-- | manager/ipc_server.go | 74 | ||||
-rw-r--r-- | manager/ipc_uapi.go | 71 | ||||
-rw-r--r-- | manager/service.go | 6 | ||||
-rw-r--r-- | manager/tunneltracker.go | 1 |
4 files changed, 18 insertions, 134 deletions
diff --git a/manager/ipc_server.go b/manager/ipc_server.go index e88ab7e4..504b5cce 100644 --- a/manager/ipc_server.go +++ b/manager/ipc_server.go @@ -47,64 +47,26 @@ func (s *ManagerService) StoredConfig(tunnelName string) (*conf.Config, error) { } func (s *ManagerService) RuntimeConfig(tunnelName string) (*conf.Config, error) { - if !conf.AdminBool("UseUserspaceImplementation") { - storedConfig, err := conf.LoadFromName(tunnelName) - if err != nil { - return nil, err - } - driverAdapter, err := findDriverAdapter(tunnelName) - if err != nil { - return nil, err - } - runtimeConfig, err := driverAdapter.Configuration() - if err != nil { - driverAdapter.Unlock() - releaseDriverAdapter(tunnelName) - return nil, err - } - conf := conf.FromDriverConfiguration(runtimeConfig, storedConfig) + storedConfig, err := conf.LoadFromName(tunnelName) + if err != nil { + return nil, err + } + driverAdapter, err := findDriverAdapter(tunnelName) + if err != nil { + return nil, err + } + runtimeConfig, err := driverAdapter.Configuration() + if err != nil { driverAdapter.Unlock() - if s.elevatedToken == 0 { - conf.Redact() - } - return conf, nil - } else { - storedConfig, err := conf.LoadFromName(tunnelName) - if err != nil { - return nil, err - } - pipe, err := connectTunnelServicePipe(tunnelName) - if err != nil { - return nil, err - } - pipe.SetDeadline(time.Now().Add(time.Second * 2)) - _, err = pipe.Write([]byte("get=1\n\n")) - if err == windows.ERROR_NO_DATA { - log.Println("IPC pipe closed unexpectedly, so reopening") - pipe.Unlock() - disconnectTunnelServicePipe(tunnelName) - pipe, err = connectTunnelServicePipe(tunnelName) - if err != nil { - return nil, err - } - pipe.SetDeadline(time.Now().Add(time.Second * 2)) - _, err = pipe.Write([]byte("get=1\n\n")) - } - if err != nil { - pipe.Unlock() - disconnectTunnelServicePipe(tunnelName) - return nil, err - } - conf, err := conf.FromUAPI(pipe, storedConfig) - pipe.Unlock() - if err != nil { - return nil, err - } - if s.elevatedToken == 0 { - conf.Redact() - } - return conf, nil + releaseDriverAdapter(tunnelName) + return nil, err } + conf := conf.FromDriverConfiguration(runtimeConfig, storedConfig) + driverAdapter.Unlock() + if s.elevatedToken == 0 { + conf.Redact() + } + return conf, nil } func (s *ManagerService) Start(tunnelName string) error { diff --git a/manager/ipc_uapi.go b/manager/ipc_uapi.go deleted file mode 100644 index 85477125..00000000 --- a/manager/ipc_uapi.go +++ /dev/null @@ -1,71 +0,0 @@ -/* SPDX-License-Identifier: MIT - * - * Copyright (C) 2019-2021 WireGuard LLC. All Rights Reserved. - */ - -package manager - -import ( - "net" - "sync" - - "golang.org/x/sys/windows" - "golang.zx2c4.com/wireguard/ipc/winpipe" - - "golang.zx2c4.com/wireguard/windows/services" -) - -type connectedTunnel struct { - net.Conn - sync.Mutex -} - -var connectedTunnelServicePipes = make(map[string]*connectedTunnel) -var connectedTunnelServicePipesLock sync.RWMutex - -func connectTunnelServicePipe(tunnelName string) (*connectedTunnel, error) { - connectedTunnelServicePipesLock.RLock() - pipe, ok := connectedTunnelServicePipes[tunnelName] - if ok { - pipe.Lock() - connectedTunnelServicePipesLock.RUnlock() - return pipe, nil - } - connectedTunnelServicePipesLock.RUnlock() - connectedTunnelServicePipesLock.Lock() - defer connectedTunnelServicePipesLock.Unlock() - pipe, ok = connectedTunnelServicePipes[tunnelName] - if ok { - pipe.Lock() - return pipe, nil - } - pipePath, err := services.PipePathOfTunnel(tunnelName) - if err != nil { - return nil, err - } - localSystem, err := windows.CreateWellKnownSid(windows.WinLocalSystemSid) - if err != nil { - return nil, err - } - pipe = &connectedTunnel{} - pipe.Conn, err = winpipe.Dial(pipePath, nil, &winpipe.DialConfig{ExpectedOwner: localSystem}) - if err != nil { - return nil, err - } - connectedTunnelServicePipes[tunnelName] = pipe - pipe.Lock() - return pipe, nil -} - -func disconnectTunnelServicePipe(tunnelName string) { - connectedTunnelServicePipesLock.Lock() - defer connectedTunnelServicePipesLock.Unlock() - pipe, ok := connectedTunnelServicePipes[tunnelName] - if !ok { - return - } - pipe.Lock() - pipe.Close() - delete(connectedTunnelServicePipes, tunnelName) - pipe.Unlock() -} diff --git a/manager/service.go b/manager/service.go index e5dcf92d..af9004de 100644 --- a/manager/service.go +++ b/manager/service.go @@ -17,7 +17,6 @@ import ( "golang.org/x/sys/windows" "golang.org/x/sys/windows/svc" - "golang.zx2c4.com/wireguard/tun/wintun" "golang.zx2c4.com/wireguard/windows/conf" "golang.zx2c4.com/wireguard/windows/elevate" @@ -259,11 +258,6 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest }() } - time.AfterFunc(time.Second*15, func() { - if !conf.AdminBool("UseUserspaceImplementation") { - wintun.Uninstall() - } - }) go checkForUpdates() var sessionsPointer *windows.WTS_SESSION_INFO diff --git a/manager/tunneltracker.go b/manager/tunneltracker.go index 6b5b1a02..103388f2 100644 --- a/manager/tunneltracker.go +++ b/manager/tunneltracker.go @@ -260,7 +260,6 @@ func trackTunnelService(tunnelName string, service *mgr.Service) { IPCServerNotifyTunnelChange(tunnelName, TunnelStopped, fmt.Errorf("Unable to continue monitoring service, so stopping: %w", err)) service.Control(svc.Stop) } - disconnectTunnelServicePipe(tunnelName) } func trackExistingTunnels() error { |