Added better logging

This commit is contained in:
Pablu23
2024-05-30 23:42:35 +02:00
parent 2aab7906e1
commit 766da5aeb2
7 changed files with 139 additions and 99 deletions

View File

@@ -1,5 +1,5 @@
run: develop
bin/develop --server --port 8080 --secret test --database db.sqlite
bin/develop --server --port 8080 --secret test --database db.sqlite --debug --pretty
develop:
go build -tags Develop -o bin/develop
release:

8
go.mod
View File

@@ -7,6 +7,14 @@ require (
golang.org/x/text v0.14.0
)
require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/rs/zerolog v1.33.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
golang.org/x/sys v0.20.0 // indirect
)
require (
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect

21
go.sum
View File

@@ -1,9 +1,30 @@
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
gorm.io/driver/sqlite v1.5.5 h1:7MDMtUZhV065SilG62E0MquljeArQZNfJnjd9i9gx3E=

View File

@@ -7,6 +7,8 @@ import (
"net/http"
"regexp"
"strconv"
"github.com/rs/zerolog/log"
)
type Bato struct{}
@@ -49,7 +51,7 @@ func (b *Bato) GetHtml(titleSubUrl string) (string, error) {
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
fmt.Printf("Could not close body because: %v\n", err)
log.Error().Err(err).Msg("Could not close http body")
}
}(resp.Body)
@@ -64,14 +66,23 @@ func (b *Bato) GetHtml(titleSubUrl string) (string, error) {
func (b *Bato) GetNext(html string) (subUrl string, err error) {
reg, err := regexp.Compile(`<a data-hk="0-6-0" .*? href="(.*?)["']`)
match := reg.FindStringSubmatch(html)
if err != nil {
return "", err
}
match := reg.FindStringSubmatch(html)
if len(match) <= 1 {
return "", err
}
return match[1], err
}
func (b *Bato) GetPrev(html string) (subUrl string, err error) {
reg, err := regexp.Compile(`<a data-hk="0-5-0" .*? href="(.*?)["']`)
match := reg.FindStringSubmatch(html)
if len(match) <= 1 {
return "", err
}
return match[1], err
}

View File

@@ -5,17 +5,19 @@ import (
_ "embed"
"errors"
"fmt"
"github.com/pablu23/mangaGetter/internal/database"
"github.com/pablu23/mangaGetter/internal/view"
"golang.org/x/text/cases"
"golang.org/x/text/language"
"gorm.io/gorm"
"html/template"
"net/http"
"slices"
"strconv"
"strings"
"time"
"github.com/pablu23/mangaGetter/internal/database"
"github.com/pablu23/mangaGetter/internal/view"
"github.com/rs/zerolog/log"
"golang.org/x/text/cases"
"golang.org/x/text/language"
"gorm.io/gorm"
)
func (s *Server) HandleUpdate(w http.ResponseWriter, r *http.Request) {
@@ -67,8 +69,6 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
mangaViewModels := make([]view.MangaViewModel, l)
counter := 0
n := time.Now().UnixNano()
var tmp []database.Setting
s.DbMgr.Db.Find(&tmp)
settings := make(map[string]database.Setting)
@@ -76,15 +76,10 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
settings[m.Name] = m
}
var thumbNs int64 = 0
var titNs int64 = 0
//TODO: Change all this to be more performant
for _, manga := range all {
title := cases.Title(language.English, cases.Compact).String(strings.Replace(manga.Title, "-", " ", -1))
t1 := time.Now().UnixNano()
thumbnail, updated, err := s.LoadThumbnail(manga)
//TODO: Add default picture instead of not showing Manga at all
if err != nil {
@@ -93,29 +88,18 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
if updated {
s.DbMgr.Db.Save(manga)
}
t2 := time.Now().UnixNano()
thumbNs += t2 - t1
t1 = time.Now().UnixNano()
// This is very slow
// TODO: put this into own Method
if manga.LastChapterNum == "" {
err, updated := s.UpdateLatestAvailableChapter(manga)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not update latest available chapters")
}
if updated {
s.DbMgr.Db.Save(manga)
}
}
t2 = time.Now().UnixNano()
titNs += t2 - t1
latestChapter, ok := manga.GetLatestChapter()
if !ok {
continue
@@ -134,14 +118,6 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
counter++
}
fmt.Printf("Loading Thumbnails took %d ms\n", (thumbNs)/1000000)
fmt.Printf("Loading latest Chapters took %d ms\n", (titNs)/1000000)
nex := time.Now().UnixNano()
fmt.Printf("Creating Viewmodels took %d ms\n", (nex-n)/1000000)
n = time.Now().UnixNano()
order, ok := settings["order"]
if !ok || order.Value == "title" {
slices.SortStableFunc(mangaViewModels, func(a, b view.MangaViewModel) int {
@@ -165,9 +141,6 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
})
}
nex = time.Now().UnixNano()
fmt.Printf("Sorting took %d ms\n", (nex-n)/1000000)
menuViewModel := view.MenuViewModel{
Settings: settings,
Mangas: mangaViewModels,
@@ -175,7 +148,7 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
err := tmpl.Execute(w, menuViewModel)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not template Menu")
}
}
@@ -189,7 +162,7 @@ func (s *Server) HandleDelete(w http.ResponseWriter, r *http.Request) {
mangaId, err := strconv.Atoi(mangaStr)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Str("Id", mangaStr).Msg("Could not convert id to int")
http.Redirect(w, r, "/", http.StatusFound)
return
}
@@ -222,20 +195,22 @@ func (s *Server) HandleExit(w http.ResponseWriter, r *http.Request) {
}
}
s.Mutex.Unlock()
fmt.Println("Cleaned last Manga")
log.Info().Msg("Cleaned up images")
}()
}
func (s *Server) HandleCurrent(w http.ResponseWriter, _ *http.Request) {
func (s *Server) HandleCurrent(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(view.GetViewTemplate(view.Viewer))
mangaId, chapterId, err := s.Provider.GetTitleIdAndChapterId(s.CurrSubUrl)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Str("subUrl", s.CurrSubUrl).Msg("Could not get TitleId and ChapterId")
http.Redirect(w, r, "/", http.StatusFound)
return
}
title, chapterName, err := s.Provider.GetTitleAndChapter(s.CurrSubUrl)
if err != nil {
fmt.Println(err)
log.Warn().Err(err).Str("subUrl", s.CurrSubUrl).Msg("Could not get Title and Chapter")
}
var manga database.Manga
@@ -260,7 +235,7 @@ func (s *Server) HandleCurrent(w http.ResponseWriter, _ *http.Request) {
err = tmpl.Execute(w, s.CurrViewModel)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not template Current")
}
}
@@ -270,15 +245,15 @@ func (s *Server) HandleImage(w http.ResponseWriter, r *http.Request) {
defer s.Mutex.Unlock()
buf := s.ImageBuffers[u]
if buf == nil {
fmt.Printf("url: %s is nil\n", u)
w.WriteHeader(400)
log.Warn().Str("url", u).Msg("Image not found")
w.WriteHeader(http.StatusNotFound)
return
}
w.Header().Set("Content-Type", "image/webp")
_, err := w.Write(buf)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not write image")
}
}
@@ -289,13 +264,11 @@ func (s *Server) HandleFavicon(w http.ResponseWriter, _ *http.Request) {
w.Header().Set("Content-Type", "image/webp")
_, err := w.Write(ico)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not write favicon")
}
}
func (s *Server) HandleNext(w http.ResponseWriter, r *http.Request) {
fmt.Println("Received Next")
if s.PrevViewModel != nil {
go func(viewModel view.ImageViewModel, s *Server) {
s.Mutex.Lock()
@@ -303,7 +276,7 @@ func (s *Server) HandleNext(w http.ResponseWriter, r *http.Request) {
delete(s.ImageBuffers, img.Path)
}
s.Mutex.Unlock()
fmt.Println("Cleaned out of scope Last")
log.Debug().Msg("Cleaned imagebuffer")
}(*s.PrevViewModel, s)
}
@@ -321,8 +294,8 @@ func (s *Server) HandleNext(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/current/", http.StatusFound)
}
func (s *Server) HandlePrev(w http.ResponseWriter, r *http.Request) {
fmt.Println("Received Prev")
if s.NextViewModel != nil {
go func(viewModel view.ImageViewModel, s *Server) {
s.Mutex.Lock()
@@ -330,7 +303,7 @@ func (s *Server) HandlePrev(w http.ResponseWriter, r *http.Request) {
delete(s.ImageBuffers, img.Path)
}
s.Mutex.Unlock()
fmt.Println("Cleaned out of scope Last")
log.Debug().Msg("Cleaned imagebuffer")
}(*s.NextViewModel, s)
}
@@ -376,6 +349,8 @@ func (s *Server) HandleSetting(w http.ResponseWriter, r *http.Request) {
if res.Error != nil && errors.Is(res.Error, gorm.ErrRecordNotFound) {
set := database.NewSetting(settingName, settingValue)
s.DbMgr.Db.Save(&set)
} else if res.Error != nil {
log.Error().Err(res.Error).Send()
} else {
s.DbMgr.Db.Model(&setting).Update("value", settingValue)
}

View File

@@ -4,9 +4,6 @@ import (
"bytes"
_ "embed"
"fmt"
"github.com/pablu23/mangaGetter/internal/database"
"github.com/pablu23/mangaGetter/internal/provider"
"github.com/pablu23/mangaGetter/internal/view"
"io"
"net/http"
"path/filepath"
@@ -14,6 +11,11 @@ import (
"strings"
"sync"
"time"
"github.com/pablu23/mangaGetter/internal/database"
"github.com/pablu23/mangaGetter/internal/provider"
"github.com/pablu23/mangaGetter/internal/view"
"github.com/rs/zerolog/log"
)
type Server struct {
@@ -71,8 +73,7 @@ func (s *Server) RegisterRoutes() {
}
func (s *Server) StartTLS(port int, certFile, keyFile string) error {
fmt.Println("Server starting...")
log.Info().Int("Port", port).Str("Certificate", certFile).Str("Key", keyFile).Msg("Starting server")
server := http.Server{
Addr: fmt.Sprintf(":%d", port),
Handler: s.Auth(s.mux),
@@ -81,7 +82,7 @@ func (s *Server) StartTLS(port int, certFile, keyFile string) error {
}
func (s *Server) Start(port int) error {
fmt.Println("Server starting...")
log.Info().Int("Port", port).Msg("Starting server")
server := http.Server{
Addr: fmt.Sprintf(":%d", port),
@@ -96,7 +97,7 @@ func (s *Server) UpdateMangaList() {
for _, m := range all {
err, updated := s.UpdateLatestAvailableChapter(m)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Str("Manga", m.Title).Msg("Could not update latest available chapters")
}
if updated {
s.DbMgr.Db.Save(m)
@@ -118,7 +119,7 @@ func (s *Server) RegisterUpdater(interval time.Duration) {
func (s *Server) LoadNext() {
c, err := s.Provider.GetHtml(s.CurrSubUrl)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not get Html for current chapter")
s.NextSubUrl = ""
s.NextViewModel = nil
return
@@ -126,7 +127,7 @@ func (s *Server) LoadNext() {
next, err := s.Provider.GetNext(c)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not load next chapter")
s.NextSubUrl = ""
s.NextViewModel = nil
return
@@ -134,7 +135,7 @@ func (s *Server) LoadNext() {
html, err := s.Provider.GetHtml(next)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not get Html for next chapter")
s.NextSubUrl = ""
s.NextViewModel = nil
return
@@ -142,7 +143,7 @@ func (s *Server) LoadNext() {
imagesNext, err := s.AppendImagesToBuf(html)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not download images")
s.NextSubUrl = ""
s.NextViewModel = nil
return
@@ -150,6 +151,7 @@ func (s *Server) LoadNext() {
title, chapter, err := s.Provider.GetTitleAndChapter(next)
if err != nil {
log.Warn().Err(err).Str("Url", next).Msg("Could not extract title and chapter")
title = "Unknown"
chapter = "ch_?"
}
@@ -158,27 +160,27 @@ func (s *Server) LoadNext() {
s.NextViewModel = &view.ImageViewModel{Images: imagesNext, Title: full}
s.NextSubUrl = next
fmt.Println("Loaded next")
log.Debug().Msg("Successfully loaded next chapter")
}
func (s *Server) LoadPrev() {
c, err := s.Provider.GetHtml(s.CurrSubUrl)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not get Html for current chapter")
s.PrevSubUrl = ""
s.PrevViewModel = nil
return
}
prev, err := s.Provider.GetPrev(c)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not load prev chapter")
s.PrevSubUrl = ""
s.PrevViewModel = nil
return
}
html, err := s.Provider.GetHtml(prev)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not get Html for prev chapter")
s.PrevSubUrl = ""
s.PrevViewModel = nil
return
@@ -186,7 +188,7 @@ func (s *Server) LoadPrev() {
imagesNext, err := s.AppendImagesToBuf(html)
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not download images")
s.PrevSubUrl = ""
s.PrevViewModel = nil
return
@@ -194,6 +196,7 @@ func (s *Server) LoadPrev() {
title, chapter, err := s.Provider.GetTitleAndChapter(prev)
if err != nil {
log.Warn().Err(err).Str("Url", prev).Msg("Could not extract title and chapter")
title = "Unknown"
chapter = "ch_?"
}
@@ -203,19 +206,28 @@ func (s *Server) LoadPrev() {
s.PrevViewModel = &view.ImageViewModel{Images: imagesNext, Title: full}
s.PrevSubUrl = prev
fmt.Println("Loaded prev")
log.Debug().Msg("Successfully loaded prev chapter")
}
func (s *Server) LoadCurr() {
html, err := s.Provider.GetHtml(s.CurrSubUrl)
if err != nil {
panic(err)
log.Error().Err(err).Msg("Could not get Html for current chapter")
s.NextSubUrl = ""
s.PrevSubUrl = ""
s.CurrSubUrl = ""
s.NextViewModel = nil
s.CurrViewModel = nil
s.PrevViewModel = nil
return
}
imagesCurr, err := s.AppendImagesToBuf(html)
title, chapter, err := s.Provider.GetTitleAndChapter(s.CurrSubUrl)
if err != nil {
log.Warn().Err(err).Str("Url", s.CurrSubUrl).Msg("Could not extract title and chapter")
title = "Unknown"
chapter = "ch_?"
}
@@ -223,11 +235,11 @@ func (s *Server) LoadCurr() {
full := strings.Replace(title, "-", " ", -1) + " - " + strings.Replace(chapter, "_", " ", -1)
s.CurrViewModel = &view.ImageViewModel{Images: imagesCurr, Title: full}
fmt.Println("Loaded current")
log.Debug().Msg("Successfully loaded curr chapter")
}
func (s *Server) UpdateLatestAvailableChapter(manga *database.Manga) (error, bool) {
fmt.Printf("Updating Manga: %s\n", manga.Title)
log.Info().Str("Manga", manga.Title).Msg("Updating Manga")
l, err := s.Provider.GetChapterList("/title/" + strconv.Itoa(manga.Id))
if err != nil {
@@ -315,7 +327,7 @@ func addFileToRam(url string) ([]byte, error) {
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not close http body")
}
}(resp.Body)

33
main.go
View File

@@ -14,6 +14,8 @@ import (
"github.com/pablu23/mangaGetter/internal/database"
"github.com/pablu23/mangaGetter/internal/provider"
"github.com/pablu23/mangaGetter/internal/server"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
var (
@@ -26,6 +28,8 @@ var (
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")
updateIntervalFlag = flag.String("update", "1h", "Interval to update Mangas")
debugFlag = flag.Bool("debug", false, "Activate debug Logs")
prettyLogsFlag = flag.Bool("pretty", false, "Pretty pring Logs")
)
func main() {
@@ -33,19 +37,28 @@ func main() {
var filePath string
flag.Parse()
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if *prettyLogsFlag {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
}
if !*debugFlag {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
if *secretFlag != "" {
secret = *secretFlag
} else if *secretFilePathFlag != "" {
buf, err := os.ReadFile(*secretFilePathFlag)
if err != nil {
panic(err)
log.Fatal().Err(err).Str("Path", *secretFilePathFlag).Msg("Could not read secret File")
}
secret = string(buf)
} else if *authFlag {
cacheSecret, err := getSecret()
secret = cacheSecret
if err != nil {
fmt.Printf("Secret file could not be found or read because of %s, not activating Auth\n", err)
log.Error().Err(err).Msg("Secret file could not be found or read, not activating Auth")
}
}
@@ -58,8 +71,7 @@ func main() {
db := database.NewDatabase(filePath, true)
err := db.Open()
if err != nil {
fmt.Println(err)
return
log.Fatal().Err(err).Str("Path", filePath).Msg("Could not open Database")
}
secret = strings.TrimSpace(secret)
@@ -80,14 +92,14 @@ func main() {
time.Sleep(300 * time.Millisecond)
err := open(fmt.Sprintf("http://localhost:%d", *portFlag))
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not open Browser")
}
}()
}
interval, err := time.ParseDuration(*updateIntervalFlag)
if err != nil {
panic(err)
log.Fatal().Err(err).Str("Interval", *updateIntervalFlag).Msg("Could not parse interval")
}
s.RegisterUpdater(interval)
s.RegisterRoutes()
@@ -95,12 +107,12 @@ func main() {
if *certFlag != "" && *keyFlag != "" {
err = s.StartTLS(*portFlag, *certFlag, *keyFlag)
if err != nil {
panic(err)
log.Fatal().Err(err).Str("Cert", *certFlag).Str("Key", *keyFlag).Int("Port", *portFlag).Msg("Could not start TLS server")
}
} else {
err = s.Start(*portFlag)
if err != nil {
panic(err)
log.Fatal().Err(err).Int("Port", *portFlag).Msg("Could not start server")
}
}
}
@@ -123,10 +135,11 @@ func open(url string) error {
}
func Close(db *database.Manager) {
fmt.Println("Attempting to save and close DB")
log.Debug().Msg("Closing Database")
err := db.Close()
if err != nil {
fmt.Println(err)
log.Error().Err(err).Msg("Could not close Database")
return
}
os.Exit(0)
}