config

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	PlaylistURL                          string
	DBPath                               string
	LogDir                               string
	HTTPAddr                             string
	LegacyHTTPAddr                       string
	UPnPEnabled                          bool
	UPnPAddr                             string
	UPnPNotifyInterval                   time.Duration
	UPnPMaxAge                           time.Duration
	UPnPContentDirectoryUpdateIDCacheTTL time.Duration
	PrimaryTunerCount                    int
	TunerCount                           int
	PlaylistSources                      []PlaylistSourceConfig
	PlaylistSourcesStartupAuthoritative  bool
	TraditionalGuideStart                int
	FriendlyName                         string
	DeviceID                             string
	DeviceAuth                           string
	RefreshSchedule                      string
	PlaylistSyncSourceConcurrency        int
	ReconcileDynamicRulePaged            bool
	FFmpegPath                           string
	FFprobePath                          string
	StreamMode                           string
	StartupTimeout                       time.Duration
	StartupRandomAccessRecoveryOnly      bool
	MinProbeBytes                        int
	MaxFailovers                         int
	FailoverTotalTimeout                 time.Duration
	UpstreamOverlimitCooldown            time.Duration
	FFmpegReconnectEnabled               bool
	FFmpegReconnectDelayMax              time.Duration
	FFmpegReconnectMaxRetries            int
	FFmpegReconnectHTTPErrors            string
	FFmpegRWTimeout                      time.Duration
	FFmpegStartupProbeSize               int
	FFmpegStartupAnalyzeDuration         time.Duration
	FFmpegInputBufferSize                int
	FFmpegDiscardCorrupt                 bool
	FFmpegCopyRegenerateTimestamps       bool
	FFmpegSourceLogLevel                 string
	FFmpegSourceStderrPassthroughEnabled bool
	FFmpegSourceStderrLogLevel           string
	FFmpegSourceStderrMaxLineBytes       int
	ProducerReadRate                     float64
	ProducerReadRateCatchup              float64
	ProducerInitialBurst                 int
	BufferChunkBytes                     int
	BufferFlushInterval                  time.Duration
	BufferTSAlign188                     bool
	StallDetect                          time.Duration
	StallHardDeadline                    time.Duration
	StallPolicy                          string
	StallMaxFailovers                    int
	CycleFailureMinHealth                time.Duration
	RecoveryFillerEnabled                bool
	RecoveryFillerMode                   string
	RecoveryFillerInterval               time.Duration
	RecoveryFillerText                   string
	RecoveryFillerEnableAudio            bool
	SubscriberJoinLag                    int
	SubscriberSlowPolicy                 string
	SubscriberMaxBlocked                 time.Duration
	SessionIdleTimeout                   time.Duration
	SessionDrainTimeout                  time.Duration
	SessionMaxSubscribers                int
	SessionHistoryLimit                  int
	SessionSourceHistoryLimit            int
	SessionSubscriberHistoryLimit        int
	SourceHealthDrainTimeout             time.Duration
	PreemptSettleDelay                   time.Duration
	AutoPrioritizeProbeTuneDelay         time.Duration
	AutoPrioritizeWorkers                string
	ProbeInterval                        time.Duration
	ProbeTimeout                         time.Duration
	AdminBasicAuth                       string
	AdminJSONBodyLimitBytes              int64
	DVRLineupReloadTimeout               time.Duration
	RequestTimeout                       time.Duration
	RateLimitRPS                         float64
	RateLimitBurst                       int
	RateLimitMaxClients                  int
	RateLimitTrustedProxies              []string
	TuneBackoffMaxTunes                  int
	TuneBackoffInterval                  time.Duration
	TuneBackoffCooldown                  time.Duration
	EnableMetrics                        bool
	HTTPRequestLogEnabled                bool
	LogLevel                             string
	CatalogSearchMaxTerms                int
	CatalogSearchMaxDisjuncts            int
	CatalogSearchMaxTermRunes            int
	// contains filtered or unexported fields
}

Config carries runtime settings from CLI flags and environment variables.

func Load

func Load(args []string) (Config, error)

func (Config) DiscoveryAdvertisedTunerCount added in v1.1.0

func (c Config) DiscoveryAdvertisedTunerCount() int

