initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
From 4b02c8207adb888d35951bbc1c5b3029594f44c6 Mon Sep 17 00:00:00 2001
|
||||
From: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
Date: Wed, 24 Apr 2019 13:56:27 -0400
|
||||
Subject: [PATCH] Do not force SSP usage
|
||||
|
||||
The toolchain may not support SSP, so do not enforce its usage, let
|
||||
the package user pass the appropriate CFLAGS to enable SSP if needed.
|
||||
|
||||
Signed-off-by: Gregory Dymarek <gregd72002@gmail.com>
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
(rebased against v0.1.0)
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
(rebased against v0.6.3)
|
||||
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
|
||||
---
|
||||
configure.ac | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 257ea8c..ca17a29 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -20,7 +20,6 @@ LT_INIT
|
||||
# Common CFLAGS
|
||||
CFLAGS="$CFLAGS \
|
||||
-fPIC \
|
||||
- -fstack-protector-all \
|
||||
-fstrict-aliasing \
|
||||
-ggdb3 \
|
||||
-pthread \
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
From c0f075bdee5edabf8f19b68e0880fbd249a89653 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Sat, 3 Jan 2015 15:09:59 +0100
|
||||
Subject: [PATCH] Add test for -Wunused-but-set-variable
|
||||
|
||||
The -Wunused-but-set-variable option does not exist in some old gcc
|
||||
versions (gcc 4.5.x), so using it unconditionally breaks the build
|
||||
with such compilers.
|
||||
|
||||
This commit introduces the AX_CHECK_COMPILE_FLAG m4 macro taken from
|
||||
the autoconf-archive
|
||||
(http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_compile_flag.m4),
|
||||
and uses it to detect if the -Wunused-but-set-variable option is
|
||||
supported, and only uses it in this case.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
(rebased against v0.1.0)
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
(rebased against v0.6.3)
|
||||
Signed-off-by: Adam Duskett <Aduskett@gmail.com>
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
configure.ac | 6 ++-
|
||||
m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 79 insertions(+), 2 deletions(-)
|
||||
create mode 100644 m4/ax_check_compile_flag.m4
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index f961fdb..3ddbe59 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -151,6 +151,7 @@ janus_CFLAGS = \
|
||||
-DEVENTDIR=\"$(eventdir)\" \
|
||||
-DLOGGERDIR=\"$(loggerdir)\" \
|
||||
-DCONFDIR=\"$(confdir)\" \
|
||||
+ @GCC_WARN_UNUSED_BUT_SET@ \
|
||||
$(BORINGSSL_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ca17a29..beef91a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -13,6 +13,9 @@ AM_SILENT_RULES([yes])
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
AC_PROG_CC
|
||||
+AX_CHECK_COMPILE_FLAG([-Wunused-but-set-variable],
|
||||
+ [GCC_WARN_UNUSED_BUT_SET=-Wunused-but-set-variable])
|
||||
+AC_SUBST(GCC_WARN_UNUSED_BUT_SET)
|
||||
|
||||
LT_PREREQ([2.2])
|
||||
LT_INIT
|
||||
@@ -64,8 +67,7 @@ clang*)
|
||||
CFLAGS="$CFLAGS \
|
||||
-Wcast-align \
|
||||
-Wno-override-init \
|
||||
- -Wunsafe-loop-optimizations \
|
||||
- -Wunused-but-set-variable"
|
||||
+ -Wunsafe-loop-optimizations"
|
||||
esac
|
||||
|
||||
JANUS_VERSION=103
|
||||
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
|
||||
new file mode 100644
|
||||
index 0000000..51df0c0
|
||||
--- /dev/null
|
||||
+++ b/m4/ax_check_compile_flag.m4
|
||||
@@ -0,0 +1,74 @@
|
||||
+# ===========================================================================
|
||||
+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
+# ===========================================================================
|
||||
+#
|
||||
+# SYNOPSIS
|
||||
+#
|
||||
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
+#
|
||||
+# DESCRIPTION
|
||||
+#
|
||||
+# Check whether the given FLAG works with the current language's compiler
|
||||
+# or gives an error. (Warnings, however, are ignored)
|
||||
+#
|
||||
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
+# success/failure.
|
||||
+#
|
||||
+# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
+# force the compiler to issue an error when a bad flag is given.
|
||||
+#
|
||||
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
+#
|
||||
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
+#
|
||||
+# LICENSE
|
||||
+#
|
||||
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
+#
|
||||
+# This program is free software: you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU General Public License as published by the
|
||||
+# Free Software Foundation, either version 3 of the License, or (at your
|
||||
+# option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful, but
|
||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
+# Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License along
|
||||
+# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+#
|
||||
+# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
+# gives unlimited permission to copy, distribute and modify the configure
|
||||
+# scripts that are the output of Autoconf when processing the Macro. You
|
||||
+# need not follow the terms of the GNU General Public License when using
|
||||
+# or distributing such scripts, even though portions of the text of the
|
||||
+# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
+# all other use of the material that constitutes the Autoconf Macro.
|
||||
+#
|
||||
+# This special exception to the GPL applies to versions of the Autoconf
|
||||
+# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
+# modified version of the Autoconf Macro, you may extend this special
|
||||
+# exception to the GPL to apply to your modified version as well.
|
||||
+
|
||||
+#serial 3
|
||||
+
|
||||
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
+ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
+ [AS_VAR_SET(CACHEVAR,[yes])],
|
||||
+ [AS_VAR_SET(CACHEVAR,[no])])
|
||||
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
+ [m4_default([$2], :)],
|
||||
+ [m4_default([$3], :)])
|
||||
+AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
+])dnl AX_CHECK_COMPILE_FLAGS
|
||||
--
|
||||
2.20.1
|
||||
|
||||
+357
@@ -0,0 +1,357 @@
|
||||
From ba166e9adebfe5343f826c6a9e02299d35414ffd Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Miniero <lminiero@gmail.com>
|
||||
Date: Thu, 25 Nov 2021 17:20:53 +0100
|
||||
Subject: [PATCH] Fix potential Cross-site Scripting (XSS) exploits in demos
|
||||
(#2817)
|
||||
|
||||
[Retrieved (and backported) from:
|
||||
https://github.com/meetecho/janus-gateway/commit/ba166e9adebfe5343f826c6a9e02299d35414ffd]
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
---
|
||||
html/audiobridgetest.js | 17 +++++++++++++----
|
||||
html/recordplaytest.js | 13 +++++++++++--
|
||||
html/screensharingtest.js | 11 ++++++++++-
|
||||
html/streamingtest.js | 13 +++++++++++--
|
||||
html/textroomtest.js | 23 ++++++++++++++---------
|
||||
html/videocalltest.js | 15 ++++++++++++---
|
||||
html/videoroomtest.js | 13 +++++++++++--
|
||||
html/vp9svctest.js | 13 +++++++++++--
|
||||
8 files changed, 93 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/html/audiobridgetest.js b/html/audiobridgetest.js
|
||||
index 18e1cc1839..f757789708 100644
|
||||
--- a/html/audiobridgetest.js
|
||||
+++ b/html/audiobridgetest.js
|
||||
@@ -178,7 +178,7 @@ $(document).ready(function() {
|
||||
Janus.debug("Got a list of participants:", list);
|
||||
for(var f in list) {
|
||||
var id = list[f]["id"];
|
||||
- var display = list[f]["display"];
|
||||
+ var display = escapeXmlTags(list[f]["display"]);
|
||||
var setup = list[f]["setup"];
|
||||
var muted = list[f]["muted"];
|
||||
var spatial = list[f]["spatial_position"];
|
||||
@@ -222,7 +222,7 @@ $(document).ready(function() {
|
||||
Janus.debug("Got a list of participants:", list);
|
||||
for(var f in list) {
|
||||
var id = list[f]["id"];
|
||||
- var display = list[f]["display"];
|
||||
+ var display = escapeXmlTags(list[f]["display"]);
|
||||
var setup = list[f]["setup"];
|
||||
var muted = list[f]["muted"];
|
||||
var spatial = list[f]["spatial_position"];
|
||||
@@ -267,7 +267,7 @@ $(document).ready(function() {
|
||||
Janus.debug("Got a list of participants:", list);
|
||||
for(var f in list) {
|
||||
var id = list[f]["id"];
|
||||
- var display = list[f]["display"];
|
||||
+ var display = escapeXmlTags(list[f]["display"]);
|
||||
var setup = list[f]["setup"];
|
||||
var muted = list[f]["muted"];
|
||||
var spatial = list[f]["spatial_position"];
|
||||
@@ -429,7 +429,7 @@ function registerUsername() {
|
||||
return;
|
||||
}
|
||||
var register = { request: "join", room: myroom, display: username };
|
||||
- myusername = username;
|
||||
+ myusername = escapeXmlTags(username);
|
||||
mixertest.send({ message: register});
|
||||
}
|
||||
}
|
||||
@@ -448,3 +448,12 @@ function getQueryStringValue(name) {
|
||||
results = regex.exec(location.search);
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
+
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/html/recordplaytest.js b/html/recordplaytest.js
|
||||
index 74ee7bed95..52b5ccbc4c 100644
|
||||
--- a/html/recordplaytest.js
|
||||
+++ b/html/recordplaytest.js
|
||||
@@ -423,11 +423,11 @@ function updateRecsList() {
|
||||
Janus.debug("Got a list of available recordings:", list);
|
||||
for(var mp in list) {
|
||||
Janus.debug(" >> [" + list[mp]["id"] + "] " + list[mp]["name"] + " (" + list[mp]["date"] + ")");
|
||||
- $('#recslist').append("<li><a href='#' id='" + list[mp]["id"] + "'>" + list[mp]["name"] + " [" + list[mp]["date"] + "]" + "</a></li>");
|
||||
+ $('#recslist').append("<li><a href='#' id='" + list[mp]["id"] + "'>" + escapeXmlTags(list[mp]["name"]) + " [" + list[mp]["date"] + "]" + "</a></li>");
|
||||
}
|
||||
$('#recslist a').unbind('click').click(function() {
|
||||
selectedRecording = $(this).attr("id");
|
||||
- selectedRecordingInfo = $(this).text();
|
||||
+ selectedRecordingInfo = escapeXmlTags($(this).text());
|
||||
$('#recset').html($(this).html()).parent().removeClass('open');
|
||||
$('#play').removeAttr('disabled').click(startPlayout);
|
||||
return false;
|
||||
@@ -545,3 +545,12 @@ function getQueryStringValue(name) {
|
||||
results = regex.exec(location.search);
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
+
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/html/screensharingtest.js b/html/screensharingtest.js
|
||||
index 61eac70f43..c64d8dbd67 100644
|
||||
--- a/html/screensharingtest.js
|
||||
+++ b/html/screensharingtest.js
|
||||
@@ -161,7 +161,7 @@ $(document).ready(function() {
|
||||
if(event === "joined") {
|
||||
myid = msg["id"];
|
||||
$('#session').html(room);
|
||||
- $('#title').html(msg["description"]);
|
||||
+ $('#title').html(escapeXmlTags(msg["description"]));
|
||||
Janus.log("Successfully joined room " + msg["room"] + " with ID " + myid);
|
||||
if(role === "publisher") {
|
||||
// This is our session, publish our stream
|
||||
@@ -514,3 +514,12 @@ function newRemoteFeed(id, display) {
|
||||
}
|
||||
});
|
||||
}
|
||||
+
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/html/streamingtest.js b/html/streamingtest.js
|
||||
index 7dd2e1f681..3f9937f11c 100644
|
||||
--- a/html/streamingtest.js
|
||||
+++ b/html/streamingtest.js
|
||||
@@ -323,7 +323,7 @@ function updateStreamsList() {
|
||||
Janus.debug(list);
|
||||
for(var mp in list) {
|
||||
Janus.debug(" >> [" + list[mp]["id"] + "] " + list[mp]["description"] + " (" + list[mp]["type"] + ")");
|
||||
- $('#streamslist').append("<li><a href='#' id='" + list[mp]["id"] + "'>" + list[mp]["description"] + " (" + list[mp]["type"] + ")" + "</a></li>");
|
||||
+ $('#streamslist').append("<li><a href='#' id='" + list[mp]["id"] + "'>" + escapeXmlTags(list[mp]["description"]) + " (" + list[mp]["type"] + ")" + "</a></li>");
|
||||
}
|
||||
$('#streamslist a').unbind('click').click(function() {
|
||||
selectedStream = $(this).attr("id");
|
||||
@@ -345,7 +345,7 @@ function getStreamInfo() {
|
||||
var body = { request: "info", id: parseInt(selectedStream) || selectedStream };
|
||||
streaming.send({ message: body, success: function(result) {
|
||||
if(result && result.info && result.info.metadata) {
|
||||
- $('#metadata').html(result.info.metadata);
|
||||
+ $('#metadata').html(escapeXmlTags(result.info.metadata));
|
||||
$('#info').removeClass('hide').show();
|
||||
}
|
||||
}});
|
||||
@@ -394,6 +394,15 @@ function stopStream() {
|
||||
simulcastStarted = false;
|
||||
}
|
||||
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
// Helpers to create Simulcast-related UI, if enabled
|
||||
function addSimulcastButtons() {
|
||||
$('#curres').parent().append(
|
||||
diff --git a/html/textroomtest.js b/html/textroomtest.js
|
||||
index 082ae44905..3d0697e35a 100644
|
||||
--- a/html/textroomtest.js
|
||||
+++ b/html/textroomtest.js
|
||||
@@ -153,9 +153,7 @@ $(document).ready(function() {
|
||||
var what = json["textroom"];
|
||||
if(what === "message") {
|
||||
// Incoming message: public or private?
|
||||
- var msg = json["text"];
|
||||
- msg = msg.replace(new RegExp('<', 'g'), '<');
|
||||
- msg = msg.replace(new RegExp('>', 'g'), '>');
|
||||
+ var msg = escapeXmlTags(json["text"]);
|
||||
var from = json["from"];
|
||||
var dateString = getDateString(json["date"]);
|
||||
var whisper = json["whisper"];
|
||||
@@ -170,9 +168,7 @@ $(document).ready(function() {
|
||||
}
|
||||
} else if(what === "announcement") {
|
||||
// Room announcement
|
||||
- var msg = json["text"];
|
||||
- msg = msg.replace(new RegExp('<', 'g'), '<');
|
||||
- msg = msg.replace(new RegExp('>', 'g'), '>');
|
||||
+ var msg = escapeXmlTags(json["text"]);
|
||||
var dateString = getDateString(json["date"]);
|
||||
$('#chatroom').append('<p style="color: purple;">[' + dateString + '] <i>' + msg + '</i>');
|
||||
$('#chatroom').get(0).scrollTop = $('#chatroom').get(0).scrollHeight;
|
||||
@@ -180,7 +176,7 @@ $(document).ready(function() {
|
||||
// Somebody joined
|
||||
var username = json["username"];
|
||||
var display = json["display"];
|
||||
- participants[username] = display ? display : username;
|
||||
+ participants[username] = escapeXmlTags(display ? display : username);
|
||||
if(username !== myid && $('#rp' + username).length === 0) {
|
||||
// Add to the participants list
|
||||
$('#list').append('<li id="rp' + username + '" class="list-group-item">' + participants[username] + '</li>');
|
||||
@@ -282,7 +278,7 @@ function registerUsername() {
|
||||
username: myid,
|
||||
display: username
|
||||
};
|
||||
- myusername = username;
|
||||
+ myusername = escapeXmlTags(username);
|
||||
transactions[transaction] = function(response) {
|
||||
if(response["textroom"] === "error") {
|
||||
// Something went wrong
|
||||
@@ -312,7 +308,7 @@ function registerUsername() {
|
||||
if(response.participants && response.participants.length > 0) {
|
||||
for(var i in response.participants) {
|
||||
var p = response.participants[i];
|
||||
- participants[p.username] = p.display ? p.display : p.username;
|
||||
+ participants[p.username] = escapeXmlTags(p.display ? p.display : p.username);
|
||||
if(p.username !== myid && $('#rp' + p.username).length === 0) {
|
||||
// Add to the participants list
|
||||
$('#list').append('<li id="rp' + p.username + '" class="list-group-item">' + participants[p.username] + '</li>');
|
||||
@@ -418,3 +414,12 @@ function getQueryStringValue(name) {
|
||||
results = regex.exec(location.search);
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
+
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/html/videocalltest.js b/html/videocalltest.js
|
||||
index d1c1ab8d07..18ccbc2c47 100644
|
||||
--- a/html/videocalltest.js
|
||||
+++ b/html/videocalltest.js
|
||||
@@ -148,7 +148,7 @@ $(document).ready(function() {
|
||||
} else if(result["event"]) {
|
||||
var event = result["event"];
|
||||
if(event === 'registered') {
|
||||
- myusername = result["username"];
|
||||
+ myusername = escapeXmlTags(result["username"]);
|
||||
Janus.log("Successfully registered as " + myusername + "!");
|
||||
$('#youok').removeClass('hide').show().html("Registered as '" + myusername + "'");
|
||||
// Get a list of available peers, just for fun
|
||||
@@ -163,7 +163,7 @@ $(document).ready(function() {
|
||||
bootbox.alert("Waiting for the peer to answer...");
|
||||
} else if(event === 'incomingcall') {
|
||||
Janus.log("Incoming call from " + result["username"] + "!");
|
||||
- yourusername = result["username"];
|
||||
+ yourusername = escapeXmlTags(result["username"]);
|
||||
// Notify user
|
||||
bootbox.hideAll();
|
||||
incoming = bootbox.dialog({
|
||||
@@ -213,7 +213,7 @@ $(document).ready(function() {
|
||||
});
|
||||
} else if(event === 'accepted') {
|
||||
bootbox.hideAll();
|
||||
- var peer = result["username"];
|
||||
+ var peer = escapeXmlTags(result["username"]);
|
||||
if(!peer) {
|
||||
Janus.log("Call started!");
|
||||
} else {
|
||||
@@ -598,6 +598,15 @@ function getQueryStringValue(name) {
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
// Helpers to create Simulcast-related UI, if enabled
|
||||
function addSimulcastButtons(temporal) {
|
||||
$('#curres').parent().append(
|
||||
diff --git a/html/videoroomtest.js b/html/videoroomtest.js
|
||||
index 6a566891d8..5a3ade9be9 100644
|
||||
--- a/html/videoroomtest.js
|
||||
+++ b/html/videoroomtest.js
|
||||
@@ -400,7 +400,7 @@ function registerUsername() {
|
||||
ptype: "publisher",
|
||||
display: username
|
||||
};
|
||||
- myusername = username;
|
||||
+ myusername = escapeXmlTags(username);
|
||||
sfutest.send({ message: register });
|
||||
}
|
||||
}
|
||||
@@ -530,7 +530,7 @@ function newRemoteFeed(id, display, audio, video) {
|
||||
}
|
||||
}
|
||||
remoteFeed.rfid = msg["id"];
|
||||
- remoteFeed.rfdisplay = msg["display"];
|
||||
+ remoteFeed.rfdisplay = escapeXmlTags(msg["display"]);
|
||||
if(!remoteFeed.spinner) {
|
||||
var target = document.getElementById('videoremote'+remoteFeed.rfindex);
|
||||
remoteFeed.spinner = new Spinner({top:100}).spin(target);
|
||||
@@ -685,6 +685,15 @@ function getQueryStringValue(name) {
|
||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
// Helpers to create Simulcast-related UI, if enabled
|
||||
function addSimulcastButtons(feed, temporal) {
|
||||
var index = feed;
|
||||
diff --git a/html/vp9svctest.js b/html/vp9svctest.js
|
||||
index eca0239c32..b22ccf3340 100644
|
||||
--- a/html/vp9svctest.js
|
||||
+++ b/html/vp9svctest.js
|
||||
@@ -387,7 +387,7 @@ function registerUsername() {
|
||||
ptype: "publisher",
|
||||
display: username
|
||||
};
|
||||
- myusername = username;
|
||||
+ myusername = escapeXmlTags(username);
|
||||
sfutest.send({ message: register });
|
||||
}
|
||||
}
|
||||
@@ -486,7 +486,7 @@ function newRemoteFeed(id, display, audio, video) {
|
||||
}
|
||||
}
|
||||
remoteFeed.rfid = msg["id"];
|
||||
- remoteFeed.rfdisplay = msg["display"];
|
||||
+ remoteFeed.rfdisplay = escapeXmlTags(msg["display"]);
|
||||
if(!remoteFeed.spinner) {
|
||||
var target = document.getElementById('videoremote'+remoteFeed.rfindex);
|
||||
remoteFeed.spinner = new Spinner({top:100}).spin(target);
|
||||
@@ -630,6 +630,15 @@ function newRemoteFeed(id, display, audio, video) {
|
||||
});
|
||||
}
|
||||
|
||||
+// Helper to escape XML tags
|
||||
+function escapeXmlTags(value) {
|
||||
+ if(value) {
|
||||
+ var escapedValue = value.replace(new RegExp('<', 'g'), '<');
|
||||
+ escapedValue = escapedValue.replace(new RegExp('>', 'g'), '>');
|
||||
+ return escapedValue;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
// Helpers to create SVC-related UI for a new viewer
|
||||
function addSvcButtons(feed) {
|
||||
var index = feed;
|
||||
@@ -0,0 +1,99 @@
|
||||
menuconfig BR2_PACKAGE_JANUS_GATEWAY
|
||||
bool "janus-gateway"
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
|
||||
depends on BR2_USE_WCHAR # libnice -> libglib2
|
||||
depends on BR2_USE_MMU # libnice
|
||||
depends on !BR2_STATIC_LIBS # dlopen
|
||||
select BR2_PACKAGE_JANSSON
|
||||
select BR2_PACKAGE_LIBCONFIG
|
||||
select BR2_PACKAGE_LIBGLIB2
|
||||
select BR2_PACKAGE_LIBNICE
|
||||
select BR2_PACKAGE_LIBSRTP
|
||||
select BR2_PACKAGE_OPENSSL
|
||||
help
|
||||
Janus is an open source, general purpose, WebRTC gateway
|
||||
designed and developed by Meetecho.
|
||||
|
||||
https://github.com/meetecho/janus-gateway
|
||||
|
||||
if BR2_PACKAGE_JANUS_GATEWAY
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_DEMOS
|
||||
bool "HTML demos"
|
||||
help
|
||||
Install the demonstration website, as featured on
|
||||
https://janus.conf.meetecho.com/
|
||||
|
||||
comment "plugins"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE
|
||||
bool "audio bridge"
|
||||
select BR2_PACKAGE_OPUS
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST
|
||||
bool "echo test"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY
|
||||
bool "record and play"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY
|
||||
bool "sip gateway"
|
||||
select BR2_PACKAGE_SOFIA_SIP
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_STREAMING
|
||||
bool "streaming"
|
||||
# SO_REUSEPORT
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
|
||||
|
||||
comment "streaming plugin needs a toolchain w/ headers >= 3.9"
|
||||
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM
|
||||
bool "text room"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL
|
||||
bool "video call"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM
|
||||
bool "video room"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL
|
||||
bool "voice mail"
|
||||
select BR2_PACKAGE_LIBOGG
|
||||
|
||||
comment "transports"
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_MQTT
|
||||
bool "MQTT"
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
select BR2_PACKAGE_PAHO_MQTT_C
|
||||
|
||||
comment "MQTT transport needs a toolchain w/ threads"
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ
|
||||
bool "RabbitMQ"
|
||||
depends on !BR2_STATIC_LIBS
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
select BR2_PACKAGE_RABBITMQ_C
|
||||
|
||||
comment "RabbitMQ transport needs a toolchain w/ dynamic library, threads"
|
||||
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_REST
|
||||
bool "REST (HTTP/HTTPS)"
|
||||
select BR2_PACKAGE_LIBMICROHTTPD
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS
|
||||
bool "Unix Sockets"
|
||||
default y
|
||||
|
||||
config BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS
|
||||
bool "WebSockets"
|
||||
select BR2_PACKAGE_LIBWEBSOCKETS
|
||||
|
||||
endif
|
||||
|
||||
comment "janus-gateway needs a toolchain w/ dynamic library, threads, wchar"
|
||||
depends on BR2_USE_MMU
|
||||
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
|
||||
@@ -0,0 +1,3 @@
|
||||
# Locally computed
|
||||
sha256 21e2fc7dee4b20ed8d749a69577eccd961b0bfe5b863d42f39ddfcd2af903718 janus-gateway-0.10.10.tar.gz
|
||||
sha256 91d04c97fa1da3fcd28205873276358aafc071c5b00a9ea8c49dd06d487a9dc6 COPYING
|
||||
@@ -0,0 +1,134 @@
|
||||
################################################################################
|
||||
#
|
||||
# janus-gateway
|
||||
#
|
||||
################################################################################
|
||||
|
||||
JANUS_GATEWAY_VERSION = 0.10.10
|
||||
JANUS_GATEWAY_SITE = $(call github,meetecho,janus-gateway,v$(JANUS_GATEWAY_VERSION))
|
||||
JANUS_GATEWAY_LICENSE = GPL-3.0 with OpenSSL exception
|
||||
JANUS_GATEWAY_LICENSE_FILES = COPYING
|
||||
JANUS_GATEWAY_CPE_ID_VENDOR = meetecho
|
||||
JANUS_GATEWAY_CPE_ID_PRODUCT = janus
|
||||
|
||||
# 0003-Fix-potential-Cross-site-Scripting-XSS-exploits-in-demos.patch
|
||||
JANUS_GATEWAY_IGNORE_CVES += CVE-2021-4020
|
||||
|
||||
# ding-libs provides the ini_config library
|
||||
JANUS_GATEWAY_DEPENDENCIES = host-pkgconf jansson libnice \
|
||||
libsrtp host-gengetopt libglib2 openssl libconfig \
|
||||
$(if $(BR2_PACKAGE_LIBOGG),libogg)
|
||||
|
||||
# Straight out of the repository, no ./configure, and we also patch
|
||||
# configure.ac.
|
||||
JANUS_GATEWAY_AUTORECONF = YES
|
||||
|
||||
JANUS_GATEWAY_CONF_OPTS = \
|
||||
--disable-data-channels \
|
||||
--disable-sample-event-handler
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_DEMOS),)
|
||||
define JANUS_GATEWAY_REMOVE_DEMOS
|
||||
$(RM) -fr $(TARGET_DIR)/usr/share/janus/demos/
|
||||
endef
|
||||
JANUS_GATEWAY_POST_INSTALL_TARGET_HOOKS += JANUS_GATEWAY_REMOVE_DEMOS
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += opus
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-audiobridge
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-audiobridge
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-echotest
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-echotest
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-recordplay
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-recordplay
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += sofia-sip
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-sip
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-sip
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_STREAMING),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-streaming
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-streaming
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-textroom
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-textroom
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videocall
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videocall
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videoroom
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videoroom
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-plugin-voicemail
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-plugin-voicemail
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_MQTT),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += paho-mqtt-c
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-mqtt
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-mqtt
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += rabbitmq-c
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-rabbitmq
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-rabbitmq
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_REST),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += libmicrohttpd
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-rest
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-rest
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS),y)
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-unix-sockets
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-unix-sockets
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += libwebsockets
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-websockets
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-websockets
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
|
||||
JANUS_GATEWAY_DEPENDENCIES += systemd
|
||||
JANUS_GATEWAY_CONF_OPTS += --enable-systemd-sockets
|
||||
else
|
||||
JANUS_GATEWAY_CONF_OPTS += --disable-systemd-sockets
|
||||
endif
|
||||
|
||||
$(eval $(autotools-package))
|
||||
Reference in New Issue
Block a user