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
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

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. }