[mirotalksfu] - Fix, welcome Kiquix, update dep.
هذا الالتزام موجود في:
@@ -361,7 +361,7 @@ Do you find MiroTalk SFU indispensable for your needs? Join us in supporting thi
|
||||
| [](https://broadcastx.de/) | [](https://hetzner.cloud/?ref=XdRifCzCK3bn) |
|
||||
| [](https://luvlounge.ca) | [](https://www.questionpro.com) |
|
||||
| [](https://www.browserstack.com) | [](https://crystalsound.ai) |
|
||||
| [](https://cloudron.io) | |
|
||||
| [](https://cloudron.io) | [](https://kiquix.com.ai) |
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ dependencies: {
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.21
|
||||
* @version 1.4.22
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -475,7 +475,15 @@ function startServer() {
|
||||
authorized: authHost.isAuthorizedIP(ip),
|
||||
authorizedIps: authHost.getAuthorizedIPs(),
|
||||
});
|
||||
const token = encodeToken({ username: username, password: password, presenter: true });
|
||||
|
||||
const isPresenter =
|
||||
config.presenters && config.presenters.join_first
|
||||
? true
|
||||
: config.presenters &&
|
||||
config.presenters.list &&
|
||||
config.presenters.list.includes(username).toString();
|
||||
|
||||
const token = encodeToken({ username: username, password: password, presenter: isPresenter });
|
||||
return res.status(200).json({ message: token });
|
||||
}
|
||||
|
||||
@@ -893,8 +901,6 @@ function startServer() {
|
||||
|
||||
log.info('User joined', data);
|
||||
|
||||
let is_presenter = true;
|
||||
|
||||
const { peer_token } = data.peer_info;
|
||||
|
||||
const room = roomList.get(socket.room_id);
|
||||
@@ -902,8 +908,10 @@ function startServer() {
|
||||
const { peer_name, peer_id, peer_uuid, os_name, os_version, browser_name, browser_version } =
|
||||
data.peer_info;
|
||||
|
||||
// User Auth required, we check if peer valid
|
||||
if (hostCfg.user_auth) {
|
||||
let is_presenter = true;
|
||||
|
||||
// User Auth required or detect token, we check if peer valid
|
||||
if (hostCfg.user_auth || peer_token) {
|
||||
// Check JWT
|
||||
if (peer_token) {
|
||||
try {
|
||||
@@ -911,6 +919,11 @@ function startServer() {
|
||||
|
||||
const isPeerValid = await isAuthPeer(username, password);
|
||||
|
||||
if (!isPeerValid) {
|
||||
// redirect peer to login page
|
||||
return cb('unauthorized');
|
||||
}
|
||||
|
||||
is_presenter =
|
||||
presenter === '1' ||
|
||||
presenter === 'true' ||
|
||||
@@ -923,11 +936,6 @@ function startServer() {
|
||||
peer_valid: isPeerValid,
|
||||
peer_presenter: is_presenter,
|
||||
});
|
||||
|
||||
if (!isPeerValid) {
|
||||
// redirect peer to login page
|
||||
return cb('unauthorized');
|
||||
}
|
||||
} catch (err) {
|
||||
log.error('[Join] - JWT error', { error: err.message, token: peer_token });
|
||||
return cb('unauthorized');
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mirotalksfu",
|
||||
"version": "1.4.21",
|
||||
"version": "1.4.22",
|
||||
"description": "WebRTC SFU browser-based video calls",
|
||||
"main": "Server.js",
|
||||
"scripts": {
|
||||
@@ -41,8 +41,8 @@
|
||||
"node": ">=18"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sentry/integrations": "7.111.0",
|
||||
"@sentry/node": "7.111.0",
|
||||
"@sentry/integrations": "7.112.1",
|
||||
"@sentry/node": "7.112.1",
|
||||
"axios": "^1.6.8",
|
||||
"body-parser": "1.20.2",
|
||||
"colors": "1.4.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"mediasoup-client": "3.7.7",
|
||||
"ngrok": "^5.0.0-beta.2",
|
||||
"nodemailer": "^6.9.13",
|
||||
"openai": "^4.38.2",
|
||||
"openai": "^4.38.3",
|
||||
"qs": "6.12.1",
|
||||
"socket.io": "4.7.5",
|
||||
"swagger-ui-express": "5.0.0",
|
||||
|
||||
@@ -11,7 +11,7 @@ if (location.href.substr(0, 5) !== 'https') location.href = 'https' + location.h
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.21
|
||||
* @version 1.4.22
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
|
||||
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
|
||||
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
|
||||
* @version 1.4.21
|
||||
* @version 1.4.22
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -396,7 +396,7 @@ class RoomClient {
|
||||
|
||||
async joinAllowed(room) {
|
||||
console.log('07 ----> Join Room allowed');
|
||||
this.handleRoomInfo(room);
|
||||
await this.handleRoomInfo(room);
|
||||
const routerRtpCapabilities = await this.socket.request('getRouterRtpCapabilities');
|
||||
routerRtpCapabilities.headerExtensions = routerRtpCapabilities.headerExtensions.filter(
|
||||
(ext) => ext.uri !== 'urn:3gpp:video-orientation',
|
||||
@@ -414,7 +414,7 @@ class RoomClient {
|
||||
}
|
||||
}
|
||||
|
||||
handleRoomInfo(room) {
|
||||
async handleRoomInfo(room) {
|
||||
console.log('07.0 ----> Room Survey', room.survey);
|
||||
survey = room.survey;
|
||||
console.log('07.0 ----> Room Leave Redirect', room.redirect);
|
||||
@@ -1059,14 +1059,15 @@ class RoomClient {
|
||||
position: 'center',
|
||||
imageUrl: image.broadcasting,
|
||||
title: 'Room broadcasting Enabled',
|
||||
text: 'Would you like to deactivate room broadcasting?',
|
||||
text: 'Would you like to continue the room broadcast?',
|
||||
showDenyButton: true,
|
||||
confirmButtonColor: '#18392B',
|
||||
confirmButtonText: `Yes`,
|
||||
denyButtonText: `No`,
|
||||
showClass: { popup: 'animate__animated animate__fadeInDown' },
|
||||
hideClass: { popup: 'animate__animated animate__fadeOutUp' },
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
if (result.isDenied) {
|
||||
switchBroadcasting.click();
|
||||
}
|
||||
});
|
||||
|
||||
ثنائية
public/sponsors/Kiquix.png
Normal file
ثنائية
public/sponsors/Kiquix.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 5.3 KiB |
ثنائية
public/sponsors/KiquixLogo.png
Normal file
ثنائية
public/sponsors/KiquixLogo.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 5.2 KiB |
@@ -490,7 +490,7 @@
|
||||
/></a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="reveal-from-left" data-reveal-delay="900">
|
||||
<li class="reveal-from-left" data-reveal-delay="1200">
|
||||
<div class="clients-logo">
|
||||
<a href="https://cloudron.io" target="_blank"
|
||||
><img
|
||||
@@ -500,6 +500,13 @@
|
||||
/></a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="reveal-from-left" data-reveal-delay="1500">
|
||||
<div class="clients-logo">
|
||||
<a href="https://kiquix.com" target="_blank"
|
||||
><img class="clients-size-logo" src="../sponsors/Kiquix.png" alt="Kiquix"
|
||||
/></a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم