Documentation ¶
Overview ¶
Package config implements the configuration for a BitTorrent tracker
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultConfig = Config{ TrackerConfig: TrackerConfig{ CreateOnAnnounce: true, PurgeInactiveTorrents: true, Announce: Duration{30 * time.Minute}, MinAnnounce: Duration{15 * time.Minute}, ReapInterval: Duration{60 * time.Second}, ReapRatio: 1.25, NumWantFallback: 50, TorrentMapShards: 1, JWKSetURI: "", JWKSetUpdateInterval: Duration{5 * time.Minute}, JWTAudience: "", NetConfig: NetConfig{ AllowIPSpoofing: true, DualStackedPeers: true, RespectAF: false, }, WhitelistConfig: WhitelistConfig{ ClientWhitelistEnabled: false, }, }, APIConfig: APIConfig{ ListenAddr: "localhost:6880", RequestTimeout: Duration{10 * time.Second}, ReadTimeout: Duration{10 * time.Second}, WriteTimeout: Duration{10 * time.Second}, }, HTTPConfig: HTTPConfig{ ListenAddr: "localhost:6881", RequestTimeout: Duration{10 * time.Second}, ReadTimeout: Duration{10 * time.Second}, WriteTimeout: Duration{10 * time.Second}, }, UDPConfig: UDPConfig{ ListenAddr: "localhost:6882", }, StatsConfig: StatsConfig{ BufferSize: 0, IncludeMem: true, VerboseMem: false, MemUpdateInterval: Duration{5 * time.Second}, }, }
DefaultConfig is a configuration that can be used as a fallback value.
Functions ¶
This section is empty.
Types ¶
type APIConfig ¶
type APIConfig struct { ListenAddr string `json:"apiListenAddr"` RequestTimeout Duration `json:"apiRequestTimeout"` ReadTimeout Duration `json:"apiReadTimeout"` WriteTimeout Duration `json:"apiWriteTimeout"` ListenLimit int `json:"apiListenLimit"` }
APIConfig is the configuration for an HTTP JSON API server.
type Config ¶
type Config struct { TrackerConfig APIConfig HTTPConfig UDPConfig StatsConfig }
Config is the global configuration for an instance of Chihaya.
type Duration ¶
Duration wraps a time.Duration and adds JSON marshalling.
func (*Duration) MarshalJSON ¶
MarshalJSON transforms a duration into JSON.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON transform JSON into a Duration.
type HTTPConfig ¶
type HTTPConfig struct { ListenAddr string `json:"httpListenAddr"` RequestTimeout Duration `json:"httpRequestTimeout"` ReadTimeout Duration `json:"httpReadTimeout"` WriteTimeout Duration `json:"httpWriteTimeout"` ListenLimit int `json:"httpListenLimit"` }
HTTPConfig is the configuration for the HTTP protocol.
type NetConfig ¶
type NetConfig struct { AllowIPSpoofing bool `json:"allowIPSpoofing"` DualStackedPeers bool `json:"dualStackedPeers"` RealIPHeader string `json:"realIPHeader"` RespectAF bool `json:"respectAF"` SubnetConfig }
NetConfig is the configuration used to tune networking behaviour.
type StatsConfig ¶
type StatsConfig struct { BufferSize int `json:"statsBufferSize"` IncludeMem bool `json:"includeMemStats"` VerboseMem bool `json:"verboseMemStats"` MemUpdateInterval Duration `json:"memStatsInterval"` }
StatsConfig is the configuration used to record runtime statistics.
type SubnetConfig ¶
type SubnetConfig struct { PreferredSubnet bool `json:"preferredSubnet,omitempty"` PreferredIPv4Subnet int `json:"preferredIPv4Subnet,omitempty"` PreferredIPv6Subnet int `json:"preferredIPv6Subnet,omitempty"` }
SubnetConfig is the configuration used to specify if local peers should be given a preference when responding to an announce.
type TrackerConfig ¶
type TrackerConfig struct { CreateOnAnnounce bool `json:"createOnAnnounce"` PurgeInactiveTorrents bool `json:"purgeInactiveTorrents"` Announce Duration `json:"announce"` MinAnnounce Duration `json:"minAnnounce"` ReapInterval Duration `json:"reapInterval"` ReapRatio float64 `json:"reapRatio"` NumWantFallback int `json:"defaultNumWant"` TorrentMapShards int `json:"torrentMapShards"` JWKSetURI string `json:"jwkSetURI"` JWKSetUpdateInterval Duration `json:"jwkSetUpdateInterval"` JWTAudience string `json:"jwtAudience"` NetConfig WhitelistConfig }
TrackerConfig is the configuration for tracker functionality.
type UDPConfig ¶
type UDPConfig struct { ListenAddr string `json:"udpListenAddr"` ReadBufferSize int `json:"udpReadBufferSize"` }
UDPConfig is the configuration for the UDP protocol.
type WhitelistConfig ¶
type WhitelistConfig struct { ClientWhitelistEnabled bool `json:"clientWhitelistEnabled"` ClientWhitelist []string `json:"clientWhitelist,omitempty"` }
WhitelistConfig is the configuration used enable and store a whitelist of acceptable torrent client peer ID prefixes.