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.

init.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package mtglib
  2. import (
  3. "context"
  4. "errors"
  5. "net"
  6. "net/http"
  7. "time"
  8. )
  9. var (
  10. ErrSecretEmpty = errors.New("secret is empty")
  11. ErrSecretInvalid = errors.New("secret is invalid")
  12. ErrNetworkIsNotDefined = errors.New("network is not defined")
  13. ErrAntiReplayCacheIsNotDefined = errors.New("anti-replay cache is not defined")
  14. ErrTimeAttackDetectorIsNotDefined = errors.New("time attack detector is not defined")
  15. ErrIPBlocklistIsNotDefined = errors.New("ip blocklist is not defined")
  16. ErrEventStreamIsNotDefined = errors.New("event stream is not defined")
  17. ErrLoggerIsNotDefined = errors.New("logger is not defined")
  18. errCannotSendWelcomePacket = errors.New("cannot send welcome packet")
  19. errReplayAttackDetected = errors.New("replay attack detected")
  20. )
  21. const (
  22. DefaultConcurrency = 4096
  23. DefaultBufferSize = 16 * 1024 // 16 kib
  24. DefaultCloakPort = 443
  25. DefaultIdleTimeout = time.Minute
  26. DefaultPreferIP = "prefer-ipv6"
  27. )
  28. type Network interface {
  29. Dial(network, address string) (net.Conn, error)
  30. DialContext(ctx context.Context, network, address string) (net.Conn, error)
  31. MakeHTTPClient(func(ctx context.Context, network, address string) (net.Conn, error)) *http.Client
  32. }
  33. type AntiReplayCache interface {
  34. SeenBefore(data []byte) bool
  35. Shutdown()
  36. }
  37. type IPBlocklist interface {
  38. Contains(net.IP) bool
  39. Shutdown()
  40. }
  41. type Event interface {
  42. StreamID() string
  43. }
  44. type EventStream interface {
  45. Send(context.Context, Event)
  46. Shutdown()
  47. }
  48. type TimeAttackDetector interface {
  49. Valid(time.Time) error
  50. }
  51. type Logger interface {
  52. Named(name string) Logger
  53. BindInt(name string, value int) Logger
  54. BindStr(name, value string) Logger
  55. Printf(format string, args ...interface{})
  56. Info(msg string)
  57. InfoError(msg string, err error)
  58. Warning(msg string)
  59. WarningError(msg string, err error)
  60. Debug(msg string)
  61. DebugError(msg string, err error)
  62. }