mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 16:01:55 +03:00
Some refactorings for telegram package
This commit is contained in:
+1
-1
@@ -65,7 +65,7 @@ func Proxy() error {
|
|||||||
if err := stats.Init(ctx); err != nil {
|
if err := stats.Init(ctx); err != nil {
|
||||||
Fatal(err)
|
Fatal(err)
|
||||||
}
|
}
|
||||||
telegram.MiddleInit()
|
telegram.Init()
|
||||||
|
|
||||||
proxyListener, err := net.Listen("tcp", config.C.Bind.String())
|
proxyListener, err := net.Listen("tcp", config.C.Bind.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -4,15 +4,12 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/9seconds/mtg/conntypes"
|
"github.com/9seconds/mtg/conntypes"
|
||||||
"github.com/9seconds/mtg/utils"
|
"github.com/9seconds/mtg/utils"
|
||||||
"github.com/9seconds/mtg/wrappers"
|
"github.com/9seconds/mtg/wrappers"
|
||||||
)
|
)
|
||||||
|
|
||||||
const telegramDialTimeout = 10 * time.Second
|
|
||||||
|
|
||||||
type baseTelegram struct {
|
type baseTelegram struct {
|
||||||
dialer net.Dialer
|
dialer net.Dialer
|
||||||
|
|
||||||
|
|||||||
+1
-15
@@ -1,10 +1,6 @@
|
|||||||
package telegram
|
package telegram
|
||||||
|
|
||||||
import (
|
import "github.com/9seconds/mtg/conntypes"
|
||||||
"net"
|
|
||||||
|
|
||||||
"github.com/9seconds/mtg/conntypes"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
directV4DefaultIdx conntypes.DC = 1
|
directV4DefaultIdx conntypes.DC = 1
|
||||||
@@ -43,13 +39,3 @@ func (d *directTelegram) Dial(dc conntypes.DC,
|
|||||||
|
|
||||||
return d.baseTelegram.dial(dc-1, protocol)
|
return d.baseTelegram.dial(dc-1, protocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
var Direct = &directTelegram{
|
|
||||||
baseTelegram: baseTelegram{
|
|
||||||
dialer: net.Dialer{Timeout: telegramDialTimeout},
|
|
||||||
v4DefaultDC: directV4DefaultIdx,
|
|
||||||
V6DefaultDC: directV6DefaultIdx,
|
|
||||||
v4Addresses: directV4Addresses,
|
|
||||||
v6Addresses: directV6Addresses,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package telegram
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const telegramDialTimeout = 10 * time.Second
|
||||||
|
|
||||||
|
var (
|
||||||
|
Direct Telegram
|
||||||
|
Middle Telegram
|
||||||
|
|
||||||
|
initOnce sync.Once
|
||||||
|
)
|
||||||
|
|
||||||
|
func Init() {
|
||||||
|
initOnce.Do(func() {
|
||||||
|
Direct = &directTelegram{
|
||||||
|
baseTelegram: baseTelegram{
|
||||||
|
dialer: net.Dialer{Timeout: telegramDialTimeout},
|
||||||
|
v4DefaultDC: directV4DefaultIdx,
|
||||||
|
V6DefaultDC: directV6DefaultIdx,
|
||||||
|
v4Addresses: directV4Addresses,
|
||||||
|
v6Addresses: directV6Addresses,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
tg := &middleTelegram{
|
||||||
|
baseTelegram: baseTelegram{
|
||||||
|
dialer: net.Dialer{Timeout: telegramDialTimeout},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if err := tg.update(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
go tg.backgroundUpdate()
|
||||||
|
|
||||||
|
Middle = tg
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package telegram
|
package telegram
|
||||||
|
|
||||||
import "github.com/9seconds/mtg/conntypes"
|
import "github.com/9seconds/mtg/conntypes"
|
||||||
|
|
||||||
type Telegram interface {
|
type Telegram interface {
|
||||||
Dial(conntypes.DC, conntypes.ConnectionProtocol) (conntypes.StreamReadWriteCloser, error)
|
Dial(conntypes.DC, conntypes.ConnectionProtocol) (conntypes.StreamReadWriteCloser, error)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package telegram
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -14,8 +13,6 @@ import (
|
|||||||
|
|
||||||
const middleTelegramBackgroundUpdateEvery = time.Hour
|
const middleTelegramBackgroundUpdateEvery = time.Hour
|
||||||
|
|
||||||
var Middle Telegram
|
|
||||||
|
|
||||||
type middleTelegram struct {
|
type middleTelegram struct {
|
||||||
baseTelegram
|
baseTelegram
|
||||||
|
|
||||||
@@ -76,17 +73,3 @@ func (m *middleTelegram) Dial(dc conntypes.DC,
|
|||||||
|
|
||||||
return m.baseTelegram.dial(dc, protocol)
|
return m.baseTelegram.dial(dc, protocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
func MiddleInit() {
|
|
||||||
tg := &middleTelegram{
|
|
||||||
baseTelegram: baseTelegram{
|
|
||||||
dialer: net.Dialer{Timeout: telegramDialTimeout},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if err := tg.update(); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
go tg.backgroundUpdate()
|
|
||||||
|
|
||||||
Middle = tg
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user