From 5e4da01c3ae3ae2e870faba9085d9d9213c01c29 Mon Sep 17 00:00:00 2001 From: r Date: Fri, 13 Dec 2019 18:08:26 +0000 Subject: Initial commit --- main.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..d726fed --- /dev/null +++ b/main.go @@ -0,0 +1,76 @@ +package main + +import ( + "database/sql" + "log" + "math/rand" + "net/http" + "os" + "time" + + "web/config" + "web/renderer" + "web/repository" + "web/service" + + _ "github.com/mattn/go-sqlite3" +) + +func init() { + rand.Seed(time.Now().Unix()) +} + +func main() { + config, err := config.ParseFile("default.conf") + if err != nil { + log.Fatal(err) + } + + if !config.IsValid() { + log.Fatal("invalid config") + } + + renderer, err := renderer.NewRenderer(config.TemplatesGlobPattern) + if err != nil { + log.Fatal(err) + } + + db, err := sql.Open("sqlite3", config.DatabasePath) + if err != nil { + log.Fatal(err) + } + defer db.Close() + + sessionRepo, err := repository.NewSessionRepository(db) + if err != nil { + log.Fatal(err) + } + + appRepo, err := repository.NewAppRepository(db) + if err != nil { + log.Fatal(err) + } + + var logger *log.Logger + if len(config.Logfile) < 1 { + logger = log.New(os.Stdout, "", log.LstdFlags) + } else { + lf, err := os.Open(config.Logfile) + if err != nil { + log.Fatal(err) + } + defer lf.Close() + logger = log.New(lf, "", log.LstdFlags) + } + + s := service.NewService(config.ClientName, config.ClientScope, config.ClientWebsite, renderer, sessionRepo, appRepo) + s = service.NewAuthService(sessionRepo, appRepo, s) + s = service.NewLoggingService(logger, s) + handler := service.NewHandler(s, config.StaticDirectory) + + log.Println("listening on", config.ListenAddress) + err = http.ListenAndServe(config.ListenAddress, handler) + if err != nil { + log.Fatal(err) + } +} -- cgit v1.2.3