Monorepo for Tangled tangled.org
5

Configure Feed

Select the types of activity you want to include in your feed.

1package main 2 3import ( 4 "context" 5 "net/http" 6 "os" 7 8 "github.com/prometheus/client_golang/prometheus/promhttp" 9 "tangled.org/core/appview/config" 10 "tangled.org/core/appview/state" 11 tlog "tangled.org/core/log" 12) 13 14func main() { 15 ctx := context.Background() 16 logger := tlog.New("appview") 17 ctx = tlog.IntoContext(ctx, logger) 18 19 c, err := config.LoadConfig(ctx) 20 if err != nil { 21 logger.Error("failed to load config", "error", err) 22 return 23 } 24 25 state, err := state.Make(ctx, c) 26 defer func() { 27 if err := state.Close(); err != nil { 28 logger.Error("failed to close state", "err", err) 29 } 30 }() 31 32 if err != nil { 33 logger.Error("failed to start appview", "err", err) 34 os.Exit(-1) 35 } 36 37 logger.Info("starting server", "address", c.Core.ListenAddr) 38 39 go func() { 40 logger.Info("starting metrics server", "address", c.Core.MetricsListenAddr) 41 http.Handle("/metrics", promhttp.Handler()) 42 if err := http.ListenAndServe(c.Core.MetricsListenAddr, nil); err != nil { 43 logger.Error("failed to start metrics server", "err", err) 44 } 45 }() 46 47 if c.SSH.Enabled { 48 sshServer := state.NewSSHServer() 49 go func() { 50 if err := sshServer.ListenAndServe(ctx); err != nil { 51 logger.Error("SSH server stopped", "err", err) 52 } 53 }() 54 } 55 56 if err := http.ListenAndServe(c.Core.ListenAddr, state.Router()); err != nil { 57 logger.Error("failed to start appview", "err", err) 58 } 59}