/* Copyright © 2025 Johannes Bülow 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 . */ 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() } }