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
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

proxy.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package newcli
  2. import (
  3. "os"
  4. "time"
  5. "go.uber.org/zap"
  6. "go.uber.org/zap/zapcore"
  7. "github.com/9seconds/mtg/newconfig"
  8. "github.com/9seconds/mtg/newstats"
  9. "github.com/9seconds/mtg/ntp"
  10. )
  11. func Proxy() error {
  12. atom := zap.NewAtomicLevel()
  13. switch {
  14. case newconfig.C.Debug:
  15. atom.SetLevel(zapcore.DebugLevel)
  16. case newconfig.C.Verbose:
  17. atom.SetLevel(zapcore.InfoLevel)
  18. default:
  19. atom.SetLevel(zapcore.ErrorLevel)
  20. }
  21. encoderCfg := zap.NewProductionEncoderConfig()
  22. logger := zap.New(zapcore.NewCore(
  23. zapcore.NewJSONEncoder(encoderCfg),
  24. zapcore.Lock(os.Stderr),
  25. atom,
  26. ))
  27. zap.ReplaceGlobals(logger)
  28. defer logger.Sync() // nolint: errcheck
  29. if err := newconfig.InitPublicAddress(); err != nil {
  30. Fatal(err.Error())
  31. }
  32. zap.S().Debugw("Configuration", "config", newconfig.C)
  33. if len(newconfig.C.AdTag) > 0 {
  34. zap.S().Infow("Use middle proxy connection to Telegram")
  35. diff, err := ntp.Fetch()
  36. if err != nil {
  37. Fatal("Cannot fetch time data from NTP")
  38. }
  39. if diff > time.Second {
  40. Fatal("Your local time is skewed and drift is bigger than a second. Please sync your time.")
  41. }
  42. go ntp.AutoUpdate()
  43. } else {
  44. zap.S().Infow("Use direct connection to Telegram")
  45. }
  46. PrintJSONStdout(newconfig.GetURLs())
  47. if err := newstats.Init(); err != nil {
  48. Fatal(err.Error())
  49. }
  50. return nil
  51. }