[mirotalksfu] - add HOST_USERS env var

هذا الالتزام موجود في:
Miroslav Pejic
2025-06-03 20:19:29 +02:00
الأصل 5486e8bc5a
التزام c3bbceae7e
7 ملفات معدلة مع 77 إضافات و48 حذوفات

عرض الملف

@@ -64,7 +64,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.8.59
* @version 1.8.60
*
*/

عرض الملف

@@ -365,38 +365,47 @@ module.exports = {
* Host Protection Configuration
* ============================
* Controls access to host-level functionality and room management.
* Supports multiple authentication methods including local users and API-based validation.
*
* Core Protection Settings:
* -------------------------
* - protected : Enable/disable host protection globally
* - user_auth : Require user authentication for host access
* - users_from_db : Fetch authorized users from database/API instead of local config (eg., MiroTalk WEB)
* Authentication Methods:
* ----------------------
* - Local users (defined in config or via HOST_USERS env variable)
* - API/database validation (users_from_db=true)
*
* Core Settings:
* --------------
* - protected : Enable/disable host protection globally
* - user_auth : Require user authentication for host access
* - users_from_db : Fetch users from API/database instead of local config
*
* API Integration:
* ----------------
* - users_api_secret_key : Secret key for API authentication
* - users_api_endpoint : Endpoint to validate user credentials
* - users_api_room_allowed : Endpoint to check if user can access specific room
* - users_api_rooms_allowed : Endpoint to get list of allowed rooms for user
* - api_room_exists : Endpoint to verify if room exists
* ---------------
* - users_api_secret_key : Secret key for API authentication
* - users_api_endpoint : Endpoint to validate user credentials
* - users_api_room_allowed : Endpoint to check if user can access a room
* - users_api_rooms_allowed : Endpoint to get allowed rooms for a user
* - api_room_exists : Endpoint to verify if a room exists
*
* Local User Configuration:
* -------------------------
* - users : Array of authorized users (used when users_from_db=false)
* - username : Login username
* - password : Login password
* - displayname : User's display name
* - allowed_rooms : List of rooms user can access ('*' for all rooms)
* ------------------------
* - users: Array of authorized users (used if users_from_db=false)
* - Define via HOST_USERS env variable:
* HOST_USERS=username:password:displayname:room1,room2|username2:password2:displayname2:*
* (Each user separated by '|', fields by ':', allowed_rooms comma-separated or '*' for all)
* - If HOST_USERS is not set, falls back to DEFAULT_USERNAME, DEFAULT_PASSWORD, etc.
* - Fields:
* - username : Login username
* - password : Login password
* - displayname : User's display name
* - allowed_rooms : List of rooms user can access ('*' for all)
*
* Presenter Management:
* --------------------
* - list : Array of usernames who can be presenters
* - join_first : First joiner becomes presenter [true/false] default true
* - list : Array of usernames who can be presenters
* - join_first : First joiner becomes presenter (default: true)
*
* Documentation:
* --------------
* - https://docs.mirotalk.com/mirotalk-sfu/host-protection/
* -------------
* https://docs.mirotalk.com/mirotalk-sfu/host-protection/
*/
host: {
protected: process.env.HOST_PROTECTED === 'true',
@@ -411,19 +420,41 @@ module.exports = {
process.env.USERS_ROOMS_ALLOWED_ENDPOINT || 'http://localhost:9000/api/v1/user/roomsAllowed', // 'https://webrtc.mirotalk.com/api/v1/user/roomsAllowed'
api_room_exists: process.env.ROOM_EXISTS_ENDPOINT || 'http://localhost:9000/api/v1/room/exists', // 'https://webrtc.mirotalk.com//api/v1/room/exists'
users: [
{
username: process.env.DEFAULT_USERNAME || 'username',
password: process.env.DEFAULT_PASSWORD || 'password',
displayname: process.env.DEFAULT_DISPLAY_NAME || 'username display name',
allowed_rooms: process.env.DEFAULT_ALLOWED_ROOMS
? process.env.DEFAULT_ALLOWED_ROOMS.split(splitChar)
.map((room) => room.trim())
.filter((room) => room !== '')
: ['*'],
},
// Additional users can be added here
],
users: process.env.HOST_USERS
? process.env.HOST_USERS.split('|').map((userStr) => {
const [username, password, displayname, allowedRoomsStr] = userStr.split(':');
return {
username: username || '',
password: password || '',
displayname: displayname || '',
allowed_rooms: allowedRoomsStr
? allowedRoomsStr
.split(',')
.map((room) => room.trim())
.filter((room) => room !== '')
: ['*'],
};
})
: [
{
username: 'username',
password: 'password',
displayname: 'username displayname',
allowed_rooms: ['*'],
},
{
username: 'username2',
password: 'password2',
displayname: 'username2 displayname',
allowed_rooms: ['room1', 'room2'],
},
{
username: 'username3',
password: 'password3',
displayname: 'username3 displayname',
},
//...
],
presenters: {
list: process.env.PRESENTERS