Propagate DcUpdateEach setting

This commit is contained in:
9seconds
2026-02-16 15:07:56 +01:00
parent 836a481026
commit 308e372a5d
9 changed files with 22 additions and 12 deletions
+1
View File
@@ -263,6 +263,7 @@ func runProxy(conf *config.Config, version string) error { //nolint: funlen
AllowFallbackOnUnknownDC: conf.AllowFallbackOnUnknownDC.Get(false),
TolerateTimeSkewness: conf.TolerateTimeSkewness.Value,
DCOverrides: dcOverrides,
DCUpdateEach: conf.DCUpdateEach.Get(0),
}
proxy, err := mtglib.NewProxy(opts)
+1
View File
@@ -80,6 +80,7 @@ func (s *SimpleRun) Run(cli *CLI, version string) error { //nolint: cyclop,funle
conf.Debug.Value = s.Debug
conf.AllowFallbackOnUnknownDC.Value = true
conf.Defense.AntiReplay.Enabled.Value = true
conf.DCUpdateEach.Value = 0
if err := conf.Validate(); err != nil {
return fmt.Errorf("invalid result configuration: %w", err)
+3 -2
View File
@@ -65,9 +65,10 @@ type Config struct {
} `json:"prometheus"`
} `json:"stats"`
DCOverrides []struct {
DC TypeDC
DC TypeDC `json:"dc"`
IPs []TypeHostPort `json:"ips"`
} `json:"dc_overrides"`
} `json:"dcOverrides"`
DCUpdateEach TypeDuration `json:"dcUpdateEach"`
}
func (c *Config) Validate() error {
+2 -1
View File
@@ -62,7 +62,8 @@ type tomlConfig struct {
DCOverrides []struct {
DC int `toml:"dc" json:"dc"`
IPs []string `toml:"ips" json:"ips"`
}
} `toml:"dc-overrides" json:"dcOverrides,omitempty"`
DCUpdateEach string `toml:"dc-update-each" json:"dcUpdateEach,omitempty"`
}
func Parse(rawData []byte) (*Config, error) {
+4
View File
@@ -99,6 +99,10 @@ const (
// reads from Telegram after which connection will be terminated. This is
// required to abort stale connections.
TCPRelayReadTimeout = 20 * time.Second
// DefaultDCUpdateEach defines a time period that is used to fetch
// a relevant list of DCs to use from Telegram using its own MTPROTO API.
DefaultDCUpdateEach = time.Hour
)
// Network defines a knowledge how to work with a network. It may sound fun but
-3
View File
@@ -1,7 +1,5 @@
package dc
import "time"
type preferIP uint8
const (
@@ -13,7 +11,6 @@ const (
const (
DefaultDC = 2
DefaultUpdateDCAddressesEach = time.Hour
defaultAppID = 123456
defaultAppHash = ""
-4
View File
@@ -37,10 +37,6 @@ func (t *Telegram) GetAddresses(dc int) []Addr {
}
func (t *Telegram) Run(ctx context.Context, updateEach time.Duration) {
if updateEach == 0 {
updateEach = DefaultUpdateDCAddressesEach
}
t.update(ctx)
ticker := time.NewTicker(updateEach)
+6 -1
View File
@@ -324,7 +324,12 @@ func NewProxy(opts ProxyOpts) (*Proxy, error) {
telegram: tg,
}
go tg.Run(ctx, 0) // TODO: propagate value
dcUpdateEach := opts.DCUpdateEach
if dcUpdateEach == 0 {
dcUpdateEach = DefaultDCUpdateEach
}
go tg.Run(ctx, dcUpdateEach)
pool, err := ants.NewPoolWithFunc(opts.getConcurrency(),
func(arg interface{}) {
+4
View File
@@ -119,6 +119,10 @@ type ProxyOpts struct {
//
// This is an optional setting
DCOverrides map[int][]string
// DCUpdateEach defines a time duration that is used to fetch a list of
// DCs to use from the Telegram.
DCUpdateEach time.Duration
}
func (p ProxyOpts) valid() error {