forked from tangled.org/core
this repo has no description
at file-tree 1.7 kB view raw
1package main 2 3import ( 4 "context" 5 "net/http" 6 7 "tangled.sh/tangled.sh/core/api/tangled" 8 "tangled.sh/tangled.sh/core/jetstream" 9 "tangled.sh/tangled.sh/core/knotserver" 10 "tangled.sh/tangled.sh/core/knotserver/config" 11 "tangled.sh/tangled.sh/core/knotserver/db" 12 "tangled.sh/tangled.sh/core/log" 13 "tangled.sh/tangled.sh/core/rbac" 14 15 _ "net/http/pprof" 16) 17 18func main() { 19 ctx := context.Background() 20 // ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) 21 // defer stop() 22 23 l := log.New("knotserver") 24 25 c, err := config.Load(ctx) 26 if err != nil { 27 l.Error("failed to load config", "error", err) 28 return 29 } 30 31 if c.Server.Dev { 32 l.Info("running in dev mode, signature verification is disabled") 33 } 34 35 db, err := db.Setup(c.Server.DBPath) 36 if err != nil { 37 l.Error("failed to setup db", "error", err) 38 return 39 } 40 41 e, err := rbac.NewEnforcer(c.Server.DBPath) 42 if err != nil { 43 l.Error("failed to setup rbac enforcer", "error", err) 44 return 45 } 46 47 e.E.EnableAutoSave(true) 48 49 jc, err := jetstream.NewJetstreamClient(c.Server.JetstreamEndpoint, "knotserver", []string{ 50 tangled.PublicKeyNSID, 51 tangled.KnotMemberNSID, 52 }, nil, l, db, true) 53 if err != nil { 54 l.Error("failed to setup jetstream", "error", err) 55 } 56 57 mux, err := knotserver.Setup(ctx, c, db, e, jc, l) 58 if err != nil { 59 l.Error("failed to setup server", "error", err) 60 return 61 } 62 imux := knotserver.Internal(ctx, db, e) 63 64 l.Info("starting internal server", "address", c.Server.InternalListenAddr) 65 go http.ListenAndServe(c.Server.InternalListenAddr, imux) 66 67 l.Info("starting main server", "address", c.Server.ListenAddr) 68 l.Error("server error", "error", http.ListenAndServe(c.Server.ListenAddr, mux)) 69 70 return 71}