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个字符

address_pool.go 726B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package telegram
  2. import "math/rand"
  3. type addressPool struct {
  4. v4 [][]tgAddr
  5. v6 [][]tgAddr
  6. }
  7. func (a addressPool) isValidDC(dc int) bool {
  8. return dc > 0 && dc <= len(a.v4) && dc <= len(a.v6)
  9. }
  10. func (a addressPool) getRandomDC() int {
  11. return 1 + rand.Intn(len(a.v4))
  12. }
  13. func (a addressPool) getV4(dc int) []tgAddr {
  14. return a.get(a.v4, dc-1)
  15. }
  16. func (a addressPool) getV6(dc int) []tgAddr {
  17. return a.get(a.v6, dc-1)
  18. }
  19. func (a addressPool) get(addresses [][]tgAddr, dc int) []tgAddr {
  20. if dc < 0 || dc >= len(addresses) {
  21. return nil
  22. }
  23. rv := make([]tgAddr, len(addresses[dc]))
  24. copy(rv, addresses[dc])
  25. if len(rv) > 1 {
  26. rand.Shuffle(len(rv), func(i, j int) {
  27. rv[i], rv[j] = rv[j], rv[i]
  28. })
  29. }
  30. return rv
  31. }