scanfile/server/main.go
2025-06-12 11:59:10 +02:00

53 lines
1.7 KiB
Go

/*
Copyright © 2025 Johannes Bülow <johannes.buelow@jmbit.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package main
import (
"log"
"log/slog"
"os"
"sync"
"git.jmbit.de/jmb/scanfile/server/internal/config"
"git.jmbit.de/jmb/scanfile/server/internal/database"
"git.jmbit.de/jmb/scanfile/server/internal/processing"
"git.jmbit.de/jmb/scanfile/server/internal/server"
"git.jmbit.de/jmb/scanfile/server/internal/store"
"github.com/spf13/viper"
)
func main() {
log.SetOutput(os.Stderr)
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stderr, nil)))
config.ReadConfigFile("")
if viper.GetBool("debug") {
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug})))
slog.Debug("Debug logging enabled")
}
var wg sync.WaitGroup
database.Connect()
database.Ping()
store.SetupStore()
processing.Setup(&wg)
if viper.GetBool("web.tls") {
slog.Info("Starting HTTPS server")
server.NewServer().ListenAndServeTLS(viper.GetString("web.cert"), viper.GetString("web.key"))
} else {
slog.Info("Starting HTTP server")
server.NewServer().ListenAndServe()
}
}