| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package dc
-
- import (
- "context"
- "net"
- "time"
-
- "github.com/9seconds/mtg/v2/essentials"
- )
-
- type preferIP uint8
-
- const (
- preferIPOnlyIPv4 preferIP = iota
- preferIPOnlyIPv6
- preferIPPreferIPv4
- preferIPPreferIPv6
- )
-
- const (
- // Default DC to connect to if not sure.
- DefaultDC = 2
-
- // How often should we request updates from
- // https://core.telegram.org/getProxyConfig
- PublicConfigUpdateEach = time.Hour
- PublicConfigUpdateURLv4 = "https://core.telegram.org/getProxyConfig"
- PublicConfigUpdateURLv6 = "https://core.telegram.org/getProxyConfigV6"
-
- // How often should we extract hosts from Telegram using help.getConfig
- // method.
- OwnConfigUpdateEach = time.Hour
- )
-
- type Logger interface {
- Info(msg string)
- WarningError(msg string, err error)
- }
-
- type Updater interface {
- Run(ctx context.Context)
- }
-
- // https://github.com/telegramdesktop/tdesktop/blob/master/Telegram/SourceFiles/mtproto/mtproto_dc_options.cpp#L30
- var defaultDCAddrSet = (func() dcAddrSet {
- addrSet := dcAddrSet{
- v4: make(map[int][]Addr),
- v6: make(map[int][]Addr),
- }
-
- for dcid, ips := range essentials.TelegramCoreAddresses {
- for _, addr := range ips {
- host, _, err := net.SplitHostPort(addr)
- if err != nil {
- panic(err)
- }
-
- ip := net.ParseIP(host)
- if ip == nil {
- panic(addr)
- }
- if ip.To4() == nil {
- addrSet.v6[dcid] = append(addrSet.v6[dcid], Addr{
- Network: "tcp6",
- Address: addr,
- })
- } else {
- addrSet.v4[dcid] = append(addrSet.v4[dcid], Addr{
- Network: "tcp4",
- Address: addr,
- })
- }
- }
- }
-
- return addrSet
- })()
|