From 2b39eb215d4688a6d1c66defe8937683266f8e27 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Wed, 4 Dec 2024 19:36:55 +0100 Subject: [PATCH] [mirotalksfu] - welcome LambdaTest --- CODE_OF_CONDUCT.md | 28 +++--- README.md | 150 +++++++++++++++------------------ SECURITY.md | 8 +- app/src/Server.js | 2 +- package.json | 16 ++-- public/js/Room.js | 4 +- public/js/RoomClient.js | 2 +- public/js/Snow.js | 2 +- public/sponsors/LambdaTest.png | Bin 0 -> 29779 bytes public/views/landing.html | 16 +++- 10 files changed, 115 insertions(+), 113 deletions(-) create mode 100644 public/sponsors/LambdaTest.png diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index e68a1ec4..56e60008 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -35,23 +35,23 @@ socioeconomic status, or other similar personal characteristics. Examples of behavior that contributes to creating a positive environment include: -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy toward other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy toward other community members Examples of unacceptable behavior by participants include: -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Personal attacks, insulting/derogatory comments, or trolling -- Public or private harassment -- Publishing, or threatening to publish, others' private information—such as - a physical or electronic address—without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting -- Advocating for or encouraging any of the above behaviors +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Personal attacks, insulting/derogatory comments, or trolling +- Public or private harassment +- Publishing, or threatening to publish, others' private information—such as + a physical or electronic address—without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting +- Advocating for or encouraging any of the above behaviors ## Our Responsibilities diff --git a/README.md b/README.md index bf0fd93d..387bd999 100644 --- a/README.md +++ b/README.md @@ -39,50 +39,50 @@
-- Is `100% Free` - `Open Source (AGPLv3)` - `Self Hosted` and [PWA](https://en.wikipedia.org/wiki/Progressive_web_application)! -- Unlimited conference rooms with no time limitations. -- Live broadcasting streaming. -- Translated into 133 languages. -- Support for the OpenID Connect (OIDC) authentication layer. -- Host protection to prevent unauthorized access. -- User auth to prevent unauthorized access. -- JWT.io securely manages credentials for host configurations and user authentication, enhancing security and streamlining processes. -- Room password protection. -- Room lobby, central gathering space. -- Room spam mitigations, focused on preventing spam. -- Geolocation, identification or estimation of the real-world geographic location of the participants. -- Compatible with desktop and mobile devices. -- Optimized mobile room URL sharing. -- Webcam streaming with front and rear camera support for mobile devices. -- Broadcasting, distribution of audio or video content to a wide audience. -- Crystal-clear audio streaming with speaking detection and volume indicators. -- Screen sharing for presentations. -- File sharing with drag-and-drop support. -- Choose your audio input, output, and video source. -- Supports video quality up to 4K. -- Supports advance Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience. -- Record your screen, audio, and video locally or on your Server. -- Snapshot video frames and save them as PNG images. -- Chat with an Emoji Picker for expressing feelings, private messages, Markdown support, and conversation saving. -- ChatGPT (powered by OpenAI) for answering questions, providing information, and connecting users to relevant resources. -- VideoAI enables users to customize AI avatars to deliver messages, perform tasks, or act out scripts. -- Speech recognition, execute the app features simply with your voice. -- Push-to-talk functionality, similar to a walkie-talkie. -- Advanced collaborative whiteboard for teachers. -- Advanced collaborative powerful rich text editor. -- Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3). -- Real-time polls, allows users to create and participate in live polls, providing instant feedback and results. -- Integrated RTMP server, fully compatible with **[OBS](https://obsproject.com)**. -- Supports RTMP streaming from files, URLs, webcams, screens, and windows. -- Full-screen mode with one-click video element zooming and pin/unpin. -- Customizable UI themes. -- Right-click options on video elements for additional controls. -- Supports [REST API](app/api/README.md) (Application Programming Interface). -- Integration with [Slack](https://api.slack.com/apps/) for enhanced communication. -- Integration with [Discord](https://discord.com) for enhanced communication. -- Integration with [Mattermost](https://mattermost.com/) for enhanced communication. -- Utilizes [Sentry](https://sentry.io/) for error reporting. -- And much more... +- Is `100% Free` - `Open Source (AGPLv3)` - `Self Hosted` and [PWA](https://en.wikipedia.org/wiki/Progressive_web_application)! +- Unlimited conference rooms with no time limitations. +- Live broadcasting streaming. +- Translated into 133 languages. +- Support for the OpenID Connect (OIDC) authentication layer. +- Host protection to prevent unauthorized access. +- User auth to prevent unauthorized access. +- JWT.io securely manages credentials for host configurations and user authentication, enhancing security and streamlining processes. +- Room password protection. +- Room lobby, central gathering space. +- Room spam mitigations, focused on preventing spam. +- Geolocation, identification or estimation of the real-world geographic location of the participants. +- Compatible with desktop and mobile devices. +- Optimized mobile room URL sharing. +- Webcam streaming with front and rear camera support for mobile devices. +- Broadcasting, distribution of audio or video content to a wide audience. +- Crystal-clear audio streaming with speaking detection and volume indicators. +- Screen sharing for presentations. +- File sharing with drag-and-drop support. +- Choose your audio input, output, and video source. +- Supports video quality up to 4K. +- Supports advance Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience. +- Record your screen, audio, and video locally or on your Server. +- Snapshot video frames and save them as PNG images. +- Chat with an Emoji Picker for expressing feelings, private messages, Markdown support, and conversation saving. +- ChatGPT (powered by OpenAI) for answering questions, providing information, and connecting users to relevant resources. +- VideoAI enables users to customize AI avatars to deliver messages, perform tasks, or act out scripts. +- Speech recognition, execute the app features simply with your voice. +- Push-to-talk functionality, similar to a walkie-talkie. +- Advanced collaborative whiteboard for teachers. +- Advanced collaborative powerful rich text editor. +- Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3). +- Real-time polls, allows users to create and participate in live polls, providing instant feedback and results. +- Integrated RTMP server, fully compatible with **[OBS](https://obsproject.com)**. +- Supports RTMP streaming from files, URLs, webcams, screens, and windows. +- Full-screen mode with one-click video element zooming and pin/unpin. +- Customizable UI themes. +- Right-click options on video elements for additional controls. +- Supports [REST API](app/api/README.md) (Application Programming Interface). +- Integration with [Slack](https://api.slack.com/apps/) for enhanced communication. +- Integration with [Discord](https://discord.com) for enhanced communication. +- Integration with [Mattermost](https://mattermost.com/) for enhanced communication. +- Utilizes [Sentry](https://sentry.io/) for error reporting. +- And much more... @@ -91,8 +91,8 @@
-- [Presentation](https://www.canva.com/design/DAE693uLOIU/view) -- [Video Overview](https://www.youtube.com/watch?v=_IVn2aINYww) +- [Presentation](https://www.canva.com/design/DAE693uLOIU/view) +- [Video Overview](https://www.youtube.com/watch?v=_IVn2aINYww) @@ -101,8 +101,8 @@
-- You can `directly join a room` by using link like: -- https://sfu.mirotalk.com/join?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0 +- You can `directly join a room` by using link like: +- https://sfu.mirotalk.com/join?room=test&roomPassword=0&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0 | Params | Type | Description | | ------------ | -------------- | --------------- | @@ -175,9 +175,9 @@ To embed a meeting within `your service or app` using an iframe, you can use the
-- Before running MiroTalk SFU, ensure you have `Node.js` and all [requirements](https://mediasoup.org/documentation/v3/mediasoup/installation/#requirements) installed. This project has been tested with Node version [18.X](https://nodejs.org/en/download). +- Before running MiroTalk SFU, ensure you have `Node.js` and all [requirements](https://mediasoup.org/documentation/v3/mediasoup/installation/#requirements) installed. This project has been tested with Node version [18.X](https://nodejs.org/en/download). -- Requirements install example for `Ubuntu 24.04 LTS` +- Requirements install example for `Ubuntu 24.04 LTS` ```bash # Gcc g++ make @@ -201,7 +201,7 @@ Install `NodeJS 18.X` and `npm` using [Node Version Manager](https://docs.mirota --- -- Start the server +- Start the server ```bash # Clone this repo @@ -218,7 +218,7 @@ $ npm start $ PORT=3011 npm start ``` -- Open [https://localhost:3010](https://localhost:3010) or `:3011` if the default port has been changed in your browser. +- Open [https://localhost:3010](https://localhost:3010) or `:3011` if the default port has been changed in your browser.
@@ -235,8 +235,8 @@ $ PORT=3011 npm start ![docker](public/images/docker.png) -- Repository [docker hub](https://hub.docker.com/r/mirotalk/sfu) -- Install [docker engine](https://docs.docker.com/engine/install/) and [docker compose](https://docs.docker.com/compose/install/) +- Repository [docker hub](https://hub.docker.com/r/mirotalk/sfu) +- Install [docker engine](https://docs.docker.com/engine/install/) and [docker compose](https://docs.docker.com/compose/install/) ```bash # Clone this repo @@ -255,7 +255,7 @@ $ docker-compose up # -d $ docker-compose down ``` -- Open [https://localhost:3010](https://localhost:3010) in your browser. +- Open [https://localhost:3010](https://localhost:3010) in your browser. @@ -264,11 +264,11 @@ $ docker-compose down
-- `Ngrok/HTTPS:` You can start a video conference directly from your local PC and make it accessible from any device outside your network by following [these instructions](docs/ngrok.md), or expose it directly on [HTTPS](app/ssl/README.md). +- `Ngrok/HTTPS:` You can start a video conference directly from your local PC and make it accessible from any device outside your network by following [these instructions](docs/ngrok.md), or expose it directly on [HTTPS](app/ssl/README.md). -- `Self-hosting:` For `self-hosting MiroTalk SFU` on your own dedicated server, please refer to [this comprehensive guide](docs/self-hosting.md). It will provide you with all the necessary instructions to get your MiroTalk SFU instance up and running smoothly. +- `Self-hosting:` For `self-hosting MiroTalk SFU` on your own dedicated server, please refer to [this comprehensive guide](docs/self-hosting.md). It will provide you with all the necessary instructions to get your MiroTalk SFU instance up and running smoothly. -- `Rest API:` The [API documentation](https://docs.mirotalk.com/mirotalk-sfu/api/) uses [swagger](https://swagger.io/) at https://localhost:3010/api/v1/docs or check it on live [here](https://sfu.mirotalk.com/api/v1/docs). +- `Rest API:` The [API documentation](https://docs.mirotalk.com/mirotalk-sfu/api/) uses [swagger](https://swagger.io/) at https://localhost:3010/api/v1/docs or check it on live [here](https://sfu.mirotalk.com/api/v1/docs). ```bash # The response will give you the active meetings (default disabled). @@ -315,17 +315,6 @@ To set up your own instance of `MiroTalk SFU` on a dedicated cloud server, pleas -
-DigitalOcean - -
- -[![DigitalOcean Referral Badge](https://web-platforms.sfo2.cdn.digitaloceanspaces.com/WWW/Badge%201.svg)](https://m.do.co/c/1070207afbb1) - -For personal use, you can start with a single $5 a month cloud server and scale up as needed. You can use [this link](https://m.do.co/c/1070207afbb1) to get a `$200 credit for the first 60 days`. - -
-
Live Demo @@ -344,9 +333,9 @@ https://sfu.mirotalk.com
-- [Davide Pacilio](https://cruip.com/demos/solid/) (html template) -- [Dirk Vanbeveren](https://github.com/Dirvann) (sfu logic) -- [Mediasoup](https://mediasoup.org) (sfu server) +- [Davide Pacilio](https://cruip.com/demos/solid/) (html template) +- [Dirk Vanbeveren](https://github.com/Dirvann) (sfu logic) +- [Mediasoup](https://mediasoup.org) (sfu server)
@@ -355,8 +344,8 @@ https://sfu.mirotalk.com
-- Contributions are welcome and greatly appreciated! -- Just run before `npm run lint` +- Contributions are welcome and greatly appreciated! +- Just run before `npm run lint` @@ -380,12 +369,13 @@ To obtain a [MiroTalk SFU license](https://docs.mirotalk.com/license/licensing-o Do you find MiroTalk SFU indispensable for your needs? Join us in supporting this transformative project by [becoming a backer or sponsor](https://github.com/sponsors/miroslavpejic85). By doing so, not only will your logo prominently feature here, but you'll also drive the growth and sustainability of MiroTalk SFU. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact – back MiroTalk SFU today and be part of this exciting journey! -| | | -| --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| [![BroadcastX](public/sponsors/BroadcastX.png)](https://broadcastx.de/) | [![Hetzner](public/sponsors/HetznerLogo.png)](https://hetzner.cloud/?ref=XdRifCzCK3bn) | -| [![LuvLounge](public/sponsors/LuvLounge.png)](https://luvlounge.ca) | [![QuestionPro](public/sponsors/QuestionPro.png)](https://www.questionpro.com) | -| [![BrowserStack](public/sponsors/BrowserStack.png)](https://www.browserstack.com) | [![CrystalSound](public/sponsors/CrystalSound.png)](https://crystalsound.ai) | -| [![Cloudron](public/sponsors/Cloudron.png)](https://cloudron.io) | [![Kiquix](public/sponsors/KiquixLogo.png)](https://kiquix.com) | +| | | +| ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| [![BroadcastX](public/sponsors/BroadcastX.png)](https://broadcastx.de/) | [![Hetzner](public/sponsors/HetznerLogo.png)](https://hetzner.cloud/?ref=XdRifCzCK3bn) | +| [![LuvLounge](public/sponsors/LuvLounge.png)](https://luvlounge.ca) | [![QuestionPro](public/sponsors/QuestionPro.png)](https://www.questionpro.com) | +| [![BrowserStack](public/sponsors/BrowserStack.png)](https://www.browserstack.com) | [![CrystalSound](public/sponsors/CrystalSound.png)](https://crystalsound.ai) | +| [![Cloudron](public/sponsors/Cloudron.png)](https://cloudron.io) | [![Kiquix](public/sponsors/KiquixLogo.png)](https://kiquix.com) | +| [![LambdaTest](public/sponsors/LambdaTest.png)](https://lambdatest.com/pricing?coupon=QURFODlQUk9NT1RFUg==&refid=1149848) | | diff --git a/SECURITY.md b/SECURITY.md index ae64fd10..1b11e5ba 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -9,10 +9,10 @@ We prefer a Coordinated Vulnerability Disclosure (CVD) to properly understand an Your report should include: -- Product version ([GitHub](https://github.com/miroslavpejic85/mirotalksfu/commits/main) commit hash or [DockerHub](https://hub.docker.com/r/mirotalk/sfu) sha256 digest hash) -- The affected component if possible (RoomClient.js, Server.js, etc.) -- A vulnerability description -- Reproduction steps +- Product version ([GitHub](https://github.com/miroslavpejic85/mirotalksfu/commits/main) commit hash or [DockerHub](https://hub.docker.com/r/mirotalk/sfu) sha256 digest hash) +- The affected component if possible (RoomClient.js, Server.js, etc.) +- A vulnerability description +- Reproduction steps A member of the security team will confirm the vulnerability, determine its impact, and develop a fix. The fix will be applied to the master branch, tested, and packaged in the next security release. diff --git a/app/src/Server.js b/app/src/Server.js index 077f77e5..49e5a6ad 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -55,7 +55,7 @@ dev 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.6.42 + * @version 1.6.43 * */ diff --git a/package.json b/package.json index 6c1aadcd..58dee454 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalksfu", - "version": "1.6.42", + "version": "1.6.43", "description": "WebRTC SFU browser-based video calls", "main": "Server.js", "scripts": { @@ -57,15 +57,15 @@ "node": ">=18" }, "dependencies": { - "@mattermost/client": "^10.1.0", - "@sentry/node": "^8.40.0", - "axios": "^1.7.8", + "@mattermost/client": "^10.2.0", + "@sentry/node": "^8.42.0", + "axios": "^1.7.9", "colors": "1.4.0", "compression": "1.7.5", "cors": "2.8.5", "crypto-js": "4.2.0", "discord.js": "^14.16.3", - "dompurify": "^3.2.1", + "dompurify": "^3.2.2", "express": "4.21.1", "express-openid-connect": "^2.17.1", "fluent-ffmpeg": "^2.1.3", @@ -78,17 +78,17 @@ "mediasoup-client": "3.7.18", "ngrok": "^5.0.0-beta.2", "nodemailer": "^6.9.16", - "openai": "^4.73.1", + "openai": "^4.75.0", "qs": "6.13.1", "socket.io": "4.8.1", "swagger-ui-express": "5.0.1", "uuid": "11.0.3" }, "devDependencies": { - "mocha": "^10.8.2", + "mocha": "^11.0.1", "node-fetch": "^3.3.2", "nodemon": "^3.1.7", - "prettier": "3.3.3", + "prettier": "3.4.2", "proxyquire": "^2.1.3", "should": "^13.2.3", "sinon": "^19.0.2" diff --git a/public/js/Room.js b/public/js/Room.js index 5df943d9..d266e84b 100644 --- a/public/js/Room.js +++ b/public/js/Room.js @@ -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.6.42 + * @version 1.6.43 * */ @@ -4616,7 +4616,7 @@ function showAbout() { imageUrl: image.about, customClass: { image: 'img-about' }, position: 'center', - title: 'WebRTC SFU v1.6.42', + title: 'WebRTC SFU v1.6.43', html: `
diff --git a/public/js/RoomClient.js b/public/js/RoomClient.js index 6c3534b3..a6a6ea88 100644 --- a/public/js/RoomClient.js +++ b/public/js/RoomClient.js @@ -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.6.42 + * @version 1.6.43 * */ diff --git a/public/js/Snow.js b/public/js/Snow.js index a1b41cda..a60f3747 100644 --- a/public/js/Snow.js +++ b/public/js/Snow.js @@ -2,7 +2,7 @@ // https://codepen.io/tutsplus/pen/BaVqjvg -const snowEnabled = false; +const snowEnabled = true; const snowContainer = document.getElementById('snow-container'); diff --git a/public/sponsors/LambdaTest.png b/public/sponsors/LambdaTest.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9b11ca245262f82e98fbe39b9c1e72e2d5907c GIT binary patch literal 29779 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 g52yQoeboQA4Our sponsors />
-
  • +
  • -
  • +
  • +
  • + +