Added TLS

This commit is contained in:
Pablu23
2024-05-30 19:36:33 +02:00
parent a2232026a0
commit 11857a7156
2 changed files with 42 additions and 34 deletions

View File

@@ -52,7 +52,7 @@ func New(provider provider.Provider, db *database.Manager, mux *http.ServeMux, s
return &s return &s
} }
func (s *Server) Start(port int) error { func (s *Server) RegisterRoutes() {
s.mux.HandleFunc("GET /login", s.HandleLogin) s.mux.HandleFunc("GET /login", s.HandleLogin)
s.mux.HandleFunc("POST /login", s.HandleLoginPost) s.mux.HandleFunc("POST /login", s.HandleLoginPost)
s.mux.HandleFunc("/", s.HandleMenu) s.mux.HandleFunc("/", s.HandleMenu)
@@ -68,40 +68,19 @@ func (s *Server) Start(port int) error {
s.mux.HandleFunc("POST /setting/", s.HandleSetting) s.mux.HandleFunc("POST /setting/", s.HandleSetting)
s.mux.HandleFunc("GET /setting/set/{setting}/{value}", s.HandleSettingSet) 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() {
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)
}
}
})
for { func (s *Server) StartTLS(port int, certFile, keyFile string) error {
select { fmt.Println("Server starting...")
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)
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...") fmt.Println("Server starting...")
server := http.Server{ server := http.Server{
@@ -111,6 +90,25 @@ func (s *Server) Start(port int) error {
return server.ListenAndServe() 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 {
err, updated := s.UpdateLatestAvailableChapter(m)
if err != nil {
fmt.Println(err)
}
if updated {
s.DbMgr.Db.Save(m)
}
}
}
}
}
func (s *Server) LoadNext() { func (s *Server) LoadNext() {
c, err := s.Provider.GetHtml(s.CurrSubUrl) c, err := s.Provider.GetHtml(s.CurrSubUrl)
if err != nil { if err != nil {

10
main.go
View File

@@ -23,6 +23,8 @@ var (
portFlag = flag.Int("port", 80, "The port on which to host") portFlag = flag.Int("port", 80, "The port on which to host")
serverFlag = flag.Bool("server", false, "If false dont open Browser with Address") serverFlag = flag.Bool("server", false, "If false dont open Browser with Address")
databaseFlag = flag.String("database", "", "Path to sqlite.db file") 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() { func main() {
@@ -82,10 +84,18 @@ func main() {
}() }()
} }
s.RegisterRoutes()
if *certFlag != "" && *keyFlag != "" {
err = s.StartTLS(*portFlag, *certFlag, *keyFlag)
if err != nil {
panic(err)
}
} else {
err = s.Start(*portFlag) err = s.Start(*portFlag)
if err != nil { if err != nil {
panic(err) panic(err)
} }
}
} }
func open(url string) error { func open(url string) error {