FILE / ScuroNeko/mtg

telegram/direct.go

Исходный файл и его история в репозитории.
FILE 072bce2922f3f1b3c0780ad4db6414f2b1a6c45d
Files
mtg/telegram/direct.go
T
2019-09-09 17:35:53 +03:00

64 lines
1.3 KiB
Go

package telegram
import (
"context"
"net"
"github.com/9seconds/mtg/conntypes"
"github.com/9seconds/mtg/wrappers"
)
var Direct = newDirectTelegram()
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,
},
}
}