aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/confview.go55
-rw-r--r--ui/editdialog.go7
-rw-r--r--ui/iconprovider.go29
-rw-r--r--ui/listview.go26
-rw-r--r--ui/managewindow.go20
-rw-r--r--ui/tray.go40
-rw-r--r--ui/tunnelspage.go25
-rw-r--r--ui/ui.go19
-rw-r--r--ui/updatepage.go7
9 files changed, 117 insertions, 111 deletions
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 {