Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

server.go 1018B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package stats
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/prometheus/client_golang/prometheus/promhttp"
  6. "go.uber.org/zap"
  7. "github.com/9seconds/mtg/config"
  8. )
  9. func startServer(conf *config.Config) {
  10. log := zap.S().Named("stats")
  11. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  12. w.Header().Set("Content-Type", "application/json")
  13. first, err := json.Marshal(GetStats())
  14. if err != nil {
  15. log.Errorw("Cannot encode json", "error", err)
  16. http.Error(w, "Internal server error", 500)
  17. return
  18. }
  19. interim := map[string]interface{}{}
  20. json.Unmarshal(first, &interim) // nolint: errcheck, gosec
  21. encoder := json.NewEncoder(w)
  22. encoder.SetEscapeHTML(false)
  23. encoder.SetIndent("", " ")
  24. if err = encoder.Encode(interim); err != nil {
  25. log.Errorw("Cannot encode json", "error", err)
  26. }
  27. })
  28. http.Handle("/prometheus/", promhttp.Handler())
  29. if err := http.ListenAndServe(conf.StatAddr(), nil); err != nil {
  30. log.Fatalw("Stats server has been stopped", "error", err)
  31. }
  32. }