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
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

init.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package telegram
  2. import (
  3. "context"
  4. "errors"
  5. "github.com/9seconds/mtg/v2/essentials"
  6. )
  7. var errNoAddresses = errors.New("no addresses")
  8. type preferIP uint8
  9. const (
  10. preferIPOnlyIPv4 preferIP = iota
  11. preferIPOnlyIPv6
  12. preferIPPreferIPv4
  13. preferIPPreferIPv6
  14. )
  15. type tgAddr struct {
  16. network string
  17. address string
  18. }
  19. // https://github.com/telegramdesktop/tdesktop/blob/master/Telegram/SourceFiles/mtproto/mtproto_dc_options.cpp#L30
  20. var (
  21. productionV4Addresses = [][]tgAddr{
  22. { // dc1
  23. {network: "tcp4", address: "149.154.175.50:443"},
  24. },
  25. { // dc2
  26. {network: "tcp4", address: "149.154.167.51:443"},
  27. {network: "tcp4", address: "95.161.76.100:443"},
  28. },
  29. { // dc3
  30. {network: "tcp4", address: "149.154.175.100:443"},
  31. },
  32. { // dc4
  33. {network: "tcp4", address: "149.154.167.91:443"},
  34. },
  35. { // dc5
  36. {network: "tcp4", address: "149.154.171.5:443"},
  37. },
  38. }
  39. productionV6Addresses = [][]tgAddr{
  40. { // dc1
  41. {network: "tcp6", address: "[2001:b28:f23d:f001::a]:443"},
  42. },
  43. { // dc2
  44. {network: "tcp6", address: "[2001:67c:04e8:f002::a]:443"},
  45. },
  46. { // dc3
  47. {network: "tcp6", address: "[2001:b28:f23d:f003::a]:443"},
  48. },
  49. { // dc4
  50. {network: "tcp6", address: "[2001:67c:04e8:f004::a]:443"},
  51. },
  52. { // dc5
  53. {network: "tcp6", address: "[2001:b28:f23f:f005::a]:443"},
  54. },
  55. }
  56. testV4Addresses = [][]tgAddr{
  57. { // dc1
  58. {network: "tcp4", address: "149.154.175.10:443"},
  59. },
  60. { // dc2
  61. {network: "tcp4", address: "149.154.167.40:443"},
  62. },
  63. { // dc3
  64. {network: "tcp4", address: "149.154.175.117:443"},
  65. },
  66. }
  67. testV6Addresses = [][]tgAddr{
  68. { // dc1
  69. {network: "tcp6", address: "[2001:b28:f23d:f001::e]:443"},
  70. },
  71. { // dc2
  72. {network: "tcp6", address: "[2001:67c:04e8:f002::e]:443"},
  73. },
  74. { // dc3
  75. {network: "tcp6", address: "[2001:b28:f23d:f003::e]:443"},
  76. },
  77. }
  78. )
  79. type Dialer interface {
  80. DialContext(ctx context.Context, network, address string) (essentials.Conn, error)
  81. }