aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2019-12-13 18:08:26 +0000
committerr <r@freesoftwareextremist.com>2019-12-13 18:26:24 +0000
commit5e4da01c3ae3ae2e870faba9085d9d9213c01c29 (patch)
tree39d6f1e76b901549f194ddbac3c6cb82e0abd019 /main.go
downloadbloat-5e4da01c3ae3ae2e870faba9085d9d9213c01c29.tar.gz
bloat-5e4da01c3ae3ae2e870faba9085d9d9213c01c29.zip
Initial commit
Diffstat (limited to 'main.go')
-rw-r--r--main.go76
1 files changed, 76 insertions, 0 deletions
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)
+ }
+}