mirror of
https://github.com/sot-tech/mochi.git
synced 2026-07-11 19:18:12 -07:00
64b27c2df6
* add multiple addresses in request structures and frontend parsers * move per-ip peer fetch/store from storage to internal hooks * fetch/store both v1 and v2 info hashes
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package frontend
|
|
|
|
import "github.com/sot-tech/mochi/pkg/log"
|
|
|
|
// ParseOptions is the configuration used to parse an Announce Request.
|
|
//
|
|
// If AllowIPSpoofing is true, IPs provided via params will be used.
|
|
type ParseOptions struct {
|
|
AllowIPSpoofing bool `cfg:"allow_ip_spoofing"`
|
|
MaxNumWant uint32 `cfg:"max_numwant"`
|
|
DefaultNumWant uint32 `cfg:"default_numwant"`
|
|
MaxScrapeInfoHashes uint32 `cfg:"max_scrape_infohashes"`
|
|
}
|
|
|
|
// Validate sanity checks values set in a config and returns a new config with
|
|
// default values replacing anything that is invalid.
|
|
func (op ParseOptions) Validate() ParseOptions {
|
|
valid := op
|
|
if op.MaxNumWant <= 0 {
|
|
valid.MaxNumWant = defaultMaxNumWant
|
|
log.Warn("falling back to default configuration", log.Fields{
|
|
"name": "MaxNumWant",
|
|
"provided": op.MaxNumWant,
|
|
"default": valid.MaxNumWant,
|
|
})
|
|
}
|
|
|
|
if op.DefaultNumWant <= 0 {
|
|
valid.DefaultNumWant = defaultDefaultNumWant
|
|
log.Warn("falling back to default configuration", log.Fields{
|
|
"name": "DefaultNumWant",
|
|
"provided": op.DefaultNumWant,
|
|
"default": valid.DefaultNumWant,
|
|
})
|
|
}
|
|
|
|
if op.MaxScrapeInfoHashes <= 0 {
|
|
valid.MaxScrapeInfoHashes = defaultMaxScrapeInfoHashes
|
|
log.Warn("falling back to default configuration", log.Fields{
|
|
"name": "MaxScrapeInfoHashes",
|
|
"provided": op.MaxScrapeInfoHashes,
|
|
"default": valid.MaxScrapeInfoHashes,
|
|
})
|
|
}
|
|
return valid
|
|
}
|
|
|
|
// Default parser config constants.
|
|
const (
|
|
defaultMaxNumWant = 100
|
|
defaultDefaultNumWant = 50
|
|
defaultMaxScrapeInfoHashes = 50
|
|
)
|