this repo has no description
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7 "log/slog"
8 "net/http"
9 "os"
10
11 "github.com/sotangled/tangled/knotserver"
12 "github.com/sotangled/tangled/knotserver/config"
13 "github.com/sotangled/tangled/knotserver/db"
14 "github.com/sotangled/tangled/rbac"
15)
16
17func main() {
18 ctx := context.Background()
19 // ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
20 // defer stop()
21
22 slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, nil)))
23
24 c, err := config.Load(ctx)
25 if err != nil {
26 log.Fatal(err)
27 }
28
29 if c.Server.Dev {
30 log.Println("running in dev mode, signature verification is disabled")
31 }
32
33 db, err := db.Setup(c.Server.DBPath)
34 if err != nil {
35 log.Fatalf("failed to setup db: %s", err)
36 }
37
38 e, err := rbac.NewEnforcer(c.Server.DBPath)
39 if err != nil {
40 log.Fatalf("failed to setup rbac enforcer: %s", err)
41 }
42
43 mux, err := knotserver.Setup(ctx, c, db, e)
44 if err != nil {
45 log.Fatal(err)
46 }
47
48 addr := fmt.Sprintf("%s:%d", c.Server.Host, c.Server.Port)
49
50 log.Println("starting main server on", addr)
51 log.Fatal(http.ListenAndServe(addr, mux))
52}