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}