DiscoveryAdvertisedTunerCount returns tuner count exposed on discovery endpoints.

func (Config) DiscoveryTunerCountCapped added in v1.1.0

func (c Config) DiscoveryTunerCountCapped() bool

DiscoveryTunerCountCapped reports whether discovery is capped below internal capacity.

func (Config) Redacted

func (c Config) Redacted() RedactedConfig

type PlaylistSourceConfig added in v1.1.0

type PlaylistSourceConfig struct {
	Name        string
	PlaylistURL string
	TunerCount  int
	Enabled     bool
}

PlaylistSourceConfig describes one resolved playlist source from startup config.

type RedactedConfig

type RedactedConfig struct {
	PlaylistURLConfigured                bool     `json:"playlist_url_configured"`
	DBPath                               string   `json:"db_path"`
	LogDir                               string   `json:"log_dir"`
	HTTPAddr                             string   `json:"http_addr"`
	LegacyHTTPAddr                       string   `json:"legacy_http_addr,omitempty"`
	UPnPEnabled                          bool     `json:"upnp_enabled"`
	UPnPAddr                             string   `json:"upnp_addr"`
	UPnPNotifyInterval                   string   `json:"upnp_notify_interval"`
	UPnPMaxAge                           string   `json:"upnp_max_age"`
	UPnPContentDirectoryUpdateIDCacheTTL string   `json:"upnp_content_directory_update_id_cache_ttl"`
	PrimaryTunerCount                    int      `json:"primary_tuner_count"`
	TunerCount                           int      `json:"tuner_count"`
	PlaylistSourceCount                  int      `json:"playlist_source_count"`
	PlaylistSourcesStartupAuthoritative  bool     `json:"playlist_sources_startup_authoritative"`
	DiscoveryTunerCount                  int      `json:"discovery_tuner_count"`
	DiscoveryTunerCountCapped            bool     `json:"discovery_tuner_count_capped"`
	TraditionalGuideStart                int      `json:"traditional_guide_start"`
	FriendlyName                         string   `json:"friendly_name"`
	DeviceID                             string   `json:"device_id"`
	DeviceAuthConfigured                 bool     `json:"device_auth_configured"`
	RefreshSchedule                      string   `json:"refresh_schedule,omitempty"`
	PlaylistSyncSourceConcurrency        int      `json:"playlist_sync_source_concurrency"`
	ReconcileDynamicRulePaged            bool     `json:"reconcile_dynamic_rule_paged"`
	FFmpegPath                           string   `json:"ffmpeg_path"`
	FFprobePath                          string   `json:"ffprobe_path"`
	StreamMode                           string   `json:"stream_mode"`
	StartupTimeout                       string   `json:"startup_timeout"`
	StartupRandomAccessRecoveryOnly      bool     `json:"startup_random_access_recovery_only"`
	MinProbeBytes                        int      `json:"min_probe_bytes"`
	MaxFailovers                         int      `json:"max_failovers"`
	FailoverTotalTimeout                 string   `json:"failover_total_timeout"`
	UpstreamOverlimitCooldown            string   `json:"upstream_overlimit_cooldown"`
	FFmpegReconnectEnabled               bool     `json:"ffmpeg_reconnect_enabled"`
	FFmpegReconnectDelayMax              string   `json:"ffmpeg_reconnect_delay_max"`
	FFmpegReconnectMaxRetries            int      `json:"ffmpeg_reconnect_max_retries"`
	FFmpegReconnectHTTPErrors            string   `json:"ffmpeg_reconnect_http_errors"`
	FFmpegRWTimeout                      string   `json:"ffmpeg_rw_timeout"`
	FFmpegStartupProbeSize               int      `json:"ffmpeg_startup_probesize"`
	FFmpegStartupAnalyzeDuration         string   `json:"ffmpeg_startup_analyzeduration"`
	FFmpegInputBufferSize                int      `json:"ffmpeg_input_buffer_size"`
	FFmpegDiscardCorrupt                 bool     `json:"ffmpeg_discard_corrupt"`
	FFmpegCopyRegenerateTimestamps       bool     `json:"ffmpeg_copy_regenerate_timestamps"`
	FFmpegSourceLogLevel                 string   `json:"ffmpeg_source_log_level"`
	FFmpegSourceStderrPassthroughEnabled bool     `json:"ffmpeg_source_stderr_passthrough_enabled"`
	FFmpegSourceStderrLogLevel           string   `json:"ffmpeg_source_stderr_log_level"`
	FFmpegSourceStderrMaxLineBytes       int      `json:"ffmpeg_source_stderr_max_line_bytes"`
	ProducerReadRate                     string   `json:"producer_readrate"`
	ProducerReadRateCatchup              string   `json:"producer_readrate_catchup"`
	ProducerInitialBurst                 int      `json:"producer_initial_burst"`
	BufferChunkBytes                     int      `json:"buffer_chunk_bytes"`
	BufferFlushInterval                  string   `json:"buffer_flush_interval"`
	BufferTSAlign188                     bool     `json:"buffer_ts_align_188"`
	StallDetect                          string   `json:"stall_detect"`
	StallHardDeadline                    string   `json:"stall_hard_deadline"`
	StallPolicy                          string   `json:"stall_policy"`
	StallMaxFailovers                    int      `json:"stall_max_failovers"`
	CycleFailureMinHealth                string   `json:"cycle_failure_min_health"`
	RecoveryFillerEnabled                bool     `json:"recovery_filler_enabled"`
	RecoveryFillerMode                   string   `json:"recovery_filler_mode"`
	RecoveryFillerInterval               string   `json:"recovery_filler_interval"`
	RecoveryFillerText                   string   `json:"recovery_filler_text"`
	RecoveryFillerEnableAudio            bool     `json:"recovery_filler_enable_audio"`
	SubscriberJoinLag                    int      `json:"subscriber_join_lag"`
	SubscriberSlowPolicy                 string   `json:"subscriber_slow_policy"`
	SubscriberMaxBlocked                 string   `json:"subscriber_max_blocked"`
	SessionIdleTimeout                   string   `json:"session_idle_timeout"`
	SessionDrainTimeout                  string   `json:"session_drain_timeout"`
	SessionMaxSubscribers                int      `json:"session_max_subscribers"`
	SessionHistoryLimit                  int      `json:"session_history_limit"`
	SessionSourceHistoryLimit            int      `json:"session_source_history_limit"`
	SessionSubscriberHistoryLimit        int      `json:"session_subscriber_history_limit"`
	SourceHealthDrainTimeout             string   `json:"source_health_drain_timeout"`
	PreemptSettleDelay                   string   `json:"preempt_settle_delay"`
	AutoPrioritizeProbeTuneDelay         string   `json:"auto_prioritize_probe_tune_delay"`
	AutoPrioritizeWorkers                string   `json:"auto_prioritize_workers"`
	ProbeInterval                        string   `json:"probe_interval"`
	ProbeTimeout                         string   `json:"probe_timeout"`
	AdminAuthConfigured                  bool     `json:"admin_auth_configured"`
	AdminJSONBodyLimitBytes              int64    `json:"admin_json_body_limit_bytes"`
	DVRLineupReloadTimeout               string   `json:"dvr_lineup_reload_timeout"`
	RequestTimeout                       string   `json:"request_timeout"`
	RateLimitRPS                         string   `json:"rate_limit_rps"`
	RateLimitBurst                       int      `json:"rate_limit_burst"`
	RateLimitMaxClients                  int      `json:"rate_limit_max_clients"`
	RateLimitTrustedProxies              []string `json:"rate_limit_trusted_proxies,omitempty"`
	TuneBackoffMaxTunes                  int      `json:"tune_backoff_max_tunes"`
	TuneBackoffInterval                  string   `json:"tune_backoff_interval"`
	TuneBackoffCooldown                  string   `json:"tune_backoff_cooldown"`
	EnableMetrics                        bool     `json:"enable_metrics"`
	HTTPRequestLogEnabled                bool     `json:"http_request_log_enabled"`
	LogLevel                             string   `json:"log_level"`
	CatalogSearchMaxTerms                int      `json:"catalog_search_max_terms"`
	CatalogSearchMaxDisjuncts            int      `json:"catalog_search_max_disjuncts"`
	CatalogSearchMaxTermRunes            int      `json:"catalog_search_max_term_runes"`
}

RedactedConfig is safe for logs and startup output.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL