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