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
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

proxy_opts.go 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package mtglib
  2. import "time"
  3. type ProxyOpts struct {
  4. Secret Secret
  5. Network Network
  6. AntiReplayCache AntiReplayCache
  7. TimeAttackDetector TimeAttackDetector
  8. IPBlocklist IPBlocklist
  9. EventStream EventStream
  10. Logger Logger
  11. BufferSize uint
  12. Concurrency uint
  13. DomainFrontingPort uint
  14. IdleTimeout time.Duration
  15. PreferIP string
  16. }
  17. func (p ProxyOpts) valid() error {
  18. switch {
  19. case p.Network == nil:
  20. return ErrNetworkIsNotDefined
  21. case p.AntiReplayCache == nil:
  22. return ErrAntiReplayCacheIsNotDefined
  23. case p.IPBlocklist == nil:
  24. return ErrIPBlocklistIsNotDefined
  25. case p.EventStream == nil:
  26. return ErrEventStreamIsNotDefined
  27. case p.TimeAttackDetector == nil:
  28. return ErrTimeAttackDetectorIsNotDefined
  29. case p.Logger == nil:
  30. return ErrLoggerIsNotDefined
  31. case !p.Secret.Valid():
  32. return ErrSecretInvalid
  33. }
  34. return nil
  35. }
  36. func (p ProxyOpts) getBufferSize() int {
  37. if p.BufferSize < 1 {
  38. return DefaultBufferSize
  39. }
  40. return int(p.BufferSize)
  41. }
  42. func (p ProxyOpts) getConcurrency() int {
  43. if p.Concurrency == 0 {
  44. return DefaultConcurrency
  45. }
  46. return int(p.Concurrency)
  47. }
  48. func (p ProxyOpts) getDomainFrontingPort() int {
  49. if p.DomainFrontingPort == 0 {
  50. return DefaultDomainFrontingPort
  51. }
  52. return int(p.DomainFrontingPort)
  53. }
  54. func (p ProxyOpts) getIdleTimeout() time.Duration {
  55. if p.IdleTimeout == 0 {
  56. return DefaultIdleTimeout
  57. }
  58. return p.IdleTimeout
  59. }
  60. func (p ProxyOpts) getPreferIP() string {
  61. if p.PreferIP == "" {
  62. return DefaultPreferIP
  63. }
  64. return p.PreferIP
  65. }
  66. func (p ProxyOpts) getLogger(name string) Logger {
  67. return p.Logger.Named(name)
  68. }