Files
open-save-cloud-server/main_windows.go
Aurélie Delhaie c06843cd28 Start refactoring
2023-05-29 17:44:50 +02:00

67 lines
1.5 KiB
Go

//go:build windows
package main
import (
_ "embed"
"github.com/getlantern/systray"
"log"
"net/http"
"tawesoft.co.uk/go/dialog"
)
//go:generate go-winres make
//go:embed tray.ico
var icon []byte
func main() {
path := flag.String("config", "./config.yml", "Set the configuration file path")
flag.Parse()
appConfiguration, err := config.Load(*path)
if err != nil {
dialog.Alert("An error occured while starting the server: " + err.Error())
return
}
if err := initLogger(); err != nil {
dialog.Alert("An error occured while starting the server: " + err.Error())
return
}
appServer := server.NewServer(appConfiguration)
go func(s *http.Server) {
err := s.ListenAndServe()
defer systray.Quit()
if err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal(err)
}
}(appServer.Server)
startWindowsApp(appServer.Server)
}
func startWindowsApp(appServer *http.Server) {
onReady := func() {
systray.SetIcon(icon)
systray.SetTitle("Open Save Cloud Server")
systray.SetTooltip("The server is up and ready")
systray.AddMenuItem("Open Save Cloud "+constant.Version, "").Disable()
systray.AddMenuItem("Running on "+appServer.Addr, "").Disable()
systray.AddSeparator()
mQuit := systray.AddMenuItem("Shutdown", "Quit the server")
for {
select {
case <-mQuit.ClickedCh:
func(s *http.Server) {
mQuit.Disable()
systray.SetTooltip("Shutting down the server...")
s.Shutdown()
}(appServer)
}
}
}
onExit := func() {}
systray.Run(onReady, onExit)
}