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
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

direct.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package telegram
  2. import (
  3. "context"
  4. "net"
  5. "github.com/9seconds/mtg/conntypes"
  6. "github.com/9seconds/mtg/wrappers"
  7. )
  8. const (
  9. directV4DefaultIdx conntypes.DC = 1
  10. directV6DefaultIdx conntypes.DC = 1
  11. )
  12. var (
  13. directV4Addresses = map[conntypes.DC][]string{
  14. 0: {"149.154.175.50:443"},
  15. 1: {"149.154.167.51:443"},
  16. 2: {"149.154.175.100:443"},
  17. 3: {"149.154.167.91:443"},
  18. 4: {"149.154.171.5:443"},
  19. }
  20. directV6Addresses = map[conntypes.DC][]string{
  21. 0: {"[2001:b28:f23d:f001::a]:443"},
  22. 1: {"[2001:67c:04e8:f002::a]:443"},
  23. 2: {"[2001:b28:f23d:f003::a]:443"},
  24. 3: {"[2001:67c:04e8:f004::a]:443"},
  25. 4: {"[2001:b28:f23f:f005::a]:443"},
  26. }
  27. )
  28. type directTelegram struct {
  29. baseTelegram
  30. }
  31. func (d *directTelegram) Dial(ctx context.Context,
  32. cancel context.CancelFunc,
  33. dc conntypes.DC,
  34. protocol conntypes.ConnectionProtocol) (wrappers.StreamReadWriteCloser, error) {
  35. switch {
  36. case dc < 0:
  37. dc = -dc
  38. case dc == 0:
  39. dc = conntypes.DCDefaultIdx
  40. }
  41. return d.baseTelegram.dial(ctx, cancel, dc-1, protocol)
  42. }
  43. func NewDirectTelegram() Telegram {
  44. return &directTelegram{
  45. baseTelegram: baseTelegram{
  46. dialer: net.Dialer{Timeout: telegramDialTimeout},
  47. v4DefaultDC: directV4DefaultIdx,
  48. V6DefaultDC: directV6DefaultIdx,
  49. v4Addresses: directV4Addresses,
  50. v6Addresses: directV6Addresses,
  51. },
  52. }
  53. }