From 5eae61a48e48d90a57810355e673170b88247a49 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sat, 24 Aug 2019 10:14:16 +0200 Subject: tunnel: move Run into own module to reduce file size --- main.go | 5 +++-- manager/install.go | 22 +++------------------- manager/ipc_server.go | 7 ++++--- manager/names.go | 26 -------------------------- manager/service.go | 4 ++++ manager/tunneltracker.go | 2 +- services/names.go | 26 ++++++++++++++++++++++++++ tunnel/service.go | 16 ++++++++++++++-- 8 files changed, 55 insertions(+), 53 deletions(-) delete mode 100644 manager/names.go create mode 100644 services/names.go diff --git a/main.go b/main.go index da3a6c42..bd86227e 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,7 @@ import ( "golang.zx2c4.com/wireguard/windows/elevate" "golang.zx2c4.com/wireguard/windows/manager" "golang.zx2c4.com/wireguard/windows/ringlogger" + "golang.zx2c4.com/wireguard/windows/tunnel" "golang.zx2c4.com/wireguard/windows/ui" ) @@ -140,7 +141,7 @@ func main() { if len(os.Args) != 2 { usage() } - err := manager.RunManager() + err := manager.Run() if err != nil { fatal(err) } @@ -167,7 +168,7 @@ func main() { if len(os.Args) != 3 { usage() } - err := manager.RunTunnel(os.Args[2]) + err := tunnel.Run(os.Args[2]) if err != nil { fatal(err) } diff --git a/manager/install.go b/manager/install.go index 69a9ad3c..cff1289a 100644 --- a/manager/install.go +++ b/manager/install.go @@ -15,7 +15,7 @@ import ( "golang.org/x/sys/windows/svc/mgr" "golang.zx2c4.com/wireguard/windows/conf" - "golang.zx2c4.com/wireguard/windows/tunnel" + "golang.zx2c4.com/wireguard/windows/services" ) var cachedServiceManager *mgr.Mgr @@ -105,10 +105,6 @@ func UninstallManager() error { return err2 } -func RunManager() error { - return svc.Run("WireGuardManager", &managerService{}) -} - func InstallTunnel(configPath string) error { m, err := serviceManager() if err != nil { @@ -124,7 +120,7 @@ func InstallTunnel(configPath string) error { return err } - serviceName, err := ServiceNameOfTunnel(name) + serviceName, err := services.ServiceNameOfTunnel(name) if err != nil { return err } @@ -177,7 +173,7 @@ func UninstallTunnel(name string) error { if err != nil { return err } - serviceName, err := ServiceNameOfTunnel(name) + serviceName, err := services.ServiceNameOfTunnel(name) if err != nil { return err } @@ -193,15 +189,3 @@ func UninstallTunnel(name string) error { } return err2 } - -func RunTunnel(confPath string) error { - name, err := conf.NameFromPath(confPath) - if err != nil { - return err - } - serviceName, err := ServiceNameOfTunnel(name) - if err != nil { - return err - } - return svc.Run(serviceName, &tunnel.Service{confPath}) -} diff --git a/manager/ipc_server.go b/manager/ipc_server.go index 18ff858b..7691adb8 100644 --- a/manager/ipc_server.go +++ b/manager/ipc_server.go @@ -22,6 +22,7 @@ import ( "golang.zx2c4.com/wireguard/ipc/winpipe" "golang.zx2c4.com/wireguard/windows/conf" + "golang.zx2c4.com/wireguard/windows/services" "golang.zx2c4.com/wireguard/windows/updater" ) @@ -49,7 +50,7 @@ func (s *ManagerService) RuntimeConfig(tunnelName string, config *conf.Config) e if err != nil { return err } - pipePath, err := PipePathOfTunnel(storedConfig.Name) + pipePath, err := services.PipePathOfTunnel(storedConfig.Name) if err != nil { return err } @@ -131,7 +132,7 @@ func (s *ManagerService) Stop(tunnelName string, _ *uintptr) error { } func (s *ManagerService) WaitForStop(tunnelName string, _ *uintptr) error { - serviceName, err := ServiceNameOfTunnel(tunnelName) + serviceName, err := services.ServiceNameOfTunnel(tunnelName) if err != nil { return err } @@ -159,7 +160,7 @@ func (s *ManagerService) Delete(tunnelName string, _ *uintptr) error { } func (s *ManagerService) State(tunnelName string, state *TunnelState) error { - serviceName, err := ServiceNameOfTunnel(tunnelName) + serviceName, err := services.ServiceNameOfTunnel(tunnelName) if err != nil { return err } diff --git a/manager/names.go b/manager/names.go deleted file mode 100644 index bebf0cae..00000000 --- a/manager/names.go +++ /dev/null @@ -1,26 +0,0 @@ -/* SPDX-License-Identifier: MIT - * - * Copyright (C) 2019 WireGuard LLC. All Rights Reserved. - */ - -package manager - -import ( - "errors" - - "golang.zx2c4.com/wireguard/windows/conf" -) - -func ServiceNameOfTunnel(tunnelName string) (string, error) { - if !conf.TunnelNameIsValid(tunnelName) { - return "", errors.New("Tunnel name is not valid") - } - return "WireGuardTunnel$" + tunnelName, nil -} - -func PipePathOfTunnel(tunnelName string) (string, error) { - if !conf.TunnelNameIsValid(tunnelName) { - return "", errors.New("Tunnel name is not valid") - } - return "\\\\.\\pipe\\WireGuard\\" + tunnelName, nil -} diff --git a/manager/service.go b/manager/service.go index 44b5456e..3b71bbff 100644 --- a/manager/service.go +++ b/manager/service.go @@ -341,3 +341,7 @@ loop: } return } + +func Run() error { + return svc.Run("WireGuardManager", &managerService{}) +} diff --git a/manager/tunneltracker.go b/manager/tunneltracker.go index 72942036..0f222aac 100644 --- a/manager/tunneltracker.go +++ b/manager/tunneltracker.go @@ -31,7 +31,7 @@ func trackExistingTunnels() error { return err } for _, name := range names { - serviceName, err := ServiceNameOfTunnel(name) + serviceName, err := services.ServiceNameOfTunnel(name) if err != nil { continue } diff --git a/services/names.go b/services/names.go new file mode 100644 index 00000000..3b9003d0 --- /dev/null +++ b/services/names.go @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2019 WireGuard LLC. All Rights Reserved. + */ + +package services + +import ( + "errors" + + "golang.zx2c4.com/wireguard/windows/conf" +) + +func ServiceNameOfTunnel(tunnelName string) (string, error) { + if !conf.TunnelNameIsValid(tunnelName) { + return "", errors.New("Tunnel name is not valid") + } + return "WireGuardTunnel$" + tunnelName, nil +} + +func PipePathOfTunnel(tunnelName string) (string, error) { + if !conf.TunnelNameIsValid(tunnelName) { + return "", errors.New("Tunnel name is not valid") + } + return "\\\\.\\pipe\\WireGuard\\" + tunnelName, nil +} diff --git a/tunnel/service.go b/tunnel/service.go index 2dbfff9c..dbaa3133 100644 --- a/tunnel/service.go +++ b/tunnel/service.go @@ -30,11 +30,11 @@ import ( "golang.zx2c4.com/wireguard/windows/version" ) -type Service struct { +type tunnelService struct { Path string } -func (service *Service) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (svcSpecificEC bool, exitCode uint32) { +func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (svcSpecificEC bool, exitCode uint32) { changes <- svc.Status{State: svc.StartPending} var dev *device.Device @@ -241,3 +241,15 @@ func (service *Service) Execute(args []string, r <-chan svc.ChangeRequest, chang } } } + +func Run(confPath string) error { + name, err := conf.NameFromPath(confPath) + if err != nil { + return err + } + serviceName, err := services.ServiceNameOfTunnel(name) + if err != nil { + return err + } + return svc.Run(serviceName, &tunnelService{confPath}) +} -- cgit v1.2.3-59-g8ed1b