Files
sshproxytray/main.go
2021-06-17 08:18:45 +02:00

62 lines
958 B
Go

package main
import (
"os"
"os/exec"
_ "embed"
"github.com/getlantern/systray"
)
//go:embed icon/shield.png
var activeIcon []byte
//go:embed icon/shield-off.png
var inactiveIcon []byte
func main() {
systray.Run(onReady, onExit)
}
func onReady() {
systray.SetIcon(inactiveIcon)
connect := systray.AddMenuItem("Connect", "")
quit := systray.AddMenuItem("Quit", "")
var cmd *exec.Cmd
for {
select {
case <-quit.ClickedCh:
if cmd != nil {
cmd.Process.Kill()
}
systray.Quit()
case <-connect.ClickedCh:
if cmd == nil {
cmd = exec.Command("ssh", "-N", "proxytray")
systray.SetIcon(activeIcon)
connect.SetTitle("Disconnect")
cmd.Stderr = os.Stdout
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
cmd.Start()
go func() {
cmd.Wait()
systray.SetIcon(inactiveIcon)
connect.SetTitle("Connect")
cmd = nil
}()
} else {
cmd.Process.Kill()
}
}
}
}
func onExit() {
}