package telegram import ( "context" "net" "github.com/9seconds/mtg/conntypes" "github.com/9seconds/mtg/wrappers" ) const ( directV4DefaultIdx conntypes.DC = 1 directV6DefaultIdx conntypes.DC = 1 ) var ( directV4Addresses = map[conntypes.DC][]string{ 0: {"149.154.175.50:443"}, 1: {"149.154.167.51:443"}, 2: {"149.154.175.100:443"}, 3: {"149.154.167.91:443"}, 4: {"149.154.171.5:443"}, } directV6Addresses = map[conntypes.DC][]string{ 0: {"[2001:b28:f23d:f001::a]:443"}, 1: {"[2001:67c:04e8:f002::a]:443"}, 2: {"[2001:b28:f23d:f003::a]:443"}, 3: {"[2001:67c:04e8:f004::a]:443"}, 4: {"[2001:b28:f23f:f005::a]:443"}, } ) type directTelegram struct { baseTelegram } func (d *directTelegram) Dial(ctx context.Context, cancel context.CancelFunc, dc conntypes.DC, protocol conntypes.ConnectionProtocol) (wrappers.StreamReadWriteCloser, error) { switch { case dc < 0: dc = -dc case dc == 0: dc = conntypes.DCDefaultIdx } return d.baseTelegram.dial(ctx, cancel, dc-1, protocol) } func NewDirectTelegram() Telegram { return &directTelegram{ baseTelegram: baseTelegram{ dialer: net.Dialer{Timeout: telegramDialTimeout}, v4DefaultDC: directV4DefaultIdx, V6DefaultDC: directV6DefaultIdx, v4Addresses: directV4Addresses, v6Addresses: directV6Addresses, }, } }