Documentation
¶
Overview ¶
Package dc manages Telegram datacenter connections.
Index ¶
Constants ¶
const DefaultDC = 2
DefaultDC is the fallback DC when unknown.
const ProbeTimeout = 5 * time.Second
ProbeTimeout is the timeout for each probe attempt.
Variables ¶
var CDNDCs = map[int][]Addr{
203: {
{Network: "tcp4", Address: "91.105.192.100:443"},
},
}
CDN/regional DC overrides for special DCs (200+).
var DefaultDCs = map[int][]Addr{
1: {
{Network: "tcp4", Address: "149.154.175.50:443"},
{Network: "tcp4", Address: "149.154.175.58:443"},
{Network: "tcp6", Address: "[2001:b28:f23d:f001::a]:443"},
},
2: {
{Network: "tcp4", Address: "149.154.167.51:443"},
{Network: "tcp4", Address: "95.161.76.100:443"},
{Network: "tcp4", Address: "149.154.167.41:443"},
{Network: "tcp6", Address: "[2001:67c:4e8:f002::a]:443"},
},
3: {
{Network: "tcp4", Address: "149.154.175.100:443"},
{Network: "tcp6", Address: "[2001:b28:f23d:f003::a]:443"},
},
4: {
{Network: "tcp4", Address: "149.154.167.91:443"},
{Network: "tcp4", Address: "149.154.167.92:443"},
{Network: "tcp6", Address: "[2001:67c:4e8:f004::a]:443"},
},
5: {
{Network: "tcp4", Address: "149.154.171.5:443"},
{Network: "tcp4", Address: "91.108.56.156:443"},
{Network: "tcp6", Address: "[2001:b28:f23f:f005::a]:443"},
},
}
Default Telegram DC addresses. Merged from tdesktop source + live API for redundancy. tdesktop: https://github.com/telegramdesktop/tdesktop/blob/master/Telegram/SourceFiles/mtproto/mtproto_dc_options.cpp
Functions ¶
func Init ¶
func Init()
Init probes all DC addresses and sorts them by RTT. Should be called once at startup. Blocks until complete.
func SetProbeLogger ¶
SetProbeLogger sets the logger for probe output.
func SetProbeSocks5 ¶ added in v0.1.3
SetProbeSocks5 sets the SOCKS5 proxy for DC probing.
Types ¶
type Addr ¶
Addr represents a datacenter address.
func DCAddresses ¶
DCAddresses returns addresses for a given DC. Negative DC IDs are media-only variants; we use the absolute value for lookup. Returns (addresses, true) if DC is known, (fallback addresses, false) if unknown.
func DCAddressesIPv4 ¶
DCAddressesIPv4 returns only IPv4 addresses for a DC.
func DCAddressesIPv6 ¶
DCAddressesIPv6 returns only IPv6 addresses for a DC.
func GetProbedAddresses ¶
GetProbedAddresses returns addresses sorted by RTT for a DC. Falls back to default addresses if probing hasn't been done.
type DCProbeResult ¶
type DCProbeResult struct {
DCID int
Results []ProbeResult
}
DCProbeResult holds all probe results for a single DC.
type IPPreference ¶
type IPPreference int
IPPreference controls which IP version to prefer.
const ( PreferIPv4 IPPreference = iota PreferIPv6 OnlyIPv4 OnlyIPv6 )