From 11857a7156dc335894289f36d890e42156be27a5 Mon Sep 17 00:00:00 2001 From: Pablu23 Date: Thu, 30 May 2024 19:36:33 +0200 Subject: [PATCH] Added TLS --- internal/server/server.go | 60 +++++++++++++++++++-------------------- main.go | 16 +++++++++-- 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/internal/server/server.go b/internal/server/server.go index ffcd756..c098533 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -52,9 +52,9 @@ func New(provider provider.Provider, db *database.Manager, mux *http.ServeMux, s return &s } -func (s *Server) Start(port int) error { - s.mux.HandleFunc("GET /login", s.HandleLogin) - s.mux.HandleFunc("POST /login", s.HandleLoginPost) +func (s *Server) RegisterRoutes() { + s.mux.HandleFunc("GET /login", s.HandleLogin) + s.mux.HandleFunc("POST /login", s.HandleLoginPost) s.mux.HandleFunc("/", s.HandleMenu) s.mux.HandleFunc("/new/", s.HandleNewQuery) s.mux.HandleFunc("/new/title/{title}/{chapter}", s.HandleNew) @@ -68,9 +68,32 @@ func (s *Server) Start(port int) error { s.mux.HandleFunc("POST /setting/", s.HandleSetting) s.mux.HandleFunc("GET /setting/set/{setting}/{value}", s.HandleSettingSet) - // Update Latest Chapters every 5 Minutes - go func(s *Server) { - time.AfterFunc(time.Second*10, func() { +} + +func (s *Server) StartTLS(port int, certFile, keyFile string) error { + fmt.Println("Server starting...") + + server := http.Server{ + Addr: fmt.Sprintf(":%d", port), + Handler: s.Auth(s.mux), + } + return server.ListenAndServeTLS(certFile, keyFile) +} + +func (s *Server) Start(port int) error { + fmt.Println("Server starting...") + + server := http.Server{ + Addr: fmt.Sprintf(":%d", port), + Handler: s.Auth(s.mux), + } + return server.ListenAndServe() +} + +func (s *Server) RegisterUpdateMangas(interval time.Duration) { + for { + select { + case <-time.After(interval): var all []*database.Manga s.DbMgr.Db.Find(&all) for _, m := range all { @@ -82,33 +105,8 @@ func (s *Server) Start(port int) error { s.DbMgr.Db.Save(m) } } - }) - - for { - select { - case <-time.After(time.Minute * 5): - var all []*database.Manga - s.DbMgr.Db.Find(&all) - for _, m := range all { - err, updated := s.UpdateLatestAvailableChapter(m) - if err != nil { - fmt.Println(err) - } - if updated { - s.DbMgr.Db.Save(m) - } - } - } } - }(s) - - fmt.Println("Server starting...") - - server := http.Server{ - Addr: fmt.Sprintf(":%d", port), - Handler: s.Auth(s.mux), } - return server.ListenAndServe() } func (s *Server) LoadNext() { diff --git a/main.go b/main.go index 45570f9..78b0d4e 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,8 @@ var ( portFlag = flag.Int("port", 80, "The port on which to host") serverFlag = flag.Bool("server", false, "If false dont open Browser with Address") databaseFlag = flag.String("database", "", "Path to sqlite.db file") + certFlag = flag.String("cert", "", "Path to cert file, has to be used in conjunction with key") + keyFlag = flag.String("key", "", "Path to key file, has to be used in conjunction with cert") ) func main() { @@ -82,9 +84,17 @@ func main() { }() } - err = s.Start(*portFlag) - if err != nil { - panic(err) + s.RegisterRoutes() + if *certFlag != "" && *keyFlag != "" { + err = s.StartTLS(*portFlag, *certFlag, *keyFlag) + if err != nil { + panic(err) + } + } else { + err = s.Start(*portFlag) + if err != nil { + panic(err) + } } }