mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-02 20:49:17 +02:00
97 lines
2.1 KiB
Go
97 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"time"
|
|
|
|
"github.com/getlantern/systray"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/skratchdot/open-golang/open"
|
|
"github.com/wiretrustee/wiretrustee/client/internal"
|
|
"github.com/wiretrustee/wiretrustee/client/proto"
|
|
"github.com/wiretrustee/wiretrustee/client/ui/config"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
)
|
|
|
|
func main() {
|
|
systray.Run(onReady, nil)
|
|
}
|
|
|
|
// TODO: implementation for SSO Logins
|
|
func onReady() {
|
|
wtIcon, err := ioutil.ReadFile("wiretrustee.ico")
|
|
if err != nil {
|
|
log.Warn(err)
|
|
}
|
|
if wtIcon != nil {
|
|
systray.SetTemplateIcon(wtIcon, wtIcon)
|
|
}
|
|
|
|
go func() {
|
|
up := systray.AddMenuItem("Up", "Up")
|
|
down := systray.AddMenuItem("Down", "Down")
|
|
|
|
mUrl := systray.AddMenuItem("Open UI", "wiretrustee website")
|
|
systray.AddSeparator()
|
|
|
|
mQuitOrig := systray.AddMenuItem("Quit", "Quit the whole app")
|
|
go func() {
|
|
<-mQuitOrig.ClickedCh
|
|
fmt.Println("Requesting quit")
|
|
systray.Quit()
|
|
fmt.Println("Finished quitting")
|
|
}()
|
|
|
|
for {
|
|
select {
|
|
case <-mUrl.ClickedCh:
|
|
open.Run("https://app.wiretrustee.com")
|
|
case <-up.ClickedCh:
|
|
upCmdExec()
|
|
case <-down.ClickedCh:
|
|
fmt.Println("Clicked down")
|
|
}
|
|
}
|
|
}()
|
|
}
|
|
|
|
func handleUp() {
|
|
// This is where
|
|
}
|
|
|
|
func upCmdExec() {
|
|
log.Println("executing up command..")
|
|
cfg := config.Config()
|
|
|
|
ctx := internal.CtxInitState(context.Background())
|
|
|
|
conn, err := grpc.DialContext(ctx, cfg.DaemonAddr(),
|
|
grpc.WithTimeout(5*time.Second),
|
|
grpc.WithTransportCredentials(insecure.NewCredentials()),
|
|
grpc.WithBlock())
|
|
if err != nil {
|
|
log.Errorf("failed to connect to service CLI interface; %v", err)
|
|
return
|
|
}
|
|
daemonClient := proto.NewDaemonServiceClient(conn)
|
|
|
|
status, err := daemonClient.Status(ctx, &proto.StatusRequest{})
|
|
if err != nil {
|
|
log.Errorf("get status: %v", err)
|
|
return
|
|
}
|
|
|
|
if status.Status != string(internal.StatusIdle) {
|
|
log.Warnf("already connected")
|
|
return
|
|
}
|
|
_, err = daemonClient.Up(ctx, &proto.UpRequest{})
|
|
if err != nil {
|
|
log.Errorf("Failed to start up client; %v", err)
|
|
return
|
|
}
|
|
}
|