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