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
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package mtglib
  2. import (
  3. "context"
  4. "errors"
  5. "net"
  6. "net/http"
  7. )
  8. var (
  9. ErrSecretEmpty = errors.New("secret is empty")
  10. ErrSecretInvalid = errors.New("secret is invalid")
  11. ErrNetworkIsNotDefined = errors.New("network is not defined")
  12. ErrAntiReplayCacheIsNotDefined = errors.New("anti-replay cache is not defined")
  13. ErrIPBlocklistIsNotDefined = errors.New("ip blocklist is not defined")
  14. ErrEventStreamIsNotDefined = errors.New("event stream is not defined")
  15. ErrLoggerIsNotDefined = errors.New("logger is not defined")
  16. )
  17. const (
  18. DefaultConcurrency = 4096
  19. )
  20. type Network interface {
  21. Dial(network, address string) (net.Conn, error)
  22. DialContext(ctx context.Context, network, address string) (net.Conn, error)
  23. MakeHTTPClient(func(ctx context.Context, network, address string) (net.Conn, error)) *http.Client
  24. }
  25. type AntiReplayCache interface {
  26. SeenBefore(data []byte) bool
  27. Shutdown()
  28. }
  29. type IPBlocklist interface {
  30. Contains(net.IP) bool
  31. Shutdown()
  32. }
  33. type Event interface {
  34. StreamID() string
  35. }
  36. type EventStream interface {
  37. Send(context.Context, Event)
  38. Shutdown()
  39. }
  40. type Logger interface {
  41. Named(name string) Logger
  42. BindInt(name string, value int) Logger
  43. BindStr(name, value string) Logger
  44. Info(msg string)
  45. InfoError(msg string, err error)
  46. Warning(msg string)
  47. WarningError(msg string, err error)
  48. Debug(msg string)
  49. DebugError(msg string, err error)
  50. }