Fetch DC ips from Telegram

This commit is contained in:
9seconds
2026-02-15 23:56:53 +01:00
parent 301bde88ac
commit 852ca713c8
9 changed files with 262 additions and 101 deletions
+25 -35
View File
@@ -3,6 +3,7 @@ package telegram
import (
"context"
"errors"
"time"
"github.com/9seconds/mtg/v2/essentials"
)
@@ -18,6 +19,18 @@ const (
preferIPPreferIPv6
)
const (
defaultDC = 2
defaultUpdateDCAddressesEach = time.Hour
defaultAppID = 123456
defaultAppHash = ""
)
type loggerInterface interface {
Info(msg string)
WarningError(msg string, err error)
}
type tgAddr struct {
network string
address string
@@ -25,64 +38,41 @@ type tgAddr struct {
// https://github.com/telegramdesktop/tdesktop/blob/master/Telegram/SourceFiles/mtproto/mtproto_dc_options.cpp#L30
var (
productionV4Addresses = [][]tgAddr{
{ // dc1
defaultV4Addresses = map[int][]tgAddr{
1: {
{network: "tcp4", address: "149.154.175.50:443"},
},
{ // dc2
2: {
{network: "tcp4", address: "149.154.167.51:443"},
{network: "tcp4", address: "95.161.76.100:443"},
},
{ // dc3
3: {
{network: "tcp4", address: "149.154.175.100:443"},
},
{ // dc4
4: {
{network: "tcp4", address: "149.154.167.91:443"},
},
{ // dc5
5: {
{network: "tcp4", address: "149.154.171.5:443"},
},
}
productionV6Addresses = [][]tgAddr{
{ // dc1
defaultV6Addresses = map[int][]tgAddr{
1: {
{network: "tcp6", address: "[2001:b28:f23d:f001::a]:443"},
},
{ // dc2
2: {
{network: "tcp6", address: "[2001:67c:04e8:f002::a]:443"},
},
{ // dc3
3: {
{network: "tcp6", address: "[2001:b28:f23d:f003::a]:443"},
},
{ // dc4
4: {
{network: "tcp6", address: "[2001:67c:04e8:f004::a]:443"},
},
{ // dc5
5: {
{network: "tcp6", address: "[2001:b28:f23f:f005::a]:443"},
},
}
testV4Addresses = [][]tgAddr{
{ // dc1
{network: "tcp4", address: "149.154.175.10:443"},
},
{ // dc2
{network: "tcp4", address: "149.154.167.40:443"},
},
{ // dc3
{network: "tcp4", address: "149.154.175.117:443"},
},
}
testV6Addresses = [][]tgAddr{
{ // dc1
{network: "tcp6", address: "[2001:b28:f23d:f001::e]:443"},
},
{ // dc2
{network: "tcp6", address: "[2001:67c:04e8:f002::e]:443"},
},
{ // dc3
{network: "tcp6", address: "[2001:b28:f23d:f003::e]:443"},
},
}
)
type Dialer interface {