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.