mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 22:34:02 +03:00
Remove integration with gotd
This commit is contained in:
@@ -11,9 +11,6 @@ const (
|
||||
|
||||
const (
|
||||
DefaultDC = 2
|
||||
|
||||
defaultAppID = 123456
|
||||
defaultAppHash = ""
|
||||
)
|
||||
|
||||
type Logger interface {
|
||||
|
||||
@@ -1,29 +1,17 @@
|
||||
package dc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/gotd/td/telegram"
|
||||
)
|
||||
|
||||
type Telegram struct {
|
||||
logger Logger
|
||||
lock sync.RWMutex
|
||||
view dcView
|
||||
preferIP preferIP
|
||||
client *telegram.Client
|
||||
}
|
||||
|
||||
func (t *Telegram) GetAddresses(dc int) []Addr {
|
||||
t.lock.RLock()
|
||||
defer t.lock.RUnlock()
|
||||
|
||||
switch t.preferIP {
|
||||
case preferIPOnlyIPv4:
|
||||
return t.view.getV4(dc)
|
||||
@@ -36,73 +24,7 @@ func (t *Telegram) GetAddresses(dc int) []Addr {
|
||||
return append(t.view.getV6(dc), t.view.getV4(dc)...)
|
||||
}
|
||||
|
||||
func (t *Telegram) Run(ctx context.Context, updateEach time.Duration) {
|
||||
t.update(ctx)
|
||||
|
||||
ticker := time.NewTicker(updateEach)
|
||||
defer func() {
|
||||
ticker.Stop()
|
||||
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
case <-ticker.C:
|
||||
default:
|
||||
}
|
||||
}()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-ticker.C:
|
||||
t.update(ctx)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Telegram) update(ctx context.Context) {
|
||||
collected := dcAddrSet{
|
||||
v4: map[int][]Addr{},
|
||||
v6: map[int][]Addr{},
|
||||
}
|
||||
|
||||
err := t.client.Run(ctx, func(tgctx context.Context) error {
|
||||
conf, err := t.client.API().HelpGetConfig(tgctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, opt := range conf.DCOptions {
|
||||
addr := net.JoinHostPort(opt.IPAddress, strconv.Itoa(opt.Port))
|
||||
|
||||
if opt.Ipv6 {
|
||||
collected.v6[opt.ID] = append(collected.v6[opt.ID], Addr{
|
||||
Network: "tcp6",
|
||||
Address: addr,
|
||||
})
|
||||
} else {
|
||||
collected.v4[opt.ID] = append(collected.v4[opt.ID], Addr{
|
||||
Network: "tcp4",
|
||||
Address: addr,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
t.logger.WarningError("update has failed", err)
|
||||
return
|
||||
}
|
||||
|
||||
t.lock.Lock()
|
||||
t.view.collected = collected
|
||||
t.lock.Unlock()
|
||||
|
||||
t.logger.Info(fmt.Sprintf("updated DC list: %v", collected))
|
||||
}
|
||||
|
||||
func New(logger Logger, ipPreference string, userOverrides map[int][]string) (*Telegram, error) {
|
||||
func New(ipPreference string, userOverrides map[int][]string) (*Telegram, error) {
|
||||
var pref preferIP
|
||||
|
||||
switch strings.ToLower(ipPreference) {
|
||||
@@ -118,7 +40,10 @@ func New(logger Logger, ipPreference string, userOverrides map[int][]string) (*T
|
||||
return nil, fmt.Errorf("unknown ip preference %s", ipPreference)
|
||||
}
|
||||
|
||||
overrides := dcAddrSet{}
|
||||
overrides := dcAddrSet{
|
||||
v4: map[int][]Addr{},
|
||||
v6: map[int][]Addr{},
|
||||
}
|
||||
for dc, addrs := range userOverrides {
|
||||
for _, addr := range addrs {
|
||||
host, _, err := net.SplitHostPort(addr)
|
||||
@@ -149,8 +74,6 @@ func New(logger Logger, ipPreference string, userOverrides map[int][]string) (*T
|
||||
view: dcView{
|
||||
overrides: overrides,
|
||||
},
|
||||
logger: logger,
|
||||
client: telegram.NewClient(defaultAppID, defaultAppHash, telegram.Options{}),
|
||||
preferIP: pref,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ type dcView struct {
|
||||
func (d dcView) getV4(dc int) []Addr {
|
||||
addrs := d.overrides.getV4(dc)
|
||||
addrs = append(addrs, defaultDCOverridesAddrSet.getV4(dc)...)
|
||||
addrs = append(addrs, d.collected.getV4(dc)...)
|
||||
// addrs = append(addrs, d.collected.getV4(dc)...)
|
||||
addrs = append(addrs, defaultDCAddrSet.getV4(dc)...)
|
||||
|
||||
return addrs
|
||||
@@ -17,7 +17,7 @@ func (d dcView) getV4(dc int) []Addr {
|
||||
func (d dcView) getV6(dc int) []Addr {
|
||||
addrs := d.overrides.getV6(dc)
|
||||
addrs = append(addrs, defaultDCOverridesAddrSet.getV6(dc)...)
|
||||
addrs = append(addrs, d.collected.getV6(dc)...)
|
||||
// addrs = append(addrs, d.collected.getV6(dc)...)
|
||||
addrs = append(addrs, defaultDCAddrSet.getV6(dc)...)
|
||||
|
||||
return addrs
|
||||
|
||||
Reference in New Issue
Block a user