From 7dbf481f87174a1f0beeb7d4633d2ea1950522ca Mon Sep 17 00:00:00 2001 From: mhoellein Date: Fri, 10 Nov 2023 09:01:46 +0100 Subject: [PATCH] committing changes in /etc made by "apt-get install janus" Package changes: +dbus-user-session 1.12.16-2ubuntu2.3 amd64 +dconf-gsettings-backend 0.36.0-1 amd64 +dconf-service 0.36.0-1 amd64 +glib-networking 2.64.2-1ubuntu0.1 amd64 +glib-networking-common 2.64.2-1ubuntu0.1 all +glib-networking-services 2.64.2-1ubuntu0.1 amd64 +gsettings-desktop-schemas 3.36.0-1ubuntu1 all +janus 0.7.3-2build1 amd64 +libconfig9 1.5-0.4build1 amd64 +libdconf1 0.36.0-1 amd64 +libev4 1:4.31-1 amd64 +libgssdp-1.2-0 1.2.3-0ubuntu0.20.04.1 amd64 +libgupnp-1.2-0 1.2.4-0ubuntu1 amd64 +libgupnp-igd-1.0-4 0.2.5-5 amd64 +libmicrohttpd12 0.9.66-1 amd64 +libnanomsg5 1.1.5+dfsg-1 amd64 +libnice10 0.1.16-1 amd64 +libopus0 1.3.1-0ubuntu1 amd64 +libproxy1v5 0.4.15-10ubuntu1.2 amd64 +librabbitmq4 0.10.0-1 amd64 +libre0 0.6.0-4 amd64 +libsofia-sip-ua0 1.12.11+20110422.1-2.1+deb10u3ubuntu0.20.04.2 amd64 +libsoup2.4-1 2.70.0-1 amd64 +libsrtp2-1 2.3.0-2 amd64 +libusrsctp1 0.9.3.0+20190901-1 amd64 +libwebsockets15 3.2.1-3 amd64 --- .etckeeper | 27 ++ X11/Xsession.d/20dbus_xdg-runtime | 24 ++ init.d/janus | 22 ++ janus/janus.eventhandler.rabbitmqevh.jcfg | 31 ++ janus/janus.eventhandler.sampleevh.jcfg | 41 +++ janus/janus.jcfg | 287 ++++++++++++++++++ janus/janus.plugin.audiobridge.jcfg | 47 +++ janus/janus.plugin.duktape.jcfg | 20 ++ janus/janus.plugin.echotest.jcfg | 5 + janus/janus.plugin.lua.jcfg | 20 ++ janus/janus.plugin.nosip.jcfg | 15 + janus/janus.plugin.recordplay.jcfg | 7 + janus/janus.plugin.sip.jcfg | 31 ++ janus/janus.plugin.sipre.jcfg | 21 ++ janus/janus.plugin.streaming.jcfg | 205 +++++++++++++ janus/janus.plugin.textroom.jcfg | 24 ++ janus/janus.plugin.videocall.jcfg | 5 + janus/janus.plugin.videoroom.jcfg | 74 +++++ janus/janus.plugin.voicemail.jcfg | 11 + janus/janus.transport.http.jcfg | 73 +++++ janus/janus.transport.nanomsg.jcfg | 28 ++ janus/janus.transport.pfunix.jcfg | 22 ++ janus/janus.transport.rabbitmq.jcfg | 47 +++ janus/janus.transport.websockets.jcfg | 44 +++ rc0.d/K01janus | 1 + rc1.d/K01janus | 1 + rc2.d/S01janus | 1 + rc3.d/S01janus | 1 + rc4.d/S01janus | 1 + rc5.d/S01janus | 1 + rc6.d/K01janus | 1 + .../multi-user.target.wants/janus.service | 1 + 32 files changed, 1139 insertions(+) create mode 100644 X11/Xsession.d/20dbus_xdg-runtime create mode 100755 init.d/janus create mode 100644 janus/janus.eventhandler.rabbitmqevh.jcfg create mode 100644 janus/janus.eventhandler.sampleevh.jcfg create mode 100644 janus/janus.jcfg create mode 100644 janus/janus.plugin.audiobridge.jcfg create mode 100644 janus/janus.plugin.duktape.jcfg create mode 100644 janus/janus.plugin.echotest.jcfg create mode 100644 janus/janus.plugin.lua.jcfg create mode 100644 janus/janus.plugin.nosip.jcfg create mode 100644 janus/janus.plugin.recordplay.jcfg create mode 100644 janus/janus.plugin.sip.jcfg create mode 100644 janus/janus.plugin.sipre.jcfg create mode 100644 janus/janus.plugin.streaming.jcfg create mode 100644 janus/janus.plugin.textroom.jcfg create mode 100644 janus/janus.plugin.videocall.jcfg create mode 100644 janus/janus.plugin.videoroom.jcfg create mode 100644 janus/janus.plugin.voicemail.jcfg create mode 100644 janus/janus.transport.http.jcfg create mode 100644 janus/janus.transport.nanomsg.jcfg create mode 100644 janus/janus.transport.pfunix.jcfg create mode 100644 janus/janus.transport.rabbitmq.jcfg create mode 100644 janus/janus.transport.websockets.jcfg create mode 120000 rc0.d/K01janus create mode 120000 rc1.d/K01janus create mode 120000 rc2.d/S01janus create mode 120000 rc3.d/S01janus create mode 120000 rc4.d/S01janus create mode 120000 rc5.d/S01janus create mode 120000 rc6.d/K01janus create mode 120000 systemd/system/multi-user.target.wants/janus.service diff --git a/.etckeeper b/.etckeeper index 72b6832cc..e6a62adae 100755 --- a/.etckeeper +++ b/.etckeeper @@ -9,6 +9,7 @@ mkdir -p './apt/preferences.d' mkdir -p './binfmt.d' mkdir -p './ca-certificates/update.d' mkdir -p './dbus-1/session.d' +mkdir -p './dconf/db' mkdir -p './dovecot/private' mkdir -p './dpkg/dpkg.cfg.d' mkdir -p './fail2ban/fail2ban.d' @@ -101,6 +102,7 @@ maybe chmod 0755 'X11/Xresources' maybe chmod 0644 'X11/Xresources/x11-common' maybe chmod 0755 'X11/Xsession' maybe chmod 0755 'X11/Xsession.d' +maybe chmod 0644 'X11/Xsession.d/20dbus_xdg-runtime' maybe chmod 0644 'X11/Xsession.d/20x11-common_process-args' maybe chmod 0644 'X11/Xsession.d/30x11-common_xresources' maybe chmod 0644 'X11/Xsession.d/35x11-common_xhost-local' @@ -872,6 +874,8 @@ maybe chmod 0755 'dbus-1/session.d' maybe chmod 0755 'dbus-1/system.d' maybe chmod 0644 'dbus-1/system.d/com.ubuntu.LanguageSelector.conf' maybe chmod 0644 'dbus-1/system.d/org.freedesktop.Accounts.conf' +maybe chmod 0755 'dconf' +maybe chmod 0755 'dconf/db' maybe chmod 0644 'debconf.conf' maybe chmod 0644 'debian_version' maybe chmod 0755 'default' @@ -1497,6 +1501,7 @@ maybe chmod 0755 'init.d/hwclock.sh' maybe chmod 0755 'init.d/icinga2' maybe chmod 0755 'init.d/ipsec' maybe chmod 0755 'init.d/irqbalance' +maybe chmod 0755 'init.d/janus' maybe chmod 0755 'init.d/keyboard-setup.sh' maybe chmod 0755 'init.d/kmod' maybe chmod 0755 'init.d/knockd' @@ -1572,6 +1577,28 @@ maybe chmod 0755 'ipsec.d/reqs' maybe chmod 0600 'ipsec.secrets' maybe chmod 0644 'issue' maybe chmod 0644 'issue.net' +maybe chmod 0755 'janus' +maybe chmod 0644 'janus/janus.eventhandler.rabbitmqevh.jcfg' +maybe chmod 0644 'janus/janus.eventhandler.sampleevh.jcfg' +maybe chmod 0644 'janus/janus.jcfg' +maybe chmod 0644 'janus/janus.plugin.audiobridge.jcfg' +maybe chmod 0644 'janus/janus.plugin.duktape.jcfg' +maybe chmod 0644 'janus/janus.plugin.echotest.jcfg' +maybe chmod 0644 'janus/janus.plugin.lua.jcfg' +maybe chmod 0644 'janus/janus.plugin.nosip.jcfg' +maybe chmod 0644 'janus/janus.plugin.recordplay.jcfg' +maybe chmod 0644 'janus/janus.plugin.sip.jcfg' +maybe chmod 0644 'janus/janus.plugin.sipre.jcfg' +maybe chmod 0644 'janus/janus.plugin.streaming.jcfg' +maybe chmod 0644 'janus/janus.plugin.textroom.jcfg' +maybe chmod 0644 'janus/janus.plugin.videocall.jcfg' +maybe chmod 0644 'janus/janus.plugin.videoroom.jcfg' +maybe chmod 0644 'janus/janus.plugin.voicemail.jcfg' +maybe chmod 0644 'janus/janus.transport.http.jcfg' +maybe chmod 0644 'janus/janus.transport.nanomsg.jcfg' +maybe chmod 0644 'janus/janus.transport.pfunix.jcfg' +maybe chmod 0644 'janus/janus.transport.rabbitmq.jcfg' +maybe chmod 0644 'janus/janus.transport.websockets.jcfg' maybe chmod 0755 'kernel' maybe chmod 0644 'kernel-img.conf' maybe chmod 0755 'kernel/install.d' diff --git a/X11/Xsession.d/20dbus_xdg-runtime b/X11/Xsession.d/20dbus_xdg-runtime new file mode 100644 index 000000000..c5417277d --- /dev/null +++ b/X11/Xsession.d/20dbus_xdg-runtime @@ -0,0 +1,24 @@ +# vim:set ft=sh sw=2 sts=2 et: + +if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && [ -n "$XDG_RUNTIME_DIR" ] && \ + [ "$XDG_RUNTIME_DIR" = "/run/user/`id -u`" ] && \ + [ -S "$XDG_RUNTIME_DIR/bus" ]; then + # We are under systemd-logind or something remarkably similar, and + # a user-session socket has already been set up. + # + # Be nice to non-libdbus, non-sd-bus implementations by using + # that as the session bus address in the environment. The check for + # XDG_RUNTIME_DIR = "/run/user/`id -u`" is because we know that + # form of the address, from systemd-logind, doesn't need escaping, + # whereas arbitrary addresses might. + DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus" + export DBUS_SESSION_BUS_ADDRESS +fi + +if [ -x "/usr/bin/dbus-update-activation-environment" ]; then + # tell dbus-daemon --session (and systemd --user, if running) + # to put a minimal subset of the Xsession's environment in activated + # services' environments + dbus-update-activation-environment --verbose --systemd \ + DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY +fi diff --git a/init.d/janus b/init.d/janus new file mode 100755 index 000000000..a5286037a --- /dev/null +++ b/init.d/janus @@ -0,0 +1,22 @@ +#!/bin/sh +# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing. +if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then + set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script +fi +### BEGIN INIT INFO +# Provides: janus +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Janus WebRTC gateway +# Description: General purpose WebRTC Gateway. +### END INIT INFO + +# Author: Jonas Smedegaard + +DESC="Janus WebRTC gateway" +DAEMON=/usr/bin/janus + +# This may be overridden in /etc/default/janus +DAEMON_ARGS=${DAEMON_ARGS:---pid-file=$PIDFILE --disable-colors} diff --git a/janus/janus.eventhandler.rabbitmqevh.jcfg b/janus/janus.eventhandler.rabbitmqevh.jcfg new file mode 100644 index 000000000..a06ec5dd3 --- /dev/null +++ b/janus/janus.eventhandler.rabbitmqevh.jcfg @@ -0,0 +1,31 @@ +# This configures the RabbitMQ event handler. + +general: { + enabled = false # By default the module is not enabled + events = "all" # Comma separated list of the events mask you're interested + # in. Valid values are none, sessions, handles, jsep, webrtc, + # media, plugins, transports, core, external and all. By + # default we subscribe to everything (all) + grouping = true # Whether events should be sent individually , or if it's ok + # to group them. The default is 'yes' to limit the number of + # messages + json = "indented" # Whether the JSON messages should be indented (default), + # plain (no indentation) or compact (no indentation and no spaces) + + host = "localhost" # The address of the RabbitMQ server + #port = 5672 # The port of the RabbitMQ server (5672 by default) + #username = "guest" # Username to use to authenticate, if needed + #password = "guest" # Password to use to authenticate, if needed + #vhost = "/" # Virtual host to specify when logging in, if needed + #exchange = "janus-exchange" + route_key = "janus-events" # Name of the queue for event messages + + #ssl_enable = false # Whether ssl support must be enabled + #ssl_verify_peer = true # Whether peer verification must be enabled + #ssl_verify_hostname = true # Whether hostname verification must be enabled + + # Certificates to use when SSL support is enabled, if needed + #ssl_cacert = "/path/to/cacert.pem" + ssl_cert = "/etc/ssl/certs/ssl-cert-snakeoil.pem" + ssl_key = "/etc/ssl/private/ssl-cert-snakeoil.key" +} diff --git a/janus/janus.eventhandler.sampleevh.jcfg b/janus/janus.eventhandler.sampleevh.jcfg new file mode 100644 index 000000000..31ed3c4b8 --- /dev/null +++ b/janus/janus.eventhandler.sampleevh.jcfg @@ -0,0 +1,41 @@ +# This configures the sample event handler. Since this plugin simply +# forwards each event it receives via HTTP POST, you simply need to +# configure (i) which events to subscribe to, and (ii) the address of +# the web server which will receive the requests. + +general: { + enabled = false # By default the module is not enabled + events = "all" # Comma separated list of the events mask you're interested + # in. Valid values are none, sessions, handles, jsep, webrtc, + # media, plugins, transports, core, external and all. By + # default we subscribe to everything (all) + grouping = true # Whether events should be sent individually (one per + # HTTP POST, JSON object), or if it's ok to group them + # (one or more per HTTP POST, JSON array with objects) + # The default is 'yes' to limit the number of connections. + + # Address the plugin will send all events to as HTTP POST + # requests with an application/json payload. In case + # authentication is required to contact the backend, set + # the credentials as well (basic authentication only). + json = "indented" # Whether the JSON messages should be indented (default), + # plain (no indentation) or compact (no indentation and no spaces) + + backend = "http://your.webserver.here/and/a/path" + #backend_user = "myuser" + #backend_pwd = "mypwd" + + # You can also configure how retransmissions should + # happen, after a failed attempt to deliver an event. + # Specifically, you can specify how many times a + # retransmission should be attempted (default=5) and + # which step is used, in milliseconds, for the exponential + # backoff before retrying (e.g, if step=100ms, then the + # the first retry will happen after 100ms, the second + # after 200ms, then 400ms, and so on). If the event cannot + # be retransmitted after the maximum number of attemps + # is reached, then it's lost. Beware that retransmissions + # will also delay pending events and increase the queue. + #max_retransmissions = 5 + #retransmissions_backoff = 100 +} diff --git a/janus/janus.jcfg b/janus/janus.jcfg new file mode 100644 index 000000000..c879d7829 --- /dev/null +++ b/janus/janus.jcfg @@ -0,0 +1,287 @@ +# General configuration: folders where the configuration and the plugins +# can be found, how output should be logged, whether Janus should run as +# a daemon or in foreground, default interface to use, debug/logging level +# and, if needed, shared apisecret and/or token authentication mechanism +# between application(s) and Janus. +general: { + configs_folder = "/etc/janus" # Configuration files folder + plugins_folder = "/usr/lib/x86_64-linux-gnu/janus/plugins" # Plugins folder + transports_folder = "/usr/lib/x86_64-linux-gnu/janus/transports" # Transports folder + events_folder = "/usr/lib/x86_64-linux-gnu/janus/events" # Event handlers folder + + # The next settings configure logging + #log_to_stdout = false # Whether the Janus output should be written + # to stdout or not (default=true) + #log_to_file = "/path/to/janus.log" # Whether to use a log file or not + debug_level = 4 # Debug/logging level, valid values are 0-7 + #debug_timestamps = true # Whether to show a timestamp for each log line + #debug_colors = false # Whether colors should be disabled in the log + #debug_locks = true # Whether to enable debugging of locks (very verbose!) + + # This is what you configure if you want to launch Janus as a daemon + #daemonize = true # Whether Janus should run as a daemon + # or not (default=run in foreground) + #pid_file = "/path/to/janus.pid" # PID file to create when Janus has been + # started, and to destroy at shutdown + + # There are different ways you can authenticate the Janus and Admin APIs + #api_secret = "janusrocks" # String that all Janus requests must contain + # to be accepted/authorized by the Janus core. + # Useful if you're wrapping all Janus API requests + # in your servers (that is, not in the browser, + # where you do the things your way) and you + # don't want other application to mess with + # this Janus instance. + #token_auth = true # Enable a token based authentication + # mechanism to force users to always provide + # a valid token in all requests. Useful if + # you want to authenticate requests from web + # users. + #token_auth_secret = "janus" # Use HMAC-SHA1 signed tokens (with token_auth). Note that + # without this, the Admin API MUST + # be enabled, as tokens are added and removed + # through messages sent there. + admin_secret = "janusoverlord" # String that all Janus requests must contain + # to be accepted/authorized by the admin/monitor. + # only needed if you enabled the admin API + # in any of the available transports. + + # Generic settings + #interface = "1.2.3.4" # Interface to use (will be used in SDP) + #server_name = "MyJanusInstance"# Public name of this Janus instance + # as it will appear in an info request + #session_timeout = 60 # How long (in seconds) we should wait before + # deciding a Janus session has timed out. A + # session times out when no request is received + # for session_timeout seconds (default=60s). + # Setting this to 0 will disable the timeout + # mechanism, which is NOT suggested as it may + # risk having orphaned sessions (sessions not + # controlled by any transport and never freed). + # To avoid timeouts, keep-alives can be used. + #candidates_timeout = 45 # How long (in seconds) we should keep hold of + # pending (trickle) candidates before discarding + # them (default=45s). Notice that setting this + # to 0 will NOT disable the timeout, but will + # be considered an invalid value and ignored. + #reclaim_session_timeout = 0 # How long (in seconds) we should wait for a + # janus session to be reclaimed after the transport + # is gone. After the transport is gone, a session + # times out when no request is received for + # reclaim_session_timeout seconds (default=0s). + # Setting this to 0 will disable the timeout + # mechanism, and sessions will be destroyed immediately + # if the transport is gone. + #recordings_tmp_ext = "tmp" # The extension for recordings, in Janus, is + # .mjr, a custom format we devised ourselves. + # By default, we save to .mjr directly. If you'd + # rather the recording filename have a temporary + # extension while it's being saved, and only + # have the .mjr extension when the recording + # is over (e.g., to automatically trigger some + # external scripts), then uncomment and set the + # recordings_tmp_ext property to the extension + # to add to the base (e.g., tmp --> .mjr.tmp). + #event_loops = 8 # By default, Janus handles each have their own + # event loop and related thread for all the media + # routing and management. If for some reason you'd + # rather limit the number of loop/threads, and + # you want handles to share those, you can do that + # configuring the event_loops property: this will + # spawn the specified amount of threads at startup, + # run a separate event loop on each of them, and + # add new handles to one of them when attaching. + # Notice that, while cutting the number of threads + # and possibly reducing context switching, this + # might have an impact on the media delivery, + # especially if the available loops can't take + # care of all the handles and their media in time. + # As such, if you want to use this you should + # provision the correct value according to the + # available resources (e.g., CPUs available). + #opaqueid_in_api = true # Opaque IDs set by applications are typically + # only passed to event handlers for correlation + # purposes, but not sent back to the user or + # application in the related Janus API responses + # or events; in case you need them to be in the + # Janus API too, set this property to 'true'. + #hide_dependencies = true # By default, a call to the "info" endpoint of + # either the Janus or Admin API now also returns + # the versions of the main dependencies (e.g., + # libnice, libsrtp, which crypto library is in + # use and so on). Should you want that info not + # to be disclose, set 'hide_dependencies' to true. + + # The following is ONLY useful when debugging RTP/RTCP packets, + # e.g., to look at unencrypted live traffic with a browser. By + # default it is obviously disabled, as WebRTC mandates encryption. + #no_webrtc_encryption = true +} + +# Certificate and key to use for DTLS (and passphrase if needed). If missing, +# Janus will autogenerate a self-signed certificate to use. Notice that +# self-signed certificates are fine for the purpose of WebRTC DTLS +# connectivity, for the time being, at least until Identity Providers +# are standardized and implemented in browsers. +certificates: { + cert_pem = "/etc/ssl/certs/ssl-cert-snakeoil.pem" + cert_key = "/etc/ssl/private/ssl-cert-snakeoil.key" + #cert_pwd = "secretpassphrase" +} + +# Media-related stuff: you can configure whether if you want +# to enable IPv6 support, if RFC4588 support for retransmissions +# should be negotiated or not (off by default), the maximum size +# of the NACK queue (in milliseconds, defaults to 500ms) for retransmissions, the +# range of ports to use for RTP and RTCP (by default, no range is envisaged), the +# starting MTU for DTLS (1200 by default, it adapts automatically), +# how much time, in seconds, should pass with no media (audio or +# video) being received before Janus notifies you about this (default=1s, +# 0 disables these events entirely), how many lost packets should trigger +# a 'slowlink' event to users (default=4), and how often, in milliseconds, +# to send the Transport Wide Congestion Control feedback information back +# to senders, if negotiated (default=1s). Finally, if you're using BoringSSL +# you can customize the frequency of retransmissions: OpenSSL has a fixed +# value of 1 second (the default), while BoringSSL can override that. Notice +# that lower values (e.g., 100ms) will typically get you faster connection +# times, but may not work in case the RTT of the user is high: as such, +# you should pick a reasonable trade-off (usually 2*max expected RTT). +media: { + #ipv6 = true + #max_nack_queue = 500 + #rfc_4588 = true + #rtp_port_range = "20000-40000" + #dtls_mtu = 1200 + #no_media_timer = 1 + #slowlink_threshold = 4 + #twcc_period = 200 + #dtls_timeout = 500 +} + +# NAT-related stuff: specifically, you can configure the STUN/TURN +# servers to use to gather candidates if the gateway is behind a NAT, +# and srflx/relay candidates are needed. In case STUN is not enough and +# this is needed (it shouldn't), you can also configure Janus to use a +# TURN server# please notice that this does NOT refer to TURN usage in +# browsers, but in the gathering of relay candidates by Janus itself, +# e.g., if you want to limit the ports used by a Janus instance on a +# private machine. Furthermore, you can choose whether Janus should be +# configured to do full-trickle (Janus also trickles its candidates to +# users) rather than the default half-trickle (Janus supports trickle +# candidates from users, but sends its own within the SDP), and whether +# it should work in ICE-Lite mode (by default it doesn't). Finally, +# you can also enable ICE-TCP support (beware that it currently *only* +# works if you enable ICE Lite as well), choose which interfaces should +# be used for gathering candidates, and enable or disable the +# internal libnice debugging, if needed. +nat: { + #stun_server = "stun.voip.eutelia.it" + #stun_port = 3478 + nice_debug = false + #full_trickle = true + #ice_lite = true + #ice_tcp = true + + # In case you're deploying Janus on a server which is configured with + # a 1:1 NAT (e.g., Amazon EC2), you might want to also specify the public + # address of the machine using the setting below. This will result in + # all host candidates (which normally have a private IP address) to + # be rewritten with the public address provided in the settings. As + # such, use the option with caution and only if you know what you're doing. + # Make sure you keep ICE Lite disabled, though, as it's not strictly + # speaking a publicly reachable server, and a NAT is still involved. + #nat_1_1_mapping = "1.2.3.4" + + # You can configure a TURN server in two different ways: specifying a + # statically configured TURN server, and thus provide the address of the + # TURN server, the transport (udp/tcp/tls) to use, and a set of valid + # credentials to authenticate... + #turn_server = "myturnserver.com" + #turn_port = 3478 + #turn_type = "udp" + #turn_user = "myuser" + #turn_pwd = "mypassword" + + # ... or you can make use of the TURN REST API to get info on one or more + # TURN services dynamically. This makes use of the proposed standard of + # such an API (https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) + # which is currently available in both rfc5766-turn-server and coturn. + # You enable this by specifying the address of your TURN REST API backend, + # the HTTP method to use (GET or POST) and, if required, the API key Janus + # must provide. + #turn_rest_api = "http://yourbackend.com/path/to/api" + #turn_rest_api_key = "anyapikeyyoumayhaveset" + #turn_rest_api_method = "GET" + + # You can also choose which interfaces should be explicitly used by the + # gateway for the purpose of ICE candidates gathering, thus excluding + # others that may be available. To do so, use the 'ice_enforce_list' + # setting and pass it a comma-separated list of interfaces or IP addresses + # to enforce. This is especially useful if the server hosting the gateway + # has several interfaces, and you only want a subset to be used. Any of + # the following examples are valid: + # ice_enforce_list = "eth0" + # ice_enforce_list = "eth0,eth1" + # ice_enforce_list = "eth0,192.168." + # ice_enforce_list = "eth0,192.168.0.1" + # By default, no interface is enforced, meaning Janus will try to use them all. + #ice_enforce_list = "eth0" + + # In case you don't want to specify specific interfaces to use, but would + # rather tell Janus to use all the available interfaces except some that + # you don't want to involve, you can also choose which interfaces or IP + # addresses should be excluded and ignored by the gateway for the purpose + # of ICE candidates gathering. To do so, use the 'ice_ignore_list' setting + # and pass it a comma-separated list of interfaces or IP addresses to + # ignore. This is especially useful if the server hosting the gateway + # has several interfaces you already know will not be used or will simply + # always slow down ICE (e.g., virtual interfaces created by VMware). + # Partial strings are supported, which means that any of the following + # examples are valid: + # ice_ignore_list = "vmnet8,192.168.0.1,10.0.0.1" + # ice_ignore_list = "vmnet,192.168." + # Just beware that the ICE ignore list is not used if an enforce list + # has been configured. By default, Janus ignores all interfaces whose + # name starts with 'vmnet', to skip VMware interfaces: + ice_ignore_list = "vmnet" +} + +# You can choose which of the available plugins should be +# enabled or not. Use the 'disable' directive to prevent Janus from +# loading one or more plugins: use a comma separated list of plugin file +# names to identify the plugins to disable. By default all available +# plugins are enabled and loaded at startup. +plugins: { + #disable = "libjanus_voicemail.so,libjanus_recordplay.so" +} + +# You can choose which of the available transports should be enabled or +# not. Use the 'disable' directive to prevent Janus from loading one +# or more transport: use a comma separated list of transport file names +# to identify the transports to disable. By default all available +# transports are enabled and loaded at startup. +transports: { + #disable = "libjanus_rabbitmq.so" +} + +# Event handlers allow you to receive live events from Janus happening +# in core and/or plugins. Since this can require some more resources, +# the feature is disabled by default. Setting broadcast to yes will +# enable them. You can then choose which of the available event handlers +# should be loaded or not. Use the 'disable' directive to prevent Janus +# from loading one or more event handlers: use a comma separated list of +# file names to identify the event handlers to disable. By default, if +# broadcast is set to yes all available event handlers are enabled and +# loaded at startup. Finally, you can choose how often media statistics +# (packets sent/received, losses, etc.) should be sent: by default it's +# once per second (audio and video statistics sent separately), but may +# considered too verbose, or you may want to limit the number of events, +# especially if you have many PeerConnections active. To change this, +# just set 'stats_period' to the number of seconds that should pass in +# between statistics for each handle. Setting it to 0 disables them (but +# not other media-related events). +events: { + #broadcast = true + #disable = "libjanus_sampleevh.so" + #stats_period = 5 +} diff --git a/janus/janus.plugin.audiobridge.jcfg b/janus/janus.plugin.audiobridge.jcfg new file mode 100644 index 000000000..04df7b117 --- /dev/null +++ b/janus/janus.plugin.audiobridge.jcfg @@ -0,0 +1,47 @@ +# room-: { +# description = "This is my awesome room" +# is_private = true|false (whether this room should be in the public list, default=true) +# secret = "" +# pin = "" +# sampling_rate = (e.g., 16000 for wideband mixing) +# audiolevel_ext = true|false (whether the ssrc-audio-level RTP extension must +# be negotiated/used or not for new joins, default=true) +# audiolevel_event = true|false (whether to emit event to other users or not, default=false) +# audio_active_packets = 100 (number of packets with audio level, default=100, 2 seconds) +# audio_level_average = 25 (average value of audio level, 127=muted, 0='too loud', default=25) +# record = true|false (whether this room should be recorded, default=false) +# record_file = "/path/to/recording.wav" (where to save the recording) +# +# The following lines are only needed if you want the mixed audio +# to be automatically forwarded via plain RTP to an external component +# (e.g., an ffmpeg script, or a gstreamer pipeline) for processing +# By default plain RTP is used, SRTP must be configured if needed +# rtp_forward_id = numeric RTP forwarder ID for referencing it via API (optional: random ID used if missing) +# rtp_forward_host = "" +# rtp_forward_port = port to forward RTP packets of mixed audio to +# rtp_forward_ssrc = SSRC to use to use when streaming (optional: stream_id used if missing) +# rtp_forward_ptype = payload type to use when streaming (optional: 100 used if missing) +# rtp_forward_srtp_suite = length of authentication tag (32 or 80) +# rtp_forward_srtp_crypto = "" +# rtp_forward_always_on = true|false, whether silence should be forwarded when the room is empty (optional: false used if missing) +#} + +general: { + #admin_key = "supersecret" # If set, rooms can be created via API only + # if this key is provided in the request + #lock_rtp_forward = true # Whether the admin_key above should be + # enforced for RTP forwarding requests too + #record_tmp_ext = "tmp" # Optional temporary extension to add to filenames + # while recording: e.g., setting "tmp" would mean + # .wav --> .wav.tmp until the file is closed + #events = false # Whether events should be sent to event + # handlers (default=true) +} + +room-1234: { + description = "Demo Room" + secret = "adminpwd" + sampling_rate = 16000 + record = false + #record_file = "/path/to/recording.wav" +} diff --git a/janus/janus.plugin.duktape.jcfg b/janus/janus.plugin.duktape.jcfg new file mode 100644 index 000000000..555bb9883 --- /dev/null +++ b/janus/janus.plugin.duktape.jcfg @@ -0,0 +1,20 @@ +# The only things you configure in here are which JavaScipt file to load and, +# optionally, the paths to add for searching libraries and a configuration +# file, if the script will need it. For what concerns the libraries path, +# by default this configuration file adds a path to where the JS samples +# have been installed, as it contains a couple of helper libraries the +# samples use; should you be interested in adding more, just add other +# paths separated by a semicolon. Due to the syntax of the configuration +# file, make sure you escape all semicolons with a trailing slash, in case. +# The 'config' property is entirely script specific, instead: if your +# script will need to rely on an XML configuration file in its initialization, +# for instance, then set the 'config' property as the path to the file; +# it will be passed, as is, to your script in the init() call. None of +# the samples use this property, which is why it's commented out. + +general: { + path = "/usr/share/janus/duktape" + script = "/usr/share/janus/duktape/echotest.js" + #script = "/usr/share/janus/duktape/videoroom.js" + #config = "/path/to/configfile" +} diff --git a/janus/janus.plugin.echotest.jcfg b/janus/janus.plugin.echotest.jcfg new file mode 100644 index 000000000..cfc94d273 --- /dev/null +++ b/janus/janus.plugin.echotest.jcfg @@ -0,0 +1,5 @@ +# events = true|false, whether events should be sent to event handlers + +general: { + #events = false +} diff --git a/janus/janus.plugin.lua.jcfg b/janus/janus.plugin.lua.jcfg new file mode 100644 index 000000000..3438b51d6 --- /dev/null +++ b/janus/janus.plugin.lua.jcfg @@ -0,0 +1,20 @@ +# The only things you configure in here are which lua script to load and, +# optionally, the paths to add for searching libraries and a configuration +# file, if the script will need it. For what concerns the libraries path, +# by default this configuration file adds a path to where the Lua samples +# have been installed, as it contains a couple of helper libraries the +# samples use; should you be interested in adding more, just add other +# paths separated by a semicolon. Due to the syntax of the configuration +# file, make sure you escape all semicolons with a trailing slash, in case. +# The 'config' property is entirely script specific, instead: if your +# script will need to rely on an XML configuration file in its initialization, +# for instance, then set the 'config' property as the path to the file; +# it will be passed, as is, to your script in the init() call. None of +# the samples use this property, which is why it's commented out. + +general: { + path = "/usr/share/janus/lua" + script = "/usr/share/janus/lua/echotest.lua" + #script = "/usr/share/janus/lua/videoroom.lua" + #config = "/path/to/configfile" +} diff --git a/janus/janus.plugin.nosip.jcfg b/janus/janus.plugin.nosip.jcfg new file mode 100644 index 000000000..5d0246b25 --- /dev/null +++ b/janus/janus.plugin.nosip.jcfg @@ -0,0 +1,15 @@ +general: { + # Specify which local IP address to bind to for media. + # If not set it will be automatically guessed from the system + #local_ip = "1.2.3.4" + + # Specify which (public) IP address to advertise in the SDP. + # If not set, the value above or anything autodetected will be used + #sdp_ip = "1.2.3.4" + + # Range of ports to use for RTP/RTCP (default=10000-60000) + rtp_port_range = "20000-40000" + + # Whether events should be sent to event handlers (default=true) + #events = false +} diff --git a/janus/janus.plugin.recordplay.jcfg b/janus/janus.plugin.recordplay.jcfg new file mode 100644 index 000000000..ca6bc763a --- /dev/null +++ b/janus/janus.plugin.recordplay.jcfg @@ -0,0 +1,7 @@ +# path = where to place recordings in the file system +# events = true|false, whether events should be sent to event handlers + +general: { + path = "/usr/share/janus/recordings" + #events = false +} diff --git a/janus/janus.plugin.sip.jcfg b/janus/janus.plugin.sip.jcfg new file mode 100644 index 000000000..a077be62f --- /dev/null +++ b/janus/janus.plugin.sip.jcfg @@ -0,0 +1,31 @@ +general: { + # Specify which local IP address to bind to for SIP stack and media. + # If not set it will be automatically guessed from the system + #local_ip = "1.2.3.4" + + # Specify which (public) IP address to advertise in the SDP. + # If not set, the value above or anything autodetected will be used + #sdp_ip = "1.2.3.4" + + # Enable local keep-alives to keep the registration open. Keep-alives are + # sent in the form of OPTIONS requests, at the given interval inseconds. + # (0 to disable) + keepalive_interval = 120 + + # Indicate if the server is behind NAT. If so, the server will use STUN + # to guess its own public IP address and use it in the Contact header of + # outgoing requests + behind_nat = false + + # User-Agent string to be used + # user_agent = "Cool WebRTC Gateway" + + # Expiration time for registrations + register_ttl = 3600 + + # Range of ports to use for RTP/RTCP (default=10000-60000) + rtp_port_range = "20000-40000" + + # Whether events should be sent to event handlers (default=true) + #events = false +} diff --git a/janus/janus.plugin.sipre.jcfg b/janus/janus.plugin.sipre.jcfg new file mode 100644 index 000000000..194a9c8f3 --- /dev/null +++ b/janus/janus.plugin.sipre.jcfg @@ -0,0 +1,21 @@ +general: { + # Specify which local IP address to bind to for SIP stack and media. + # If not set it will be automatically guessed from the system + #local_ip = "1.2.3.4" + + # Specify which (public) IP address to advertise in the SDP. + # If not set, the value above or anything autodetected will be used + #sdp_ip = "1.2.3.4" + + # User-Agent string to be used + # user_agent = "Cool WebRTC Gateway" + + # Expiration time for registrations + register_ttl = 3600 + + # Range of ports to use for RTP/RTCP (default=10000-60000) + rtp_port_range = "20000-40000" + + # Whether events should be sent to event handlers (default=true) + #events = false +} diff --git a/janus/janus.plugin.streaming.jcfg b/janus/janus.plugin.streaming.jcfg new file mode 100644 index 000000000..1e741a5f0 --- /dev/null +++ b/janus/janus.plugin.streaming.jcfg @@ -0,0 +1,205 @@ +# stream-name: { +# type = rtp|live|ondemand|rtsp +# rtp = stream originated by an external tool (e.g., gstreamer or +# ffmpeg) and sent to the plugin via RTP +# live = local file streamed live to multiple listeners +# (multiple listeners = same streaming context) +# ondemand = local file streamed on-demand to a single listener +# (multiple listeners = different streaming contexts) +# rtsp = stream originated by an external RTSP feed (only +# available if libcurl support was compiled) +# id = (if missing, a random one will be generated) +# description = This is my awesome stream +# is_private = true|false (private streams don't appear when you do a 'list' +# request) +# secret = +# pin = +# filename = path to the local file to stream (only for live/ondemand) +# audio = true|false (do/don't stream audio) +# video = true|false (do/don't stream video) +# The following options are only valid for the 'rtp' type: +# data = true|false (do/don't stream text via datachannels) +# audioport = local port for receiving audio frames +# audiortcpport = local port, if any, for receiving and sending audio RTCP feedback +# audiomcast = multicast group port for receiving audio frames, if any +# audioiface = network interface or IP address to bind to, if any (binds to all otherwise) +# audiopt =