diff --git a/main.go b/main.go index bef02d5..bfa6b73 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "github.com/nkanaev/yarr/platform" "github.com/nkanaev/yarr/server" "github.com/nkanaev/yarr/storage" + sdopen "github.com/skratchdot/open-golang/open" "log" "os" "path/filepath" @@ -18,13 +19,14 @@ var GitHash string = "unknown" func main() { var addr, db, authfile, certfile, keyfile string - var ver bool + var ver, open bool flag.StringVar(&addr, "addr", "127.0.0.1:7070", "address to run server on") flag.StringVar(&authfile, "auth-file", "", "path to a file containing username:password") flag.StringVar(&certfile, "cert-file", "", "path to cert file for https") flag.StringVar(&keyfile, "key-file", "", "path to key file for https") flag.StringVar(&db, "db", "", "storage file path") flag.BoolVar(&ver, "version", false, "print application version") + flag.BoolVar(&open, "open", false, "open the server in browser") flag.Parse() if ver { @@ -80,11 +82,9 @@ func main() { srv := server.New(store, logger, addr) - proto := "http" if certfile != "" && keyfile != "" { srv.CertFile = certfile srv.KeyFile = keyfile - proto = "https" } if username != "" && password != "" { @@ -92,6 +92,9 @@ func main() { srv.Password = password } - logger.Printf("starting server at %s://%s", proto, addr) + logger.Printf("starting server at %s", srv.GetAddr()) + if open { + sdopen.Run(srv.GetAddr()) + } platform.Start(srv) } diff --git a/platform/gui.go b/platform/gui.go index 414dadd..95183f5 100644 --- a/platform/gui.go +++ b/platform/gui.go @@ -20,7 +20,7 @@ func Start(s *server.Handler) { for { select { case <-menuOpen.ClickedCh: - open.Run("http://" + s.Addr) + open.Run(s.GetAddr()) case <-menuQuit.ClickedCh: systray.Quit() } diff --git a/server/server.go b/server/server.go index c732745..f15d358 100644 --- a/server/server.go +++ b/server/server.go @@ -37,6 +37,14 @@ func New(db *storage.Storage, logger *log.Logger, addr string) *Handler { } } +func (h *Handler) GetAddr() string { + proto := "http" + if (h.CertFile != "" && h.KeyFile != "") { + proto = "https" + } + return proto + "://" + h.Addr +} + func (h *Handler) Start() { h.startJobs() s := &http.Server{Addr: h.Addr, Handler: h}