From cdb8c53cdea8d8ac6e6f2112e4a5e844bffd01a4 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 20 May 2019 14:18:01 +0200 Subject: service: split into tunnel and manager Signed-off-by: Jason A. Donenfeld --- ui/confview.go | 55 +++++++++++++++++++++++++++--------------------------- ui/editdialog.go | 7 ++++--- ui/iconprovider.go | 29 ++++++++++++++-------------- ui/listview.go | 26 +++++++++++++------------- ui/managewindow.go | 20 ++++++++++---------- ui/tray.go | 40 +++++++++++++++++++-------------------- ui/tunnelspage.go | 25 +++++++++++++------------ ui/ui.go | 19 ++++++++++--------- ui/updatepage.go | 7 ++++--- 9 files changed, 117 insertions(+), 111 deletions(-) (limited to 'ui') diff --git a/ui/confview.go b/ui/confview.go index 8e28e83e..665841da 100644 --- a/ui/confview.go +++ b/ui/confview.go @@ -13,8 +13,9 @@ import ( "github.com/lxn/walk" "github.com/lxn/win" + "golang.zx2c4.com/wireguard/windows/conf" - "golang.zx2c4.com/wireguard/windows/service" + "golang.zx2c4.com/wireguard/windows/manager" ) type widgetsLine interface { @@ -28,7 +29,7 @@ type widgetsLinesView interface { type rectAndSizeAndState struct { rect walk.Rectangle size walk.Size - state service.TunnelState + state manager.TunnelState } type labelStatusLine struct { @@ -75,8 +76,8 @@ type ConfView struct { name *walk.GroupBox interfaze *interfaceView peers map[conf.Key]*peerView - tunnelChangedCB *service.TunnelChangeCallback - tunnel *service.Tunnel + tunnelChangedCB *manager.TunnelChangeCallback + tunnel *manager.Tunnel updateTicker *time.Ticker } @@ -84,7 +85,7 @@ func (lsl *labelStatusLine) widgets() (walk.Widget, walk.Widget) { return lsl.label, lsl.statusComposite } -func (lsl *labelStatusLine) update(state service.TunnelState) { +func (lsl *labelStatusLine) update(state manager.TunnelState) { icon, err := iconForState(state, 14) if err == nil { lsl.statusImage.SetImage(icon) @@ -122,7 +123,7 @@ func newLabelStatusLine(parent walk.Container) *labelStatusLine { lsl.statusLabel.FocusedChanged().Attach(func() { lsl.statusLabel.SetTextSelection(0, 0) }) - lsl.update(service.TunnelUnknown) + lsl.update(manager.TunnelUnknown) return lsl } @@ -167,26 +168,26 @@ func (tal *toggleActiveLine) widgets() (walk.Widget, walk.Widget) { return nil, tal.composite } -func (tal *toggleActiveLine) updateGlobal(globalState service.TunnelState) { - tal.button.SetEnabled(globalState == service.TunnelStarted || globalState == service.TunnelStopped) +func (tal *toggleActiveLine) updateGlobal(globalState manager.TunnelState) { + tal.button.SetEnabled(globalState == manager.TunnelStarted || globalState == manager.TunnelStopped) } -func (tal *toggleActiveLine) update(state service.TunnelState) { +func (tal *toggleActiveLine) update(state manager.TunnelState) { var text string switch state { - case service.TunnelStarted: + case manager.TunnelStarted: text = "Deactivate" - case service.TunnelStopped: + case manager.TunnelStopped: text = "Activate" - case service.TunnelStarting, service.TunnelStopping: + case manager.TunnelStarting, manager.TunnelStopping: text = textForState(state, true) default: text = "" } tal.button.SetText(text) - tal.button.SetVisible(state != service.TunnelUnknown) + tal.button.SetVisible(state != manager.TunnelUnknown) } func newToggleActiveLine(parent walk.Container) *toggleActiveLine { @@ -199,7 +200,7 @@ func newToggleActiveLine(parent walk.Container) *toggleActiveLine { tal.button, _ = walk.NewPushButton(tal.composite) walk.NewHSpacer(tal.composite) - tal.update(service.TunnelStopped) + tal.update(manager.TunnelStopped) return tal } @@ -388,9 +389,9 @@ func NewConfView(parent walk.Container) (*ConfView, error) { cv.interfaze = newInterfaceView(cv.name) cv.interfaze.toggleActive.button.Clicked().Attach(cv.onToggleActiveClicked) cv.peers = make(map[conf.Key]*peerView) - cv.tunnelChangedCB = service.IPCClientRegisterTunnelChange(cv.onTunnelChanged) + cv.tunnelChangedCB = manager.IPCClientRegisterTunnelChange(cv.onTunnelChanged) cv.SetTunnel(nil) - globalState, _ := service.IPCClientGlobalState() + globalState, _ := manager.IPCClientGlobalState() cv.interfaze.toggleActive.updateGlobal(globalState) if err := walk.InitWrapperWindow(cv); err != nil { @@ -405,9 +406,9 @@ func NewConfView(parent walk.Container) (*ConfView, error) { } if cv.tunnel != nil { tunnel := cv.tunnel - var state service.TunnelState + var state manager.TunnelState var config conf.Config - if state, _ = tunnel.State(); state == service.TunnelStarted { + if state, _ = tunnel.State(); state == manager.TunnelStarted { config, _ = tunnel.RuntimeConfig() } if config.Name == "" { @@ -440,11 +441,11 @@ func (cv *ConfView) onToggleActiveClicked() { oldState, err := cv.tunnel.Toggle() if err != nil { cv.Synchronize(func() { - if oldState == service.TunnelUnknown { + if oldState == manager.TunnelUnknown { walk.MsgBox(cv.Form(), "Failed to determine tunnel state", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStopped { + } else if oldState == manager.TunnelStopped { walk.MsgBox(cv.Form(), "Failed to activate tunnel", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStarted { + } else if oldState == manager.TunnelStarted { walk.MsgBox(cv.Form(), "Failed to deactivate tunnel", err.Error(), walk.MsgBoxIconError) } }) @@ -452,7 +453,7 @@ func (cv *ConfView) onToggleActiveClicked() { }() } -func (cv *ConfView) onTunnelChanged(tunnel *service.Tunnel, state service.TunnelState, globalState service.TunnelState, err error) { +func (cv *ConfView) onTunnelChanged(tunnel *manager.Tunnel, state manager.TunnelState, globalState manager.TunnelState, err error) { cv.Synchronize(func() { cv.interfaze.toggleActive.updateGlobal(globalState) if cv.tunnel != nil && cv.tunnel.Name == tunnel.Name { @@ -462,7 +463,7 @@ func (cv *ConfView) onTunnelChanged(tunnel *service.Tunnel, state service.Tunnel }) if cv.tunnel != nil && cv.tunnel.Name == tunnel.Name { var config conf.Config - if state == service.TunnelStarted { + if state == manager.TunnelStarted { config, _ = tunnel.RuntimeConfig() } if config.Name == "" { @@ -474,14 +475,14 @@ func (cv *ConfView) onTunnelChanged(tunnel *service.Tunnel, state service.Tunnel } } -func (cv *ConfView) SetTunnel(tunnel *service.Tunnel) { +func (cv *ConfView) SetTunnel(tunnel *manager.Tunnel) { cv.tunnel = tunnel //XXX: This races with the read in the updateTicker, but it's pointer-sized! var config conf.Config - var state service.TunnelState + var state manager.TunnelState if tunnel != nil { go func() { - if state, _ = tunnel.State(); state == service.TunnelStarted { + if state, _ = tunnel.State(); state == manager.TunnelStarted { config, _ = tunnel.RuntimeConfig() } if config.Name == "" { @@ -496,7 +497,7 @@ func (cv *ConfView) SetTunnel(tunnel *service.Tunnel) { } } -func (cv *ConfView) setTunnel(tunnel *service.Tunnel, config *conf.Config, state service.TunnelState) { +func (cv *ConfView) setTunnel(tunnel *manager.Tunnel, config *conf.Config, state manager.TunnelState) { if !(cv.tunnel == nil || tunnel == nil || tunnel.Name == cv.tunnel.Name) { return } diff --git a/ui/editdialog.go b/ui/editdialog.go index f46e91e2..27c22eb3 100644 --- a/ui/editdialog.go +++ b/ui/editdialog.go @@ -10,8 +10,9 @@ import ( "strings" "github.com/lxn/walk" + "golang.zx2c4.com/wireguard/windows/conf" - "golang.zx2c4.com/wireguard/windows/service" + "golang.zx2c4.com/wireguard/windows/manager" "golang.zx2c4.com/wireguard/windows/ui/syntax" ) @@ -27,7 +28,7 @@ type EditDialog struct { blockUntunneledTraficCheckGuard bool } -func runTunnelEditDialog(owner walk.Form, tunnel *service.Tunnel, clone bool) *conf.Config { +func runTunnelEditDialog(owner walk.Form, tunnel *manager.Tunnel, clone bool) *conf.Config { dlg := &EditDialog{} var title string @@ -268,7 +269,7 @@ func (dlg *EditDialog) onSaveButtonClicked() { newNameLower := strings.ToLower(newName) if newNameLower != strings.ToLower(dlg.config.Name) { - existingTunnelList, err := service.IPCClientTunnels() + existingTunnelList, err := manager.IPCClientTunnels() if err != nil { walk.MsgBox(dlg, "Unable to list existing tunnels", err.Error(), walk.MsgBoxIconError) return diff --git a/ui/iconprovider.go b/ui/iconprovider.go index d7d6fbcf..9a9d7aeb 100644 --- a/ui/iconprovider.go +++ b/ui/iconprovider.go @@ -7,12 +7,13 @@ package ui import ( "github.com/lxn/walk" - "golang.zx2c4.com/wireguard/windows/service" + + "golang.zx2c4.com/wireguard/windows/manager" ) type widthAndState struct { width int - state service.TunnelState + state manager.TunnelState } type widthAndDllIdx struct { @@ -23,7 +24,7 @@ type widthAndDllIdx struct { var cachedOverlayIconsForWidthAndState = make(map[widthAndState]walk.Image) -func iconWithOverlayForState(state service.TunnelState, size int) (icon walk.Image, err error) { +func iconWithOverlayForState(state manager.TunnelState, size int) (icon walk.Image, err error) { icon = cachedOverlayIconsForWidthAndState[widthAndState{size, state}] if icon != nil { return @@ -34,7 +35,7 @@ func iconWithOverlayForState(state service.TunnelState, size int) (icon walk.Ima return } - if state == service.TunnelStopped { + if state == manager.TunnelStopped { return wireguardIcon, err //TODO: if we find something prettier than the gray dot, then remove this clause } @@ -64,15 +65,15 @@ func iconWithOverlayForState(state service.TunnelState, size int) (icon walk.Ima var cachedIconsForWidthAndState = make(map[widthAndState]*walk.Icon) -func iconForState(state service.TunnelState, size int) (icon *walk.Icon, err error) { +func iconForState(state manager.TunnelState, size int) (icon *walk.Icon, err error) { icon = cachedIconsForWidthAndState[widthAndState{size, state}] if icon != nil { return } switch state { - case service.TunnelStarted: + case manager.TunnelStarted: icon, err = loadSystemIcon("imageres", 101, size) - case service.TunnelStopped: + case manager.TunnelStopped: icon, err = walk.NewIconFromResourceWithSize("dot-gray.ico", walk.Size{size, size}) //TODO: replace with real icon default: icon, err = loadSystemIcon("shell32", 238, size) //TODO: this doesn't look that great overlayed on the app icon @@ -83,22 +84,22 @@ func iconForState(state service.TunnelState, size int) (icon *walk.Icon, err err return } -func textForState(state service.TunnelState, withEllipsis bool) (text string) { +func textForState(state manager.TunnelState, withEllipsis bool) (text string) { switch state { - case service.TunnelStarted: + case manager.TunnelStarted: text = "Active" - case service.TunnelStarting: + case manager.TunnelStarting: text = "Activating" - case service.TunnelStopped: + case manager.TunnelStopped: text = "Inactive" - case service.TunnelStopping: + case manager.TunnelStopping: text = "Deactivating" - case service.TunnelUnknown: + case manager.TunnelUnknown: text = "Unknown state" } if withEllipsis { switch state { - case service.TunnelStarting, service.TunnelStopping: + case manager.TunnelStarting, manager.TunnelStopping: text += "..." } } diff --git a/ui/listview.go b/ui/listview.go index a8c5de89..b99f2d99 100644 --- a/ui/listview.go +++ b/ui/listview.go @@ -10,9 +10,9 @@ import ( "sync/atomic" "golang.zx2c4.com/wireguard/windows/conf" + "golang.zx2c4.com/wireguard/windows/manager" "github.com/lxn/walk" - "golang.zx2c4.com/wireguard/windows/service" ) // ListModel is a struct to store the currently known tunnels to the GUI, suitable as a model for a walk.TableView. @@ -20,7 +20,7 @@ type ListModel struct { walk.TableModelBase walk.SorterBase - tunnels []service.Tunnel + tunnels []manager.Tunnel } func (t *ListModel) RowCount() int { @@ -55,8 +55,8 @@ type ListView struct { model *ListModel - tunnelChangedCB *service.TunnelChangeCallback - tunnelsChangedCB *service.TunnelsChangeCallback + tunnelChangedCB *manager.TunnelChangeCallback + tunnelsChangedCB *manager.TunnelsChangeCallback tunnelsUpdateSuspended int32 } @@ -88,8 +88,8 @@ func NewListView(parent walk.Container) (*ListView, error) { disposables.Spare() - tunnelsView.tunnelChangedCB = service.IPCClientRegisterTunnelChange(tunnelsView.onTunnelChange) - tunnelsView.tunnelsChangedCB = service.IPCClientRegisterTunnelsChange(tunnelsView.onTunnelsChange) + tunnelsView.tunnelChangedCB = manager.IPCClientRegisterTunnelChange(tunnelsView.onTunnelChange) + tunnelsView.tunnelsChangedCB = manager.IPCClientRegisterTunnelsChange(tunnelsView.onTunnelsChange) return tunnelsView, nil } @@ -141,7 +141,7 @@ func (tv *ListView) StyleCell(style *walk.CellStyle) { canvas.DrawImageStretched(icon, b) } -func (tv *ListView) CurrentTunnel() *service.Tunnel { +func (tv *ListView) CurrentTunnel() *manager.Tunnel { idx := tv.CurrentIndex() if idx == -1 { return nil @@ -150,7 +150,7 @@ func (tv *ListView) CurrentTunnel() *service.Tunnel { return &tv.model.tunnels[idx] } -func (tv *ListView) onTunnelChange(tunnel *service.Tunnel, state service.TunnelState, globalState service.TunnelState, err error) { +func (tv *ListView) onTunnelChange(tunnel *manager.Tunnel, state manager.TunnelState, globalState manager.TunnelState, err error) { tv.Synchronize(func() { idx := -1 for i := range tv.model.tunnels { @@ -183,13 +183,13 @@ func (tv *ListView) SetSuspendTunnelsUpdate(suspend bool) { } func (tv *ListView) Load(asyncUI bool) { - tunnels, err := service.IPCClientTunnels() + tunnels, err := manager.IPCClientTunnels() if err != nil { return } doUI := func() { - newTunnels := make(map[service.Tunnel]bool, len(tunnels)) - oldTunnels := make(map[service.Tunnel]bool, len(tv.model.tunnels)) + newTunnels := make(map[manager.Tunnel]bool, len(tunnels)) + oldTunnels := make(map[manager.Tunnel]bool, len(tv.model.tunnels)) for _, tunnel := range tunnels { newTunnels[tunnel] = true } @@ -245,7 +245,7 @@ func (tv *ListView) selectTunnel(tunnelName string) { } func (tv *ListView) SelectFirstActiveTunnel() { - tunnels := make([]service.Tunnel, len(tv.model.tunnels)) + tunnels := make([]manager.Tunnel, len(tv.model.tunnels)) copy(tunnels, tv.model.tunnels) go func() { for _, tunnel := range tunnels { @@ -253,7 +253,7 @@ func (tv *ListView) SelectFirstActiveTunnel() { if err != nil { continue } - if state == service.TunnelStarting || state == service.TunnelStarted { + if state == manager.TunnelStarting || state == manager.TunnelStarted { tv.Synchronize(func() { tv.selectTunnel(tunnel.Name) }) diff --git a/ui/managewindow.go b/ui/managewindow.go index b1a22ac3..7c643aba 100644 --- a/ui/managewindow.go +++ b/ui/managewindow.go @@ -12,7 +12,7 @@ import ( "github.com/lxn/win" "golang.org/x/sys/windows" - "golang.zx2c4.com/wireguard/windows/service" + "golang.zx2c4.com/wireguard/windows/manager" ) type ManageTunnelsWindow struct { @@ -23,7 +23,7 @@ type ManageTunnelsWindow struct { logPage *LogPage updatePage *UpdatePage - tunnelChangedCB *service.TunnelChangeCallback + tunnelChangedCB *manager.TunnelChangeCallback } const ( @@ -98,9 +98,9 @@ func NewManageTunnelsWindow() (*ManageTunnelsWindow, error) { } mtw.tabs.Pages().Add(mtw.logPage.TabPage) - mtw.tunnelChangedCB = service.IPCClientRegisterTunnelChange(mtw.onTunnelChange) - globalState, _ := service.IPCClientGlobalState() - mtw.onTunnelChange(nil, service.TunnelUnknown, globalState, nil) + mtw.tunnelChangedCB = manager.IPCClientRegisterTunnelChange(mtw.onTunnelChange) + globalState, _ := manager.IPCClientGlobalState() + mtw.onTunnelChange(nil, manager.TunnelUnknown, globalState, nil) systemMenu := win.GetSystemMenu(mtw.Handle(), false) if systemMenu != 0 { @@ -129,26 +129,26 @@ func (mtw *ManageTunnelsWindow) Dispose() { mtw.FormBase.Dispose() } -func (mtw *ManageTunnelsWindow) updateProgressIndicator(globalState service.TunnelState) { +func (mtw *ManageTunnelsWindow) updateProgressIndicator(globalState manager.TunnelState) { pi := mtw.ProgressIndicator() if pi == nil { return } switch globalState { - case service.TunnelStopping, service.TunnelStarting: + case manager.TunnelStopping, manager.TunnelStarting: pi.SetState(walk.PIIndeterminate) default: pi.SetState(walk.PINoProgress) } if icon, err := iconForState(globalState, 16); err == nil { - if globalState == service.TunnelStopped { + if globalState == manager.TunnelStopped { icon = nil } pi.SetOverlayIcon(icon, textForState(globalState, false)) } } -func (mtw *ManageTunnelsWindow) onTunnelChange(tunnel *service.Tunnel, state service.TunnelState, globalState service.TunnelState, err error) { +func (mtw *ManageTunnelsWindow) onTunnelChange(tunnel *manager.Tunnel, state manager.TunnelState, globalState manager.TunnelState, err error) { mtw.Synchronize(func() { mtw.updateProgressIndicator(globalState) @@ -204,7 +204,7 @@ func (mtw *ManageTunnelsWindow) WndProc(hwnd win.HWND, msg uint32, wParam, lPara case taskbarButtonCreatedMsg: ret := mtw.FormBase.WndProc(hwnd, msg, wParam, lParam) go func() { - globalState, err := service.IPCClientGlobalState() + globalState, err := manager.IPCClientGlobalState() if err == nil { mtw.Synchronize(func() { mtw.updateProgressIndicator(globalState) diff --git a/ui/tray.go b/ui/tray.go index d376e749..673439ce 100644 --- a/ui/tray.go +++ b/ui/tray.go @@ -12,9 +12,9 @@ import ( "time" "golang.zx2c4.com/wireguard/windows/conf" + "golang.zx2c4.com/wireguard/windows/manager" "github.com/lxn/walk" - "golang.zx2c4.com/wireguard/windows/service" ) // Status + active CIDRs + separator @@ -28,8 +28,8 @@ type Tray struct { mtw *ManageTunnelsWindow - tunnelChangedCB *service.TunnelChangeCallback - tunnelsChangedCB *service.TunnelsChangeCallback + tunnelChangedCB *manager.TunnelChangeCallback + tunnelsChangedCB *manager.TunnelsChangeCallback clicked func() } @@ -102,10 +102,10 @@ func (tray *Tray) setup() error { tray.ContextMenu().Actions().Add(action) } - tray.tunnelChangedCB = service.IPCClientRegisterTunnelChange(tray.onTunnelChange) - tray.tunnelsChangedCB = service.IPCClientRegisterTunnelsChange(tray.onTunnelsChange) + tray.tunnelChangedCB = manager.IPCClientRegisterTunnelChange(tray.onTunnelChange) + tray.tunnelsChangedCB = manager.IPCClientRegisterTunnelsChange(tray.onTunnelsChange) tray.onTunnelsChange() - globalState, _ := service.IPCClientGlobalState() + globalState, _ := manager.IPCClientGlobalState() tray.updateGlobalState(globalState) return nil @@ -124,7 +124,7 @@ func (tray *Tray) Dispose() error { } func (tray *Tray) onTunnelsChange() { - tunnels, err := service.IPCClientTunnels() + tunnels, err := manager.IPCClientTunnels() if err != nil { return } @@ -144,7 +144,7 @@ func (tray *Tray) onTunnelsChange() { }) } -func (tray *Tray) addTunnelAction(tunnel *service.Tunnel) { +func (tray *Tray) addTunnelAction(tunnel *manager.Tunnel) { tunnelAction := walk.NewAction() tunnelAction.SetText(tunnel.Name) tunnelAction.SetEnabled(true) @@ -159,11 +159,11 @@ func (tray *Tray) addTunnelAction(tunnel *service.Tunnel) { raise(tray.mtw.Handle()) tray.mtw.tunnelsPage.listView.selectTunnel(tclosure.Name) tray.mtw.tabs.SetCurrentIndex(0) - if oldState == service.TunnelUnknown { + if oldState == manager.TunnelUnknown { walk.MsgBox(tray.mtw, "Failed to determine tunnel state", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStopped { + } else if oldState == manager.TunnelStopped { walk.MsgBox(tray.mtw, "Failed to activate tunnel", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStarted { + } else if oldState == manager.TunnelStarted { walk.MsgBox(tray.mtw, "Failed to deactivate tunnel", err.Error(), walk.MsgBoxIconError) } }) @@ -208,7 +208,7 @@ func (tray *Tray) removeTunnelAction(tunnelName string) { delete(tray.tunnels, tunnelName) } -func (tray *Tray) onTunnelChange(tunnel *service.Tunnel, state service.TunnelState, globalState service.TunnelState, err error) { +func (tray *Tray) onTunnelChange(tunnel *manager.Tunnel, state manager.TunnelState, globalState manager.TunnelState, err error) { tray.mtw.Synchronize(func() { tray.updateGlobalState(globalState) tray.SetTunnelState(tunnel, state, err == nil) @@ -218,7 +218,7 @@ func (tray *Tray) onTunnelChange(tunnel *service.Tunnel, state service.TunnelSta }) } -func (tray *Tray) updateGlobalState(globalState service.TunnelState) { +func (tray *Tray) updateGlobalState(globalState manager.TunnelState) { if icon, err := iconWithOverlayForState(globalState, 16); err == nil { tray.SetIcon(icon) } @@ -238,23 +238,23 @@ func (tray *Tray) updateGlobalState(globalState service.TunnelState) { statusAction.SetText(fmt.Sprintf("Status: %s", textForState(globalState, false))) switch globalState { - case service.TunnelStarting: + case manager.TunnelStarting: setTunnelActionsEnabled(false) - case service.TunnelStarted: + case manager.TunnelStarted: activeCIDRsAction.SetVisible(true) setTunnelActionsEnabled(true) - case service.TunnelStopping: + case manager.TunnelStopping: setTunnelActionsEnabled(false) - case service.TunnelStopped: + case manager.TunnelStopped: activeCIDRsAction.SetVisible(false) setTunnelActionsEnabled(true) } } -func (tray *Tray) SetTunnelState(tunnel *service.Tunnel, state service.TunnelState, showNotifications bool) { +func (tray *Tray) SetTunnelState(tunnel *manager.Tunnel, state manager.TunnelState, showNotifications bool) { tunnelAction := tray.tunnels[tunnel.Name] if tunnelAction == nil { return @@ -266,7 +266,7 @@ func (tray *Tray) SetTunnelState(tunnel *service.Tunnel, state service.TunnelSta wasChecked := tunnelAction.Checked() switch state { - case service.TunnelStarted: + case manager.TunnelStarted: activeCIDRsAction.SetText("") go func() { config, err := tunnel.RuntimeConfig() @@ -291,7 +291,7 @@ func (tray *Tray) SetTunnelState(tunnel *service.Tunnel, state service.TunnelSta tray.ShowCustom("WireGuard Activated", fmt.Sprintf("The %s tunnel has been activated.", tunnel.Name), icon) } - case service.TunnelStopped: + case manager.TunnelStopped: tunnelAction.SetChecked(false) if wasChecked && showNotifications { icon, _ := loadSystemIcon("imageres", 26, 128) //TODO: this icon isn't very good... diff --git a/ui/tunnelspage.go b/ui/tunnelspage.go index d6deffff..847036fe 100644 --- a/ui/tunnelspage.go +++ b/ui/tunnelspage.go @@ -16,8 +16,9 @@ import ( "github.com/lxn/walk" "github.com/lxn/win" + "golang.zx2c4.com/wireguard/windows/conf" - "golang.zx2c4.com/wireguard/windows/service" + "golang.zx2c4.com/wireguard/windows/manager" ) type TunnelsPage struct { @@ -314,7 +315,7 @@ func (tp *TunnelsPage) importFiles(paths []string) { return conf.TunnelNameIsLess(unparsedConfigs[j].Name, unparsedConfigs[i].Name) }) - existingTunnelList, err := service.IPCClientTunnels() + existingTunnelList, err := manager.IPCClientTunnels() if err != nil { syncedMsgBox("Error", fmt.Sprintf("Could not enumerate existing tunnels: %v", lastErr), walk.MsgBoxIconWarning) return @@ -336,7 +337,7 @@ func (tp *TunnelsPage) importFiles(paths []string) { lastErr = err continue } - _, err = service.IPCClientNewTunnel(config) + _, err = manager.IPCClientNewTunnel(config) if err != nil { lastErr = err continue @@ -384,7 +385,7 @@ func (tp *TunnelsPage) exportTunnels(filePath string) { } func (tp *TunnelsPage) addTunnel(config *conf.Config) { - _, err := service.IPCClientNewTunnel(config) + _, err := manager.IPCClientNewTunnel(config) if err != nil { walk.MsgBox(tp.Form(), "Unable to create tunnel", err.Error(), walk.MsgBoxIconError) } @@ -395,18 +396,18 @@ func (tp *TunnelsPage) addTunnel(config *conf.Config) { func (tp *TunnelsPage) onTunnelsViewItemActivated() { go func() { - globalState, err := service.IPCClientGlobalState() - if err != nil || (globalState != service.TunnelStarted && globalState != service.TunnelStopped) { + globalState, err := manager.IPCClientGlobalState() + if err != nil || (globalState != manager.TunnelStarted && globalState != manager.TunnelStopped) { return } oldState, err := tp.listView.CurrentTunnel().Toggle() if err != nil { tp.Synchronize(func() { - if oldState == service.TunnelUnknown { + if oldState == manager.TunnelUnknown { walk.MsgBox(tp.Form(), "Failed to determine tunnel state", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStopped { + } else if oldState == manager.TunnelStopped { walk.MsgBox(tp.Form(), "Failed to activate tunnel", err.Error(), walk.MsgBoxIconError) - } else if oldState == service.TunnelStarted { + } else if oldState == manager.TunnelStarted { walk.MsgBox(tp.Form(), "Failed to deactivate tunnel", err.Error(), walk.MsgBoxIconError) } }) @@ -426,8 +427,8 @@ func (tp *TunnelsPage) onEditTunnel() { priorState, err := tunnel.State() tunnel.Delete() tunnel.WaitForStop() - tunnel, err2 := service.IPCClientNewTunnel(config) - if err == nil && err2 == nil && (priorState == service.TunnelStarting || priorState == service.TunnelStarted) { + tunnel, err2 := manager.IPCClientNewTunnel(config) + if err == nil && err2 == nil && (priorState == manager.TunnelStarting || priorState == manager.TunnelStarted) { tunnel.Start() } }() @@ -490,7 +491,7 @@ func (tp *TunnelsPage) onDelete() { tp.listView.selectTunnel(selectTunnelAfter) } - tunnelsToDelete := make([]service.Tunnel, len(indices)) + tunnelsToDelete := make([]manager.Tunnel, len(indices)) for i, j := range indices { tunnelsToDelete[i] = tp.listView.model.tunnels[j] diff --git a/ui/ui.go b/ui/ui.go index 6805754c..0f91b61e 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -13,7 +13,8 @@ import ( "github.com/lxn/walk" "github.com/lxn/win" - "golang.zx2c4.com/wireguard/windows/service" + + "golang.zx2c4.com/wireguard/windows/manager" "golang.zx2c4.com/wireguard/windows/version" ) @@ -55,29 +56,29 @@ func RunUI() { } } - service.IPCClientRegisterManagerStopping(func() { + manager.IPCClientRegisterManagerStopping(func() { mtw.Synchronize(func() { walk.App().Exit(0) }) }) - onUpdateNotification := func(updateState service.UpdateState) { - if updateState == service.UpdateStateUnknown { + onUpdateNotification := func(updateState manager.UpdateState) { + if updateState == manager.UpdateStateUnknown { return } mtw.Synchronize(func() { switch updateState { - case service.UpdateStateFoundUpdate: + case manager.UpdateStateFoundUpdate: mtw.UpdateFound() tray.UpdateFound() - case service.UpdateStateUpdatesDisabledUnofficialBuild: + case manager.UpdateStateUpdatesDisabledUnofficialBuild: mtw.SetTitle(mtw.Title() + " (unsigned build, no updates)") } }) } - service.IPCClientRegisterUpdateFound(onUpdateNotification) + manager.IPCClientRegisterUpdateFound(onUpdateNotification) go func() { - updateState, err := service.IPCClientUpdateState() + updateState, err := manager.IPCClientUpdateState() if err == nil { onUpdateNotification(updateState) } @@ -92,7 +93,7 @@ func RunUI() { mtw.Dispose() if shouldQuitManagerWhenExiting { - _, err := service.IPCClientQuit(true) + _, err := manager.IPCClientQuit(true) if err != nil { walk.MsgBox(nil, "Error Exiting WireGuard", fmt.Sprintf("Unable to exit service due to: %s. You may want to stop WireGuard from the service manager.", err), walk.MsgBoxIconError) } diff --git a/ui/updatepage.go b/ui/updatepage.go index 1cab0d26..95657798 100644 --- a/ui/updatepage.go +++ b/ui/updatepage.go @@ -9,7 +9,8 @@ import ( "fmt" "github.com/lxn/walk" - "golang.zx2c4.com/wireguard/windows/service" + + "golang.zx2c4.com/wireguard/windows/manager" "golang.zx2c4.com/wireguard/windows/updater" ) @@ -77,14 +78,14 @@ func NewUpdatePage() (*UpdatePage, error) { button.Clicked().Attach(func() { switchToUpdatingState() - err := service.IPCClientUpdate() + err := manager.IPCClientUpdate() if err != nil { switchToReadyState() status.SetText(fmt.Sprintf("Error: %v. Please try again.", err)) } }) - service.IPCClientRegisterUpdateProgress(func(dp updater.DownloadProgress) { + manager.IPCClientRegisterUpdateProgress(func(dp updater.DownloadProgress) { up.Synchronize(func() { switchToUpdatingState() if dp.Error != nil { -- cgit v1.2.3-59-g8ed1b