config

package
v0.0.0-...-4d7396a Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultStunServers = []string{
	"stun.l.google.com:19302",
	"stun1.l.google.com:19302",
}

Functions

func GetExternalIP

func GetExternalIP(stunServers []string) (string, error)

func GetLocalIPAddresses

func GetLocalIPAddresses() ([]string, error)

Types

type AudioConfig

type AudioConfig struct {
	// minimum level to be considered active, 0-127, where 0 is loudest
	ActiveLevel uint8 `yaml:"active_level"`
	// percentile to measure, a participant is considered active if it has exceeded the ActiveLevel more than
	// MinPercentile% of the time
	MinPercentile uint8 `yaml:"min_percentile"`
	// interval to update clients, in ms
	UpdateInterval uint32 `yaml:"update_interval"`
	// smoothing for audioLevel values sent to the client.
	// audioLevel will be an average of `smooth_intervals`, 0 to disable
	SmoothIntervals uint32 `yaml:"smooth_intervals"`
}

type CodecSpec

type CodecSpec struct {
	Mime     string `yaml:"mime"`
	FmtpLine string `yaml:"fmtp_line"`
}

type Config

type Config struct {
	Port           uint32             `yaml:"port"`
	PrometheusPort uint32             `yaml:"prometheus_port,omitempty"`
	RTC            RTCConfig          `yaml:"rtc,omitempty"`
	Redis          RedisConfig        `yaml:"redis,omitempty"`
	Audio          AudioConfig        `yaml:"audio,omitempty"`
	Room           RoomConfig         `yaml:"room,omitempty"`
	TURN           TURNConfig         `yaml:"turn,omitempty"`
	WebHook        WebHookConfig      `yaml:"webhook,omitempty"`
	NodeSelector   NodeSelectorConfig `yaml:"node_selector,omitempty"`
	KeyFile        string             `yaml:"key_file,omitempty"`
	Keys           map[string]string  `yaml:"keys,omitempty"`
	Region         string             `yaml:"region,omitempty"`
	// LogLevel is deprecated
	LogLevel string        `yaml:"log_level,omitempty"`
	Logging  LoggingConfig `yaml:"logging,omitempty"`
	Limit    LimitConfig   `yaml:"limit,omitempty"`

	Development bool `yaml:"development,omitempty"`
}

func NewConfig

func NewConfig(confString string, c *cli.Context) (*Config, error)

func (*Config) HasRedis

func (conf *Config) HasRedis() bool

type CongestionControlConfig

type CongestionControlConfig struct {
	Enabled        bool                       `yaml:"enabled"`
	AllowPause     bool                       `yaml:"allow_pause"`
	UseSendSideBWE bool                       `yaml:"send_side_bandwidth_estimation,omitempty"`
	ProbeMode      CongestionControlProbeMode `yaml:"padding_mode,omitempty"`
}

type CongestionControlProbeMode

type CongestionControlProbeMode string
const (
	CongestionControlProbeModePadding CongestionControlProbeMode = "padding"
	CongestionControlProbeModeMedia   CongestionControlProbeMode = "media"
)

type InterfacesConfig

type InterfacesConfig struct {
	Includes []string `yaml:"includes"`
	Excludes []string `yaml:"excludes"`
}

type LimitConfig

type LimitConfig struct {
	NumTracks   int32   `yaml:"num_tracks"`
	BytesPerSec float32 `yaml:"bytes_per_sec"`
}

type LoggingConfig

type LoggingConfig struct {
	JSON      bool   `yaml:"json"`
	Level     string `yaml:"level"`
	Sample    bool   `yaml:"sample,omitempty"`
	PionLevel string `yaml:"pion_level,omitempty"`
}

type NodeSelectorConfig

type NodeSelectorConfig struct {
	Kind         string         `yaml:"kind"`
	CPULoadLimit float32        `yaml:"cpu_load_limit"`
	SysloadLimit float32        `yaml:"sysload_limit"`
	Regions      []RegionConfig `yaml:"regions"`
}

type PLIThrottleConfig

type PLIThrottleConfig struct {
	LowQuality  time.Duration `yaml:"low_quality,omitempty"`
	MidQuality  time.Duration `yaml:"mid_quality,omitempty"`
	HighQuality time.Duration `yaml:"high_quality,omitempty"`
}

type RTCConfig

type RTCConfig struct {
	UDPPort           uint32           `yaml:"udp_port,omitempty"`
	TCPPort           uint32           `yaml:"tcp_port,omitempty"`
	ICEPortRangeStart uint32           `yaml:"port_range_start,omitempty"`
	ICEPortRangeEnd   uint32           `yaml:"port_range_end,omitempty"`
	NodeIP            string           `yaml:"node_ip,omitempty"`
	STUNServers       []string         `yaml:"stun_servers,omitempty"`
	TURNServers       []TURNServer     `yaml:"turn_servers,omitempty"`
	UseExternalIP     bool             `yaml:"use_external_ip"`
	UseICELite        bool             `yaml:"use_ice_lite,omitempty"`
	Interfaces        InterfacesConfig `yaml:"interfaces"`

	// Number of packets to buffer for NACK
	PacketBufferSize int `yaml:"packet_buffer_size,omitempty"`

	// Max bitrate for REMB
	MaxBitrate uint64 `yaml:"max_bitrate,omitempty"`

	// Throttle periods for pli/fir rtcp packets
	PLIThrottle PLIThrottleConfig `yaml:"pli_throttle,omitempty"`

	CongestionControl CongestionControlConfig `yaml:"congestion_control,omitempty"`

	// for testing, disable UDP
	ForceTCP bool `yaml:"force_tcp,omitempty"`
}

type RedisConfig

type RedisConfig struct {
	Address  string `yaml:"address"`
	Username string `yaml:"username"`
	Password string `yaml:"password"`
	DB       int    `yaml:"db"`
	UseTLS   bool   `yaml:"use_tls"`
}

type RegionConfig

type RegionConfig struct {
	Name string  `yaml:"name"`
	Lat  float64 `yaml:"lat"`
	Lon  float64 `yaml:"lon"`
}

RegionConfig lists available regions and their latitude/longitude, so the selector would prefer regions that are closer

type RoomConfig

type RoomConfig struct {
	// enable rooms to be automatically created
	AutoCreate         bool        `yaml:"auto_create"`
	EnabledCodecs      []CodecSpec `yaml:"enabled_codecs"`
	MaxParticipants    uint32      `yaml:"max_participants"`
	RoomType           string      `yaml:"room_type"`
	EmptyTimeout       uint32      `yaml:"empty_timeout"`
	EnableRemoteUnmute bool        `yaml:"enable_remote_unmute"`
}

type TURNConfig

type TURNConfig struct {
	Enabled     bool   `yaml:"enabled"`
	Domain      string `yaml:"domain"`
	CertFile    string `yaml:"cert_file"`
	KeyFile     string `yaml:"key_file"`
	TLSPort     int    `yaml:"tls_port"`
	UDPPort     int    `yaml:"udp_port"`
	ExternalTLS bool   `yaml:"external_tls"`
}

type TURNServer

type TURNServer struct {
	Host       string `yaml:"host"`
	Port       int    `yaml:"port"`
	Protocol   string `yaml:"protocol"`
	Username   string `yaml:"username,omitempty"`
	Credential string `yaml:"credential,omitempty"`
}

type WebHookConfig

type WebHookConfig struct {
	URLs []string `yaml:"urls"`
	// key to use for webhook
	APIKey string `yaml:"api_key"`
}

Jump to

Keyboard shortcuts

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