diff --git a/.github/workflows/janus-ci.yml b/.github/workflows/janus-ci.yml index 92e0f8dfb9..a08febe4f1 100644 --- a/.github/workflows/janus-ci.yml +++ b/.github/workflows/janus-ci.yml @@ -2,187 +2,216 @@ name: janus-ci on: push: - branches: [ master ] + branches: + - master + - test-ci pull_request: - branches: [ master ] + branches: + - master permissions: contents: read jobs: build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: compiler: [gcc, clang] - datachannels: ["yes", "no"] - libcurl: ["yes", "no"] + datachannels: ["enable-datachannels", "disable-datachannels"] + libcurl: ["enable-libcurl", "disable-libcurl"] include: - - datachannels: "yes" - libcurl: "yes" + - datachannels: "enable-datachannels" + libcurl: "enable-libcurl" deps_from_src: "yes" janus_config_opts: "" - - datachannels: "yes" - libcurl: "no" + - datachannels: "enable-datachannels" + libcurl: "disable-libcurl" deps_from_src: "no" janus_config_opts: "--disable-aes-gcm -disable-mqtt --disable-mqtt-event-handler --disable-turn-rest-api --disable-sample-event-handler" - - datachannels: "no" - libcurl: "yes" + - datachannels: "disable-datachannels" + libcurl: "enable-libcurl" deps_from_src: "no" janus_config_opts: "--disable-aes-gcm -disable-mqtt --disable-mqtt-event-handler --disable-data-channels" exclude: - - datachannels: "no" - libcurl: "no" + - datachannels: "disable-datachannels" + libcurl: "disable-libcurl" env: - CC: ${{ matrix.compiler }} + CC: ${{ matrix.compiler }} steps: - - name: install janus apt dependencies - run: > - sudo apt-get update && sudo apt-get --no-install-recommends -y install - autoconf - cmake - duktape-dev - gtk-doc-tools - libavcodec-dev - libavformat-dev - libavutil-dev - libcollection-dev - libconfig-dev - libevent-dev - libglib2.0-dev - libgirepository1.0-dev - liblua5.3-dev - libjansson-dev - libmicrohttpd-dev - libmount-dev - libnanomsg-dev - libogg-dev - libopus-dev - librabbitmq-dev - libsofia-sip-ua-dev - libssl-dev - libtool - libvorbis-dev - ninja-build - openssl - - name: setup additional dependencies from apt - if: ${{ matrix.deps_from_src == 'no' }} - run: > - sudo apt-get --no-install-recommends -y install - libnice-dev - libsrtp2-dev - libusrsctp-dev - libwebsockets-dev - - name: install libcurl from apt - if: ${{ matrix.libcurl == 'yes' }} - run: sudo apt-get --no-install-recommends -y install libcurl4-openssl-dev - - name: setup python - if: ${{ matrix.deps_from_src == 'yes' }} - uses: actions/setup-python@v4 - with: - python-version: '3.10' - architecture: 'x64' - - name: install python packages - if: ${{ matrix.deps_from_src == 'yes' }} - run: pip install wheel meson - - name: setup libnice from sources - if: ${{ matrix.deps_from_src == 'yes' }} - run: | - git clone --depth 1 --quiet -b master https://gitlab.freedesktop.org/libnice/libnice.git libnice - pushd libnice - if [ $CC = clang ]; then LNICE_CFLAGS="-Wno-cast-align"; fi; - meson setup -Dprefix=/usr -Dlibdir=lib -Dc_args="$LNICE_CFLAGS" -Ddebug=false -Doptimization=0 -Dexamples=disabled -Dgtk_doc=disabled -Dgupnp=disabled -Dgstreamer=disabled -Dtests=disabled build - ninja -C build - sudo ninja -C build install - - name: checkout libsrtp source - if: ${{ matrix.deps_from_src == 'yes' }} - uses: actions/checkout@v3 - with: - repository: cisco/libsrtp - ref: v2.6.0 - - name: setup libsrtp from sources - if: ${{ matrix.deps_from_src == 'yes' }} - run: | - ./configure --prefix=/usr --enable-openssl - make -j$(nproc) shared_library - sudo make install - - name: checkout usrsctp source - if: ${{ matrix.datachannels == 'yes' && matrix.deps_from_src == 'yes' }} - uses: actions/checkout@v3 - with: - repository: sctplab/usrsctp - ref: master - - name: setup usrsctp from sources - if: ${{ matrix.datachannels == 'yes' && matrix.deps_from_src == 'yes' }} - run: | - ./bootstrap - ./configure --prefix=/usr --disable-static --disable-debug --disable-programs --disable-inet --disable-inet6 - make -j$(nproc) - sudo make install - - name: checkout lws source - if: ${{ matrix.deps_from_src == 'yes' }} - uses: actions/checkout@v3 - with: - repository: warmcat/libwebsockets - ref: v4.3.2 - - name: setup lws from sources - if: ${{ matrix.deps_from_src == 'yes' }} - run: | - mkdir -p build - pushd build - cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLWS_WITH_STATIC=OFF -DLWS_WITHOUT_CLIENT=ON -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITHOUT_TEST_SERVER=ON -DLWS_WITH_HTTP2=OFF .. - make -j$(nproc) - sudo make install - - name: checkout paho-mqtt source - if: ${{ matrix.deps_from_src == 'yes' }} - uses: actions/checkout@v3 - with: - repository: eclipse/paho.mqtt.c - ref: v1.3.12 - - name: setup paho-mqtt from sources - if: ${{ matrix.deps_from_src == 'yes' }} - run: | - cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_SAMPLES=FALSE -DPAHO_BUILD_DOCUMENTATION=FALSE . - make -j$(nproc) - sudo make install - - name: checkout janus source - uses: actions/checkout@v3 - - name: build janus from sources - env: - JANUS_CONFIG_COMMON: "--disable-docs --enable-post-processing --enable-plugin-lua --enable-plugin-duktape --enable-json-logger" - JANUS_CONFIG_OPTS: ${{ matrix.janus_config_opts }} - # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with - # high-entropy ASLR in much newer kernels that GitHub runners are - # using leading to random crashes: https://reviews.llvm.org/D148280 - run: | - sudo sysctl vm.mmap_rnd_bits=28 - ./autogen.sh - ./configure $JANUS_CONFIG_COMMON $JANUS_CONFIG_OPTS - make -j$(nproc) - make check-fuzzers + - name: install janus apt dependencies + run: > + sudo apt-get update && sudo apt-get --no-install-recommends -y install + duktape-dev + libavcodec-dev + libavformat-dev + libavutil-dev + libconfig-dev + libglib2.0-dev + libgirepository1.0-dev + liblua5.3-dev + libjansson-dev + libmicrohttpd-dev + libnanomsg-dev + libogg-dev + libopus-dev + libpcap-dev + librabbitmq-dev + libsofia-sip-ua-dev + libssl-dev + libtool + meson + ninja-build + - name: setup additional dependencies from apt + if: ${{ matrix.deps_from_src == 'no' }} + run: > + sudo apt-get --no-install-recommends -y install + libnice-dev + libsrtp2-dev + libusrsctp-dev + libwebsockets-dev + # Workaround for https://github.com/actions/runner-images/issues/11926 + - name: install cmake v3.31 + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "3.31.6" + - name: install libcurl from apt + if: ${{ matrix.libcurl == 'enable-libcurl' }} + run: sudo apt-get --no-install-recommends -y install libcurl4-openssl-dev + - name: setup python + if: ${{ matrix.deps_from_src == 'yes' }} + uses: actions/setup-python@v5 + with: + python-version: "3.13" + architecture: "x64" + - name: checkout libnice source + if: ${{ matrix.deps_from_src == 'yes' }} + uses: actions/checkout@v4 + with: + repository: libnice/libnice + ref: master + - name: setup libnice from sources + if: ${{ matrix.deps_from_src == 'yes' }} + run: | + meson setup -Dprefix=/usr -Dlibdir=lib -Dc_args="-O0 -Wno-cast-align" \ + -Dexamples=disabled \ + -Dgtk_doc=disabled \ + -Dgstreamer=disabled \ + -Dgupnp=disabled \ + -Dtests=disabled \ + build + ninja -C build + sudo ninja -C build install + - name: checkout libsrtp source + if: ${{ matrix.deps_from_src == 'yes' }} + uses: actions/checkout@v4 + with: + repository: cisco/libsrtp + ref: v2.7.0 + - name: setup libsrtp from sources + if: ${{ matrix.deps_from_src == 'yes' }} + run: | + ./configure --prefix=/usr CFLAGS="-O0" \ + --disable-pcap \ + --enable-openssl + make -j$(nproc) shared_library + sudo make install + - name: checkout usrsctp source + if: ${{ matrix.datachannels == 'enable-datachannels' && matrix.deps_from_src == 'yes' }} + uses: actions/checkout@v4 + with: + repository: sctplab/usrsctp + ref: master + - name: setup usrsctp from sources + if: ${{ matrix.datachannels == 'enable-datachannels' && matrix.deps_from_src == 'yes' }} + run: | + ./bootstrap + ./configure --prefix=/usr CFLAGS="-O0" \ + --disable-debug \ + --disable-inet \ + --disable-inet6 \ + --disable-programs \ + --disable-static \ + --enable-shared + make -j$(nproc) + sudo make install + - name: checkout lws source + if: ${{ matrix.deps_from_src == 'yes' }} + uses: actions/checkout@v4 + with: + repository: warmcat/libwebsockets + ref: v4.3-stable + - name: setup lws from sources + if: ${{ matrix.deps_from_src == 'yes' }} + run: | + mkdir build && cd build + cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_FLAGS="-O0" \ + -DLWS_ROLE_RAW_FILE=OFF \ + -DLWS_WITH_HTTP2=OFF \ + -DLWS_WITHOUT_EXTENSIONS=OFF \ + -DLWS_WITHOUT_TESTAPPS=ON \ + -DLWS_WITHOUT_TEST_CLIENT=ON \ + -DLWS_WITHOUT_TEST_PING=ON \ + -DLWS_WITHOUT_TEST_SERVER=ON \ + -DLWS_WITH_STATIC=OFF \ + .. + make -j$(nproc) + sudo make install + - name: checkout paho-mqtt source + if: ${{ matrix.deps_from_src == 'yes' }} + uses: actions/checkout@v4 + with: + repository: eclipse/paho.mqtt.c + ref: v1.3.14 + - name: setup paho-mqtt from sources + if: ${{ matrix.deps_from_src == 'yes' }} + run: | + mkdir build.paho && cd build.paho + cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_FLAGS="-O0" \ + -DPAHO_HIGH_PERFORMANCE=TRUE \ + -DPAHO_BUILD_DOCUMENTATION=FALSE \ + -DPAHO_BUILD_SAMPLES=FALSE \ + -DPAHO_BUILD_SHARED=TRUE \ + -DPAHO_BUILD_STATIC=FALSE \ + -DPAHO_ENABLE_TESTING=FALSE \ + -DPAHO_WITH_SSL=TRUE \ + .. + make -j$(nproc) + sudo make install + - name: checkout janus source + uses: actions/checkout@v4 + - name: build janus from sources + env: + JANUS_CONFIG_COMMON: "--disable-docs --enable-post-processing --enable-plugin-lua --enable-plugin-duktape --enable-json-logger" + JANUS_CONFIG_OPTS: ${{ matrix.janus_config_opts }} + run: | + ./autogen.sh + ./configure $JANUS_CONFIG_COMMON $JANUS_CONFIG_OPTS CFLAGS="-O0" + make -j$(nproc) + make check-fuzzers javascript-lint: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 - - name: Install modules - run: | - cd npm - npm install - - name: Run ESLint - run: | - cd npm - npm run lint + - uses: actions/checkout@v4 + - name: Install modules + run: | + cd npm + npm install + - name: Run ESLint + run: | + cd npm + npm run lint javascript-dist: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 - - name: Install modules - run: | - cd npm - npm install - - name: Make dist files - run: | - cd npm - npm run prerelease - - uses: actions/upload-artifact@v4 - with: - name: janus.es.js - path: npm/dist/janus.es.js + - uses: actions/checkout@v4 + - name: Install modules + run: | + cd npm + npm install + - name: Make dist files + run: | + cd npm + npm run prerelease + - uses: actions/upload-artifact@v4 + with: + name: janus.es.js + path: npm/dist/janus.es.js diff --git a/.gitignore b/.gitignore index 613c685fa0..5526f4c9d2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ cmdline.c cmdline.h version.c docs/html/ +janus-gateway.pc janus janus-cfgconv @@ -23,6 +24,7 @@ Makefile.in /depcomp /compile /install-sh +/install-sh~ /ltmain.sh /config.log @@ -70,3 +72,4 @@ cov-int .vscode node_modules +.venv diff --git a/CHANGELOG.md b/CHANGELOG.md index 06b587a118..3ef8c06ee5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,91 @@ All notable changes to this project will be documented in this file. +## [v1.4.0] - 2026-02-06 + +- Generate a pkg-config .pc file when installing Janus [[PR-3596](https://github.com/meetecho/janus-gateway/pull/3596)] +- Implemented compound RTCP reports (thanks @addisonpolcyn!) [[PR-3585](https://github.com/meetecho/janus-gateway/pull/3585)] +- Fixed when to negotiate the rtcp-fb transport-cc SDP attribute [[PR-3595](https://github.com/meetecho/janus-gateway/pull/3595)] +- Strip some WebRTC-specific SDP attributes in SIP and NoSIP plugins +- Added RTP forwarders support to SIP and NoSIP plugins (thanks @WebTrit!) [[PR-3583](https://github.com/meetecho/janus-gateway/pull/3583)] +- Fixed subscription renewal possibly going to the wrong host in the SIP plugin (thanks @digiboridev!) [[PR-3602](https://github.com/meetecho/janus-gateway/pull/3602)] +- Laid foundations for plugin-specific unique session ID in SIP and NoSIP plugins [[PR-3607](https://github.com/meetecho/janus-gateway/pull/3607)] +- Fixed 'use-after-free' in SIP session helpers (thanks @oleksandr-mihal-zultys!) [[PR-3613](https://github.com/meetecho/janus-gateway/pull/3613)] +- Fixed SIP plugin not offering SRTP in response to offerless INVITEs [[PR-3618](https://github.com/meetecho/janus-gateway/pull/3618)] +- Added new janus-pp-rec option to ignore RTP headers for timing purposes +- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!) + +## [v1.3.3] - 2025-10-21 + +- Refactored keyframe buffering in Streaming plugin to store following deltas too (thanks [Byborg](https://www.byborgenterprises.com/)!) [[PR-3564](https://github.com/meetecho/janus-gateway/pull/3564)] +- Added optional events for RTSP disconnections/reconnections in the Streaming plugin [[PR-3578](https://github.com/meetecho/janus-gateway/pull/3578)] +- Fixed rare crash when reconnecting to RTSP servers in the Streaming plugin [[PR-3580](https://github.com/meetecho/janus-gateway/pull/3580)] +- Fixed small leak when recording Streaming mountpoints +- Fixed memory leak when stopping non-existing forwarders in the VideoRoom plugin +- Fixed rare crash in AudioBridge when notifying participants [[PR-3589](https://github.com/meetecho/janus-gateway/pull/3589)] +- Fixed payload type when RTP-forwarding AudioBridge rooms using G.711 +- Added option for managing ringing manually in the SIP plugin (thanks @adnanel!) [[PR-3556](https://github.com/meetecho/janus-gateway/pull/3556)] +- Save custom headers and send them on SIP hangup event (thanks @kenangenjac!) [[PR-3558](https://github.com/meetecho/janus-gateway/pull/3558)] +- Fix small memory leak in SIP plugin (thanks @oleksandr-mihal-zultys!) [[PR-3565](3565)] +- Added support for Linux cooked capture v2 to pcap2mjr +- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!) + +## [v1.3.2] - 2025-07-10 + +- Added workaround to potential libnice issue +- Deprecated nice_debug option (libnice debugging can be enabled via env variables) [[PR-3546](https://github.com/meetecho/janus-gateway/pull/3546)] +- Fixed broken session count in case of timeouts [[Issue-3526](https://github.com/meetecho/janus-gateway/issues/3526)] +- Fixed broken session count in case of API disconnections [[Issue-3532](https://github.com/meetecho/janus-gateway/issues/3532)] +- Added experimental support for the video-layers-allocation extension [PR-3504](https://github.com/meetecho/janus-gateway/pull/3504)] +- Added optional signal handler for log rotation [[PR-3550](https://github.com/meetecho/janus-gateway/pull/3550)] +- Fixed memory leaks when using dummy publishers [[PR-3541](https://github.com/meetecho/janus-gateway/pull/3541)] +- New options to advertise VideoRoom dummy publishers as e2ee [[PR-3553](https://github.com/meetecho/janus-gateway/pull/3553)] +- Fixed rare crash when using remote publishers in VideoRoom [[PR-3557](https://github.com/meetecho/janus-gateway/pull/3557)] +- Added request to stop all AudioBridge announcements in a room (thanks @keremcadirci!) [[PR-3403](https://github.com/meetecho/janus-gateway/pull/3403)] +- Allow plain RTP participants in AudioBridge to use generate_offer too [[PR-3534](https://github.com/meetecho/janus-gateway/pull/3534)] +- Fixed breaking condition in AudioBridge +- Fixed broken canvas demo [[Issue-3527](https://github.com/meetecho/janus-gateway/issues/3527)] +- Fixed broken multiopus demo +- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!) + +## [v1.3.1] - 2025-03-05 + +- Make ip-utils aware of 0.0.0.0 and :: [[Issue-3470](https://github.com/meetecho/janus-gateway/issues/3470)] +- Optimize NACKs handling [[PR-3491](https://github.com/meetecho/janus-gateway/pull/3491)] +- Skip medium lookup when relaying RTCP by plugins to fix rare deadlock [[PR-3515](https://github.com/meetecho/janus-gateway/pull/3515)] +- Fixed FEC and DTX negotiated in VideoRoom also when not enabled in the room settings +- Fixed memory leak in VideoRoom (thanks @m08pvv!) [[PR-3493](https://github.com/meetecho/janus-gateway/pull/3493)] +- Fixed broken recordings when using remote publishers in the VideoRoom [[PR-3509](https://github.com/meetecho/janus-gateway/pull/3509)] +- Check if IPv6 is disabled when loading the Streaming plugin [[PR-3519](https://github.com/meetecho/janus-gateway/pull/3519)] +- Fixed SSRC not being set to a default value in AudioBridge forwarders when not explicitly set in the request +- Add support for "progress" request on SIP Plugin (thanks @adnan-mujagic!) [[PR-3466](https://github.com/meetecho/janus-gateway/pull/3466)] +- New programmatic API to ask for keyframes in SIP and NoSIP plugins [[PR-3517](https://github.com/meetecho/janus-gateway/pull/3517)] +- Fixed missing libcurl linking in TextRoom plugin +- Added support for private recordings in Record&Play [[PR-3518](https://github.com/meetecho/janus-gateway/pull/3518)] +- Fixed leak in recorder when adding descriptions (thanks @m08pvv!) [[PR-3487](https://github.com/meetecho/janus-gateway/pull/3487)] +- Fixed WebSocket transport binding to the wrong IP address in particular setups [[Issue-3500](https://github.com/meetecho/janus-gateway/issues/3550)] +- Improve DTX detection in janus-pp-rec [[PR-3488](#3488)] +- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!) + +## [v1.3.0] - 2024-11-25 + +- Refactored logging internals [[PR-3428](https://github.com/meetecho/janus-gateway/pull/3428)] +- Use strtok to parse SDPs [[PR-3424](https://github.com/meetecho/janus-gateway/pull/3424)] +- Fixed rare condition that could lead to a deadlock in the VideoRoom [[PR-3446](https://github.com/meetecho/janus-gateway/pull/3446)] +- Fixed broken switch when using remote publishers in VideoRoom [[PR-3447](https://github.com/meetecho/janus-gateway/pull/3447)] +- Added SRTP support to VideoRoom remote publishers (thanks @spscream!) [[PR-3449](https://github.com/meetecho/janus-gateway/pull/3449)] +- Added support for generic JSON metadata to VideoRoom publishers (thanks @spscream!) [[PR-3467](https://github.com/meetecho/janus-gateway/pull/3467)] +- Fixed deadlock in VideoRoom when failing to open a socket for a new RTP forwarder (thanks @spscream!) [[PR-3468](https://github.com/meetecho/janus-gateway/pull/3468)] +- Fixed deadlock in VideoRoom caused by reverse ordering of mutex locks [[PR-3474](https://github.com/meetecho/janus-gateway/pull/3474)] +- Fixed memory leaks when using remote publishers in VideoRoom [[PR-3475](https://github.com/meetecho/janus-gateway/pull/3475)] +- Diluted frequency of PLI in the VideoRoom (thanks @natikaltura!) [[PR-3423](https://github.com/meetecho/janus-gateway/pull/3423)] +- Better cleanup after failed mountpoint creations in Streaming plugin [[PR-3465](https://github.com/meetecho/janus-gateway/pull/3465)] +- Fixed compilation of AudioBridge in case libogg isn't available (thanks @tmatth!) [[PR-3438](https://github.com/meetecho/janus-gateway/pull/3438)] +- Better management of call cleanup in SIP plugin [[Issue-3430](https://github.com/meetecho/janus-gateway/issues/3430)] +- Change the way call-IDs are tracked in the SIP plugin (thanks WebTrit!) [[PR-3443](https://github.com/meetecho/janus-gateway/pull/3443)] +- Increased maximum size of custom SIP headers [[Issue-3459](https://github.com/meetecho/janus-gateway/issues/3459)] +- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!) + ## [v1.2.4] - 2024-09-10 - Limit number of SDP lines when parsing (workaround for OSS-Fuzz issue) [[PR-3414](https://github.com/meetecho/janus-gateway/pull/3414)] diff --git a/Makefile.am b/Makefile.am index f6099ef47e..9d4daa23f9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -46,6 +46,16 @@ EXTRA_DIST += conf/janus.jcfg.sample.in CLEANFILES += conf/janus.jcfg.sample +## +# pkg-config file +## + +EXTRA_DIST = janus-gateway.pc.in +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = janus-gateway.pc +DISTCLEANFILES = janus-gateway.pc + + ## # Fuzzers checking ## diff --git a/README.md b/README.md index d8e9960017..aea2520e8c 100644 --- a/README.md +++ b/README.md @@ -99,18 +99,14 @@ If you want to make use of BoringSSL instead of OpenSSL (e.g., because you want # Build mkdir -p build cd build - cmake -DCMAKE_CXX_FLAGS="-lrt" .. + cmake -DCMAKE_INSTALL_PREFIX=/opt/boringssl -DCMAKE_CXX_FLAGS="-lrt" .. make - cd .. - # Install - sudo mkdir -p /opt/boringssl - sudo cp -R include /opt/boringssl/ - sudo mkdir -p /opt/boringssl/lib - sudo cp build/ssl/libssl.a /opt/boringssl/lib/ - sudo cp build/crypto/libcrypto.a /opt/boringssl/lib/ + sudo make install Once the library is installed, you'll have to pass an additional `--enable-boringssl` flag to the configure script, as by default Janus will be built assuming OpenSSL will be used. By default, Janus expects BoringSSL to be installed in `/opt/boringssl` -- if it's installed in another location, pass the path to the configure script as such: `--enable-boringssl=/path/to/boringssl` If you were using OpenSSL and want to switch to BoringSSL, make sure you also do a `make clean` in the Janus folder before compiling with the new BoringSSL support. If you enabled BoringSSL support and also want Janus to detect and react to DTLS timeouts with faster retransmissions, then pass `--enable-dtls-settimeout` to the configure script too. +* *Note:* as explained in [this issue](https://github.com/meetecho/janus-gateway/issues/3456), building Janus with more recent versions of BoringSSL may require you to pass a `CCLD=c++` for any `make` command to build Janus itself. + For what concerns usrsctp, which is needed for Data Channels support, it is usually not available in repositories, so if you're interested in them (support is optional) you'll have to install it manually. It is a pretty easy and standard process: git clone https://github.com/sctplab/usrsctp @@ -289,8 +285,6 @@ or on the command line: (experimental) (default=off) -O, --ipv6-link-local Whether IPv6 link-local candidates should be gathered as well (default=off) - -l, --libnice-debug Whether to enable libnice debugging or not - (default=off) -f, --full-trickle Do full-trickle instead of half-trickle (default=off) -I, --ice-lite Whether to enable the ICE Lite mode or not diff --git a/bower.json b/bower.json index 0651c9f402..f221f3b1a1 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "janus-gateway", - "version": "1.3.0", + "version": "1.4.0", "homepage": "https://github.com/meetecho/janus-gateway", "authors": [ "Lorenzo Miniero ", @@ -33,6 +33,6 @@ "tests" ], "dependencies": { - "webrtc-adapter": "8.2.3" + "webrtc-adapter": "9.0.3" } } diff --git a/conf/janus.eventhandler.sampleevh.jcfg.sample b/conf/janus.eventhandler.sampleevh.jcfg.sample index d32b7a5554..9d6aaec30e 100644 --- a/conf/janus.eventhandler.sampleevh.jcfg.sample +++ b/conf/janus.eventhandler.sampleevh.jcfg.sample @@ -12,7 +12,7 @@ general: { 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. + # The default is 'true' to limit the number of connections. json = "indented" # Whether the JSON messages should be indented (default), # plain (no indentation) or compact (no indentation and no spaces) diff --git a/conf/janus.jcfg.sample.in b/conf/janus.jcfg.sample.in index 02f3d91bc9..e13ac47064 100644 --- a/conf/janus.jcfg.sample.in +++ b/conf/janus.jcfg.sample.in @@ -14,6 +14,10 @@ general: { #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 + #log_rotate_sig = "SIGUSR1" # Signal to handle for log rotation, valid values + # are "SIGUSR1" and "SIGHUP". + # Default is no setting, which disables the + # signal handler for log rotation. 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 @@ -281,12 +285,11 @@ media: { # sticking to 0.1.18 until the issue is addressed upstream). Finally, # you can also enable ICE-TCP support (beware that this may lead to problems # if you do not enable ICE Lite as well), choose which interfaces should -# be used for gathering candidates, and enable or disable the -# internal libnice debugging, if needed. +# be used for gathering candidates. nat: { #stun_server = "stun.voip.eutelia.it" #stun_port = 3478 - nice_debug = false + #nice_debug = "nice_debug option is NOT SUPPORTED ANYMORE! Please set NICE_DEBUG and G_MESSAGES_DEBUG env vars when starting Janus" #full_trickle = true #ice_nomination = "regular" #ice_consent_freshness = true @@ -437,12 +440,12 @@ loggers: { # 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 +# the feature is disabled by default. Setting 'broadcast' to 'true' 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 +# broadcast is set to 'true' 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 @@ -453,7 +456,7 @@ loggers: { # not other media-related events). By default Janus sends single media # statistic events per media (audio, video and simulcast layers as separate # events): if you'd rather receive a single containing all media stats in a -# single array, set 'combine_media_stats' to true. +# single array, set 'combine_media_stats' to 'true'. events: { #broadcast = true #combine_media_stats = true diff --git a/conf/janus.plugin.recordplay.jcfg.sample.in b/conf/janus.plugin.recordplay.jcfg.sample.in index a15d1b6c31..cd4278c92d 100644 --- a/conf/janus.plugin.recordplay.jcfg.sample.in +++ b/conf/janus.plugin.recordplay.jcfg.sample.in @@ -1,7 +1,14 @@ # path = where to place recordings in the file system +# admin_key = plugin management secret; if set, private recordings can +# be listed only if this key is provided in the request +# private = true|false, whether recordings should be marked as private by +# default, meaning they're not returned to users connecting to the +# plugin unless they provide the right 'admin_key' in the request # events = true|false, whether events should be sent to event handlers general: { path = "@recordingsdir@" + #admin_key = "supersecret" + #private = true #events = false } diff --git a/conf/janus.plugin.streaming.jcfg.sample.in b/conf/janus.plugin.streaming.jcfg.sample.in index ea52b7b5f5..b56f89ddfc 100644 --- a/conf/janus.plugin.streaming.jcfg.sample.in +++ b/conf/janus.plugin.streaming.jcfg.sample.in @@ -1,3 +1,14 @@ +# You can configure static mountpoints that should be made available +# when Janus starts in this configuration file. The syntax and the +# available properties are listed below. Notice that, for the sake of +# simplicity, only the global and legacy properties are listed in the +# following text: you can use the new stream-based syntax as well (see +# the 'multistream-test' example below for reference), but in that case +# all properties whose names start with audio/video/data should be +# renamed to have that prefix removed. Please refer to the Streaming +# plugin documentation for more details, as the static configuration +# in that case mirrors the dynamic API syntax. +# # stream-name: { # type = rtp|live|ondemand|rtsp # rtp = stream originated by an external tool (e.g., gstreamer or @@ -36,8 +47,6 @@ # videoiface = network interface or IP address to bind to, if any (binds to all otherwise) # videopt =