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文字以内のものにしてください。

telegram.go 915B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package dc
  2. import (
  3. "fmt"
  4. "strings"
  5. "sync"
  6. )
  7. type Telegram struct {
  8. lock sync.RWMutex
  9. view dcView
  10. preferIP preferIP
  11. }
  12. func (t *Telegram) GetAddresses(dc int) []Addr {
  13. t.lock.RLock()
  14. defer t.lock.RUnlock()
  15. switch t.preferIP {
  16. case preferIPOnlyIPv4:
  17. return t.view.getV4(dc)
  18. case preferIPOnlyIPv6:
  19. return t.view.getV6(dc)
  20. case preferIPPreferIPv4:
  21. return append(t.view.getV4(dc), t.view.getV6(dc)...)
  22. }
  23. return append(t.view.getV6(dc), t.view.getV4(dc)...)
  24. }
  25. func New(ipPreference string) (*Telegram, error) {
  26. var pref preferIP
  27. switch strings.ToLower(ipPreference) {
  28. case "prefer-ipv4":
  29. pref = preferIPPreferIPv4
  30. case "prefer-ipv6":
  31. pref = preferIPPreferIPv6
  32. case "only-ipv4":
  33. pref = preferIPOnlyIPv4
  34. case "only-ipv6":
  35. pref = preferIPOnlyIPv6
  36. default:
  37. return nil, fmt.Errorf("unknown ip preference %s", ipPreference)
  38. }
  39. return &Telegram{
  40. preferIP: pref,
  41. }, nil
  42. }