mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 13:44:03 +03:00
FILE / ScuroNeko/mtg
mtglib/proxy_opts.go
Исходный файл и его история в репозитории.
85 lines
1.6 KiB
Go
85 lines
1.6 KiB
Go
package mtglib
|
|
|
|
import "time"
|
|
|
|
type ProxyOpts struct {
|
|
Secret Secret
|
|
Network Network
|
|
AntiReplayCache AntiReplayCache
|
|
TimeAttackDetector TimeAttackDetector
|
|
IPBlocklist IPBlocklist
|
|
EventStream EventStream
|
|
Logger Logger
|
|
|
|
BufferSize uint
|
|
Concurrency uint
|
|
DomainFrontingPort uint
|
|
IdleTimeout time.Duration
|
|
PreferIP string
|
|
}
|
|
|
|
func (p ProxyOpts) valid() error {
|
|
switch {
|
|
case p.Network == nil:
|
|
return ErrNetworkIsNotDefined
|
|
case p.AntiReplayCache == nil:
|
|
return ErrAntiReplayCacheIsNotDefined
|
|
case p.IPBlocklist == nil:
|
|
return ErrIPBlocklistIsNotDefined
|
|
case p.EventStream == nil:
|
|
return ErrEventStreamIsNotDefined
|
|
case p.TimeAttackDetector == nil:
|
|
return ErrTimeAttackDetectorIsNotDefined
|
|
case p.Logger == nil:
|
|
return ErrLoggerIsNotDefined
|
|
case !p.Secret.Valid():
|
|
return ErrSecretInvalid
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (p ProxyOpts) getBufferSize() int {
|
|
if p.BufferSize < 1 {
|
|
return DefaultBufferSize
|
|
}
|
|
|
|
return int(p.BufferSize)
|
|
}
|
|
|
|
func (p ProxyOpts) getConcurrency() int {
|
|
if p.Concurrency == 0 {
|
|
return DefaultConcurrency
|
|
}
|
|
|
|
return int(p.Concurrency)
|
|
}
|
|
|
|
func (p ProxyOpts) getDomainFrontingPort() int {
|
|
if p.DomainFrontingPort == 0 {
|
|
return DefaultDomainFrontingPort
|
|
}
|
|
|
|
return int(p.DomainFrontingPort)
|
|
}
|
|
|
|
func (p ProxyOpts) getIdleTimeout() time.Duration {
|
|
if p.IdleTimeout == 0 {
|
|
return DefaultIdleTimeout
|
|
}
|
|
|
|
return p.IdleTimeout
|
|
}
|
|
|
|
func (p ProxyOpts) getPreferIP() string {
|
|
if p.PreferIP == "" {
|
|
return DefaultPreferIP
|
|
}
|
|
|
|
return p.PreferIP
|
|
}
|
|
|
|
func (p ProxyOpts) getLogger(name string) Logger {
|
|
return p.Logger.Named(name)
|
|
}
|