From b6f367980502ab5eb7179029446771e2a47fb001 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 14 Nov 2025 08:14:59 +0000 Subject: [PATCH] branding changes --- .env.template | 434 ---- .github/ISSUE_TEMPLATE/1-bug.yml | 2 +- .github/ISSUE_TEMPLATE/2-feature.yml | 4 +- README.md | 22 +- app/api/swagger.yaml | 4 +- app/src/HtmlInjector.js | 4 +- app/src/Server.js | 68 +- app/src/config.template.js | 90 +- app/src/lib/nodemailer.js | 2 +- cloud/README.md | 2 +- cloud/package.json | 2 +- docs/ngrok.md | 4 +- docs/self-hosting.md | 4 +- package-lock.json | 17 - public/images/codepill_logo.jpg | Bin 0 -> 8704 bytes public/images/wget-log | 6 + public/js/Brand.js | 14 +- public/js/Room.js | 28 +- public/js/RoomClient.js | 2 +- public/js/Rules.js | 5 +- public/views/404.html | 6 +- public/views/50X.html | 6 +- public/views/Room.html | 2150 ++++++++--------- public/views/RtmpStreamer.html | 4 +- public/views/about.html | 6 +- public/views/activeRooms.html | 2 +- public/views/iframe.html | 2 +- public/views/landing.html | 12 +- public/views/login.html | 6 +- public/views/newroom.html | 6 +- public/views/permission.html | 6 +- public/views/privacy.html | 10 +- public/views/whoAreYou.html | 6 +- .../client-server-axios/client/index.html | 2 +- .../client-server-socket/client/index.html | 2 +- webhook/README.md | 4 +- widgets/README.md | 4 +- widgets/example-2.html | 2 +- widgets/example-3.html | 2 +- widgets/example-4.html | 2 +- widgets/example-5.html | 2 +- 41 files changed, 1242 insertions(+), 1714 deletions(-) delete mode 100644 .env.template create mode 100644 public/images/codepill_logo.jpg create mode 100644 public/images/wget-log diff --git a/.env.template b/.env.template deleted file mode 100644 index 63dff9dc..00000000 --- a/.env.template +++ /dev/null @@ -1,434 +0,0 @@ -# ==================================================== -# MiroTalk SFU - Environment Configuration -# ==================================================== - -# config.js - Main configuration with: -# - All default values and documentation -# - Complex logic and validations -# - Safe to commit to version control -# -# .env - Environment overrides with: -# - Secrets and sensitive data (NEVER commit) -# - Environment-specific settings -# - Simple key=value format -# -# Why this works best: -# 1. SECURITY: Secrets stay out of codebase -# 2. FLEXIBILITY: Change settings without redeploy -# 3. SAFETY: Built-in defaults prevent crashes -# 4. DOCS: config.js explains all options -# -# Best practice: -# - Keep DEFAULT values in config.js -# - Keep SECRETS/ENV-SPECIFIC in .env -# - Add .env to .gitignore -# ==================================================== - -# ---------------------------------------------------- -# 1. Core System Configuration -# ---------------------------------------------------- - -NODE_ENV=development # Runtime environment: development|production -SFU_ANNOUNCED_IP= # Set your public IP address or domain for WebRTC announcements -SFU_LISTEN_IP=0.0.0.0 # Bind to all interfaces -SFU_MIN_PORT=40000 # Minimum WebRTC port range -SFU_MAX_PORT=40100 # Maximum WebRTC port range -SFU_NUM_WORKERS= # Number of worker processes (defaults to CPU count) -SFU_SERVER=false # Enable/disable WebRTC server (true|false) - -# ---------------------------------------------------- -# 2. Server Configuration -# ---------------------------------------------------- - -SERVER_HOST_URL= # Public server URL (e.g., https://yourdomain.com) -SERVER_LISTEN_IP=0.0.0.0 # Server bind IP -SERVER_LISTEN_PORT=3010 # Port to listen on -TRUST_PROXY=false # Trust proxy headers (true in production behind reverse proxy) -SERVER_SSL_CERT=../ssl/cert.pem # Path to SSL certificate -SERVER_SSL_KEY=../ssl/key.pem # Path to SSL private key -CORS_ORIGIN=* # Allowed CORS origins (comma-separated) - -# ---------------------------------------------------- -# 3. Logging Configuration -# ---------------------------------------------------- - -LOGS_JSON=false # Log output in JSON format (true|false) -LOGS_JSON_PRETTY=false # Pretty-print JSON logs (true|false) - -# ---------------------------------------------------- -# 4. Media Handling -# ---------------------------------------------------- - -# Recording -RECORDING_ENABLED=false # Enable recording functionality (true|false) -RECORDING_UPLOAD_TO_S3=false # Upload recording to AWS S3 bucket [true/false] -RECORDING_ENDPOINT= # Recording service endpoint es http://localhost:8080 - -# Rtmp streaming -RTMP_ENABLED=false # Enable RTMP streaming (true|false) -RTMP_FROM_FILE=true # Enable local file streaming -RTMP_FROM_URL=true # Enable URL streaming -RTMP_FROM_STREAM=true # Enable live stream (camera, microphone, screen, window) -RTMP_MAX_STREAMS=1 # Max simultaneous RTMP streams -RTMP_USE_NODE_MEDIA_SERVER=true # Use Node Media Server mirotalk-nms Docker image -RTMP_SERVER=rtmp://localhost:1935 # RTMP server URL -RTMP_APP_NAME=live # RTMP application name -RTMP_STREAM_KEY= # RTMP stream key (optional) -RTMP_SECRET=mirotalkRtmpSecret # RTMP API secret (Must match node-media-server config.js) -RTMP_API_SECRET=mirotalkRtmpApiSecret # RTMP internal secret -RTMP_EXPIRATION_HOURS=4 # RTMP URL validity duration (hours) -RTMP_FFMPEG_PATH= # RTMP Custom path to FFmpeg binary (auto-detected if empty) - -# ---------------------------------------------------- -# 5. Security & Authentication -# ---------------------------------------------------- - -# Middleware -IP_WHITELIST_ENABLED=false # Restrict access by IP (true|false) -IP_WHITELIST_ALLOWED=127.0.0.1,::1 # Allowed IPs (comma-separated) - -# Token -JWT_SECRET=mirotalksfu_jwt_secret # Secret for JWT tokens -JWT_EXPIRATION=1h # JWT token expiration (e.g., 1h, 7d) - -# OIDC -OIDC_ENABLED=false # Enable OpenID Connect (true|false) -OIDC_ALLOW_ROOMS_CREATION_FOR_AUTH_USERS=true # Allow all authenticated users via OIDC to create their own rooms -OIDC_ISSUER=https://server.example.com # OIDC provider URL -OIDC_BASE_URL= # OIDC base URL es https://yourdomain.com -OIDC_CLIENT_ID=clientID # OIDC client ID -OIDC_CLIENT_SECRET=clientSecret # OIDC client secret -OIDC_SECRET=mirotalksfu-oidc-secret # OIDC secret -OIDC_AUTH_REQUIRED=false # set to true if authentication is required for all routes -OIDC_AUTH_LOGOUT=true # Controls automatic logout from both your app and Auth0 (true|false) -OIDC_USERNAME_FORCE=true # Force the username to match OIDC email or name (true|false) -OIDC_USERNAME_AS_EMAIL=true # Set username as email from OIDC (true|false) -OIDC_USERNAME_AS_NAME=false # Set username as name from OIDC (true|false) - -# Host protection -HOST_PROTECTED=false # Enable host protection (true|false) -HOST_USER_AUTH=false # Enable user authentication (true|false) - -# Host users - Define host users in the format: username:password:displayName:allowedRooms (room1,room2...) -HOST_USERS="username:password:User:*|admin:admin:Admin:room1,room2|guest:guest:Guest:room1,room2" - -# Endpoints -HOST_USERS_FROM_DB=false # Use DB for user auth (true|false) - -USERS_API_SECRET=mirotalkweb_default_secret # Users API secret key -USERS_API_ENDPOINT=http://localhost:9000/api/v1/user/isAuth # User auth endpoint -USERS_ROOM_ALLOWED_ENDPOINT=http://localhost:9000/api/v1/user/isRoomAllowed # Room permission endpoint -USERS_ROOMS_ALLOWED_ENDPOINT=http://localhost:9000/api/v1/user/roomsAllowed # Allowed rooms endpoint -ROOM_EXISTS_ENDPOINT=http://localhost:9000/api/v1/room/exists # Room exists endpoint - -# Presenters -PRESENTERS=Miroslav Pejic,miroslav.pejic.85@gmail.com, # Presenter usernames (comma-separated) -PRESENTER_JOIN_FIRST=true # First joiner becomes presenter (true|false) - -# ---------------------------------------------------- -# 6. API Configuration -# ---------------------------------------------------- - -API_KEY_SECRET=mirotalksfu_default_secret # Secret for API authentication -API_ALLOW_STATS=true # Enable stats API (true|false) -API_ALLOW_MEETINGS=false # Allow meetings API endpoint (true|false) -API_ALLOW_MEETING=true # Allow single meeting API endpoint (true|false) -API_ALLOW_JOIN=true # Allow join API endpoint (true|false) -API_ALLOW_TOKEN=false # Allow token-based API authentication (true|false) -API_ALLOW_SLACK=true # Allow Slack integration via API (true|false) -API_ALLOW_MATTERMOST=true # Allow Mattermost integration via API (true|false) - -# ---------------------------------------------------- -# 7. Third-Party Integrations -# ---------------------------------------------------- - -# ChatGPT Integration -CHATGPT_ENABLED=false # Enable ChatGPT integration (true|false) -CHATGPT_BASE_PATH=https://api.openai.com/v1/ # OpenAI base path -CHATGPT_API_KEY= # OpenAI API key -CHATGPT_MODEL=gpt-3.5-turbo # Model to use (gpt-3.5-turbo, gpt-4, etc.) -CHATGPT_MAX_TOKENS=1024 # Max response tokens -CHATGPT_TEMPERATURE=0.7 # Creativity level (0-1) - -# DeepSeek Integration -DEEP_SEEK_ENABLED=false # Enable DeepSeek integration (true|false) -DEEP_SEEK_BASE_PATH=https://api.deepseek.com/v1/ # DeepSeek base path -DEEP_SEEK_API_KEY= # DeepSeek API key -DEEP_SEEK_MODEL=deepseek-chat # Model to use (deepseek-chat, deepseek-coder, etc.) -DEEP_SEEK_MAX_TOKENS=1024 # Max response tokens -DEEP_SEEK_TEMPERATURE=0.7 # Creativity level (0-1) - -# Video AI (HeyGen) Integration -VIDEOAI_ENABLED=false # Enable video AI avatars (true|false) -VIDEOAI_API_KEY= # HeyGen API key -VIDEOAI_SYSTEM_LIMIT= # AI system prompt - -# Email Alerts -EMAIL_ALERTS_ENABLED=false # Enable email alerts (true|false) -EMAIL_NOTIFICATIONS=false # Enable email notifications (true|false) -EMAIL_HOST=smtp.gmail.com # SMTP server host -EMAIL_PORT=587 # SMTP port -EMAIL_USERNAME=your_username # SMTP username -EMAIL_PASSWORD=your_password # SMTP password -EMAIL_FROM= # Sender email address -EMAIL_SEND_TO=sfu.mirotalk@gmail.com # Notification recipient - -# Slack Integration -SLACK_ENABLED=false # Enable Slack integration (true|false) -SLACK_SIGNING_SECRET= # Slack app signing secret - -# Mattermost Integration -MATTERMOST_ENABLED=false # Enable Mattermost (true|false) -MATTERMOST_SERVER_URL=YourMattermostServerUrl # Mattermost server URL -MATTERMOST_USERNAME=YourMattermostUsername # Mattermost username -MATTERMOST_PASSWORD=YourMattermostPassword # Mattermost password -MATTERMOST_TOKEN=YourMattermostToken # Mattermost slash command token -MATTERMOST_COMMAND_NAME=/sfu # Mattermost command name -MATTERMOST_DEFAULT_MESSAGE=Here is your meeting room: # Mattermost default message - -# Discord Integration -DISCORD_ENABLED=false # Enable Discord bot (true|false) -DISCORD_TOKEN= # Discord bot token -DISCORD_COMMAND_NAME=/sfu # Discord command name -DISCORD_DEFAULT_MESSAGE=Here is your SFU meeting room: # Discord default message -DISCORD_BASE_URL=https://sfu.mirotalk.com/join/ # Discord Base URL for meeting rooms - -# Ngrok Tunnel -NGROK_ENABLED=false # Enable Ngrok tunneling (true|false) -NGROK_AUTH_TOKEN= # Ngrok authentication token - -# Sentry Error Tracking -SENTRY_ENABLED=false # Enable Sentry error tracking (true|false) -SENTRY_LOG_LEVELS=error # Log levels to capture (comma-separated) -SENTRY_DSN= # Sentry DSN URL -SENTRY_TRACES_SAMPLE_RATE=0.2 # Error sampling rate (0-1) - -# Webhook Notifications -WEBHOOK_ENABLED=false # Enable webhook notifications (true|false) -WEBHOOK_URL=https://your-site.com/webhook-endpoint # Webhook endpoint URL - -# IP Geolocation -IP_LOOKUP_ENABLED=false # Enable IP lookup functionality (true|false) - -# AWS S3 Configuration -AWS_S3_ENABLED=false # Enable AWS S3 storage (true|false) -AWS_S3_BUCKET_NAME=mirotalk # Name of your S3 bucket (must exist) -AWS_ACCESS_KEY_ID= # AWS Access Key ID (leave empty for IAM roles) -AWS_SECRET_ACCESS_KEY= # AWS Secret Access Key (leave empty for IAM roles) -AWS_REGION= # AWS region (e.g., us-east-2, eu-west-2) - -# ---------------------------------------------------- -# 8. UI Customization -# ---------------------------------------------------- - -# Branding injection -BRAND_HTML_INJECTION=true # Enable HTML injection for branding (true|false) - -# Widget Configuration -WIDGET_ENABLED=false # Enable branding widget (true|false) -WIDGET_ROOM_ID=support-room # Widget room ID (default: support-room) -WIDGET_THEME=dark # Widget theme (dark|light) -WIDGET_STATE=minimized # Widget initial state (normal|minimized|closed) -WIDGET_TYPE=support # Widget type (support) -WIDGET_SUPPORT_POSITION=top-right # Support widget position (top-right|top-left|bottom-right|bottom-left) -WIDGET_SUPPORT_EXPERT_IMAGES= # Comma-separated expert image URLs comma-separated - -WIDGET_SUPPORT_BUTTON_AUDIO=true # Show audio button in support widget (false|false) -WIDGET_SUPPORT_BUTTON_VIDEO=true # Show video button in support widget (false|false) -WIDGET_SUPPORT_BUTTON_SCREEN=true # Show screen share button in support widget (false|false) -WIDGET_SUPPORT_BUTTON_CHAT=true # Show chat button in support widget (false|false) -WIDGET_SUPPORT_BUTTON_JOIN=true # Show join button in support widget (false|false) - -WIDGET_SUPPORT_CHECK_ONLINE_STATUS=false # Check online room status (true|false) -WIDGET_SUPPORT_IS_ONLINE=true # Is support online (true|false) -WIDGET_SUPPORT_HEADING=Need Help? # Support widget heading -WIDGET_SUPPORT_SUBHEADING=Get instant support from our expert team! # Support widget subheading -WIDGET_SUPPORT_CONNECT_TEXT=connect in < 5 seconds # Connect text -WIDGET_SUPPORT_ONLINE_TEXT=We are online # Online text -WIDGET_SUPPORT_OFFLINE_TEXT=We are offline # Offline text -WIDGET_SUPPORT_POWERED_BY=Powered by MiroTalk SFU # Powered by text - -# Widget Alert Notifications -WIDGET_ALERT_ENABLED=false # Enable alert notifications (true|false) -WIDGET_ALERT_TYPE=email # Alert notification type (email) need EMAIL_ALERTS_ENABLED=true and configuration - -# App -UI_LANGUAGE=en # Interface language (en, es, fr, etc.) -APP_NAME=MiroTalk SFU # Application name -APP_TITLE= # Custom HTML title (leave empty for default) -APP_DESCRIPTION= # Application description -JOIN_DESCRIPTION= # Join screen description -JOIN_BUTTON_LABEL=JOIN ROOM # Join button text -JOIN_LAST_LABEL=Your recent room: # Recent room label text - -# Site -SITE_TITLE= # Website title -SITE_ICON_PATH=../images/logo.svg # Favicon path -APPLE_TOUCH_ICON_PATH=../images/logo.svg # Apple touch icon path -NEW_ROOM_TITLE= # New room title -NEW_ROOM_DESC= # New room description - -# Meta -META_DESCRIPTION= # HTML meta description -META_KEYWORDS= # HTML meta keywords - -# OG -OG_TYPE=app-webrtc # OpenGraph type -OG_SITE_NAME=MiroTalk SFU # OG site name -OG_TITLE= # OG title -OG_DESCRIPTION= # OG description -OG_IMAGE_URL=https://sfu.mirotalk.com/images/mirotalksfu.png # OG image -OG_URL=https://sfu.mirotalk.com # OG URL - -# HTML -SHOW_TOP_SPONSORS=true # Show top sponsors section (true|false) -SHOW_FEATURES=true # Show features section (true|false) -SHOW_TEAMS=true # Show teams section (true|false) -SHOW_TRY_EASIER=true # Show "try easier" section (true|false) -SHOW_POWERED_BY=true # Show powered by (true|false) -SHOW_SPONSORS=true # Show sponsors (true|false) -SHOW_ADVERTISERS=true # Show advertisers (true|false) -SHOW_SUPPORT_US=true # Show support us section (true|false) -SHOW_FOOTER=true # Show footer (true|false) - -# Who Are You -WHO_ARE_YOU_TITLE="Who are you?" # Title -WHO_ARE_YOU_DESCRIPTION="If you're the presenter, please log in now.
Otherwise, kindly wait for the presenter to join." # Description -WHO_ARE_YOU_BUTTON_LOGIN_LABEL="LOGIN" # Login button label -WHO_ARE_YOU_JOIN_LABEL="JOIN ROOM" # Join button label - -# About -ABOUT_IMAGE_URL=../images/mirotalk-logo.gif # About section image -SUPPORT_URL=https://codecanyon.net/user/miroslavpejic85 # Support link URL -SUPPORT_TEXT=Support # Support button text -AUTHOR_LABEL=Author # Author label text -AUTHOR_NAME=Miroslav Pejic # Author name -LINKEDIN_URL=https://www.linkedin.com/in/miroslav-pejic-976a07101/ # LinkedIn profile -CONTACT_EMAIL=miroslav.pejic.85@gmail.com # Contact email -EMAIL_SUBJECT=MiroTalk SFU info # Email subject -COPYRIGHT_TEXT=MiroTalk SFU, all rights reserved # Copyright text - -# ---------------------------------------------------- -# 9. UI Button Configuration -# ---------------------------------------------------- - -# Active Rooms -SHOW_ACTIVE_ROOMS=false # Show active rooms feature (true|false) - -# Popup Configuration -SHOW_SHARE_ROOM_POPUP=true # Show share room popup (true|false) -SHOW_SHARE_ROOM_QR_ON_HOVER=true # Show share room QR popup on mouse hover (true|false) - -# Main Control Buttons -SHOW_SHARE_BUTTON=true # Show share button (true|false) -SHOW_HIDE_ME=true # Show hide me button (true|false) -SHOW_FULLSCREEN_BUTTON=true # Show fullscreen button (true|false) -SHOW_AUDIO_BUTTON=true # Show audio button (true|false) -SHOW_VIDEO_BUTTON=true # Show video button (true|false) -SHOW_SCREEN_BUTTON=true # Show screen share button (true|false) -SHOW_SWAP_CAMERA=true # Show camera swap button (true|false) -SHOW_CHAT_BUTTON=true # Show chat button (true|false) -SHOW_POLL_BUTTON=true # Show poll button (true|false) -SHOW_EDITOR_BUTTON=true # Show editor button (true|false) -SHOW_RAISE_HAND=true # Show raise hand button (true|false) -SHOW_TRANSCRIPTION=true # Show transcription button (true|false) -SHOW_WHITEBOARD=true # Show whiteboard button (true|false) -SHOW_DOCUMENT_PIP=true # Show document PiP button (true|false) -SHOW_SNAPSHOT=true # Show snapshot button (true|false) -SHOW_EMOJI=true # Show emoji button (true|false) -SHOW_SETTINGS=true # Show settings button (true|false) -SHOW_ABOUT=true # Show about button (true|false) -SHOW_EXIT_BUTTON=true # Show exit button (true|false) -SHOW_EXTRA_BUTTON=true # Show extra buttons (true|false) - -# Settings Panel -SHOW_ROOMS=true # Show rooms (true|false) -ENABLE_FILE_SHARING=true # Enable file sharing (true|false) -SHOW_LOCK_ROOM=true # Show lock room button (true|false) -SHOW_UNLOCK_ROOM=true # Show unlock room button (true|false) -SHOW_BROADCASTING=true # Show broadcasting button (true|false) -SHOW_LOBBY=true # Show lobby button (true|false) -SHOW_EMAIL_INVITE=true # Show email invitation button (true|false) -SHOW_MIC_OPTIONS=true # Show mic options button (true|false) -SHOW_RTMP_TAB=true # Show RTMP tab (true|false) -SHOW_NOTIFICATIONS_TAB=true # Show notifications tab (true|false) -SHOW_MODERATOR_TAB=true # Show moderator tab (true|false) -SHOW_RECORDING_TAB=true # Show recording tab (true|false) -HOST_ONLY_RECORDING=true # Only host can record (true|false) -ENABLE_PUSH_TO_TALK=true # Enable push-to-talk (true|false) -SHOW_KEYBOARD_SHORTCUTS=true # Show keyboard shortcuts (true|false) -SHOW_VIRTUAL_BACKGROUND=true # Show virtual background (true|false) - -# Video Controls -ENABLE_PIP=true # Enable picture-in-picture (true|false) -SHOW_MIRROR_BUTTON=true # Show mirror button (true|false) -SHOW_FULLSCREEN=true # Show fullscreen button (true|false) -SHOW_SNAPSHOT_BUTTON=true # Show snapshot button (true|false) -SHOW_MUTE_AUDIO=true # Show mute audio button (true|false) -SHOW_PRIVACY_TOGGLE=true # Show privacy toggle (true|false) -SHOW_VOLUME_CONTROL=true # Show volume control (true|false) -SHOW_FOCUS_BUTTON=true # Show focus button (true|false) -SHOW_SEND_MESSAGE=true # Show send message button (true|false) -SHOW_SEND_FILE=true # Show send file button (true|false) -SHOW_SEND_VIDEO=true # Show send video button (true|false) -SHOW_MUTE_VIDEO=true # Show mute video button (true|false) -SHOW_GEO_LOCATION=true # Show geoLocation button (true|false) -SHOW_BAN_BUTTON=true # Show ban button (true|false) -SHOW_EJECT_BUTTON=true # Show eject button (true|false) - -# Chat Controls -SHOW_CHAT_PIN=true # Show chat pin button (true|false) -SHOW_CHAT_MAXIMIZE=true # Show chat maximize button (true|false) -SHOW_CHAT_SAVE=true # Show chat save button (true|false) -SHOW_CHAT_EMOJI=true # Show chat emoji button (true|false) -SHOW_CHAT_MARKDOWN=true # Show chat markdown button (true|false) -SHOW_CHAT_SPEECH=true # Show chat speech button (true|false) -ENABLE_CHAT_GPT=true # Enable ChatGPT in chat (true|false) -ENABLE_DEEP_SEEK=true # Enable DeepSeek in chat (true|false) - -# Poll Controls -SHOW_POLL_PIN=true # Show poll pin button (true|false) -SHOW_POLL_MAXIMIZE=true # Show poll maximize button (true|false) -SHOW_POLL_SAVE=true # Show poll save button (true|false) - -# Participants Controls -SHOW_SAVE_INFO=true # Show save info button (true|false) -SHOW_SEND_FILE_ALL=true # Show send file to all button (true|false) -SHOW_EJECT_ALL=true # Show eject all button (true|false) - -# Whiteboard Controls -SHOW_WB_LOCK=true # Show whiteboard lock button (true|false) - -# ---------------------------------------------------- -# 10. Feature Flags -# ---------------------------------------------------- - -SURVEY_ENABLED=false # Enable post-call survey (true|false) -SURVEY_URL= # Survey URL - -# Redirect -REDIRECT_ENABLED=false # Enable post-call redirect (true|false) -REDIRECT_URL= # Redirect URL - -# Stats -STATS_ENABLED=true # Enable usage statistics (true|false) -STATS_SRC=https://stats.mirotalk.com/script.js # Stats script URL -STATS_ID=41d26670-f275-45bb-af82-3ce91fe57756 # Stats tracking ID - -# Custom noise suppression -CUSTOM_NOISE_SUPPRESSION_ENABLED=true # Enable custom noise suppression, default one will still work if this is disabled (true|false) - -# ----------------------------------------------------- -# 11. Global Moderation Configuration -# ----------------------------------------------------- - -ROOM_MAX_PARTICIPANTS=1000 # Maximum participants per room -ROOM_LOBBY=false # Enable room lobby (true|false) - -# ---------------------------------------------------- -# 12. Mediasoup Configuration -# ---------------------------------------------------- - -MEDIASOUP_ROUTER_AUDIO_LEVEL_OBSERVER_ENABLED=true # Enable audio level observer (true|false) -MEDIASOUP_ROUTER_ACTIVE_SPEAKER_OBSERVER_ENABLED=false # Enable active speaker observer (true|false) -MEDIASOUP_LOG_LEVEL=error # Mediasoup log level (debug, warn, error) \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index 3a348fae..a7c8a796 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -79,7 +79,7 @@ body: - type: textarea attributes: label: Additional context - description: Please provide more details in case they apply (such as the MiroTalk SFU version you are running, if you are hosting your own server). + description: Please provide more details in case they apply (such as the CodePill version you are running, if you are hosting your own server). - type: markdown attributes: value: | diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml index b96f0a78..2b11fcb2 100644 --- a/.github/ISSUE_TEMPLATE/2-feature.yml +++ b/.github/ISSUE_TEMPLATE/2-feature.yml @@ -1,11 +1,11 @@ name: Feature request -description: Suggest an idea for MiroTalk SFU +description: Suggest an idea for CodePill labels: ["feature-request"] body: - type: markdown attributes: value: | - Thank you for suggesting an idea to make MiroTalk SFU better. + Thank you for suggesting an idea to make CodePill better. **Note**: the ultimate decision for implementing features lies on the MiroTalk team, not all feature requests shall be accepted. - type: textarea diff --git a/README.md b/README.md index 90741333..6a5c17a1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

MiroTalk SFU

+

CodePill


@@ -23,10 +23,10 @@ This project is proudly sponsored by
-

MiroTalk SFU stands for Selective Forwarding Unit, built on Mediasoup, a powerful media server that routes video/audio streams between participants. It offers a rich set of features for WebRTC meetings, webinars, and more. Simple, Secure, Scalable Real-Time Video Conferences with support for up to 8K resolution and 60fps. It's compatible with all major browsers and platforms.

+

CodePill stands for Selective Forwarding Unit, built on Mediasoup, a powerful media server that routes video/audio streams between participants. It offers a rich set of features for WebRTC meetings, webinars, and more. Simple, Secure, Scalable Real-Time Video Conferences with support for up to 8K resolution and 60fps. It's compatible with all major browsers and platforms.

- Explore MiroTalk SFU + Explore CodePill


@@ -180,7 +180,7 @@ Example:
-- 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 [22.X](https://nodejs.org/en/download). +- Before running CodePill, 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 [22.X](https://nodejs.org/en/download). - Requirements install example for `Ubuntu 24.04 LTS` @@ -231,7 +231,7 @@ $ SERVER_LISTEN_PORT=3011 npm start > \[!NOTE] > -> To run `MiroTalk SFU` on a `Windows operating system`, you can follow the instructions provided in [this documentation](https://github.com/miroslavpejic85/mirotalksfu/issues/99#issuecomment-1586073853). +> To run `CodePill` on a `Windows operating system`, you can follow the instructions provided in [this documentation](https://github.com/miroslavpejic85/mirotalksfu/issues/99#issuecomment-1586073853). @@ -313,7 +313,7 @@ To quickly add a support [widget](https://codepen.io/Miroslav-Pejic/pen/LEpzGXO) data-connect-text="connect in < 5 seconds" data-online-text="We are online" data-offline-text="We are offline" - data-powered-by="Powered by MiroTalk SFU" + data-powered-by="Powered by CodePill" > @@ -330,7 +330,7 @@ To quickly add a support [widget](https://codepen.io/Miroslav-Pejic/pen/LEpzGXO) - `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 CodePill` 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 CodePill 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). @@ -454,7 +454,7 @@ Experience also top-tier German web hosting – dedicated servers, VPS, and web --- -To set up your own instance of `MiroTalk SFU` on a dedicated cloud server, please refer to our comprehensive [self-hosting documentation](https://docs.mirotalk.com/mirotalk-sfu/self-hosting/). This guide will walk you through the process step by step, ensuring a smooth and successful deployment. +To set up your own instance of `CodePill` on a dedicated cloud server, please refer to our comprehensive [self-hosting documentation](https://docs.mirotalk.com/mirotalk-sfu/self-hosting/). This guide will walk you through the process step by step, ensuring a smooth and successful deployment. @@ -499,9 +499,9 @@ https://sfu.mirotalk.com [![AGPLv3](public/images/AGPLv3.png)](LICENSE) -MiroTalk SFU is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please `respect the license conditions`, In particular `modifications need to be free as well and made available to the public`. Get a quick overview of the license at [Choose an open source license](https://choosealicense.com/licenses/agpl-3.0/). +CodePill is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please `respect the license conditions`, In particular `modifications need to be free as well and made available to the public`. Get a quick overview of the license at [Choose an open source license](https://choosealicense.com/licenses/agpl-3.0/). -To obtain a [MiroTalk SFU license](https://docs.mirotalk.com/license/licensing-options/) with terms different from the AGPLv3, you can conveniently make your [purchase on CodeCanyon](https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970). This allows you to tailor the licensing conditions to better suit your specific requirements. +To obtain a [CodePill license](https://docs.mirotalk.com/license/licensing-options/) with terms different from the AGPLv3, you can conveniently make your [purchase on CodeCanyon](https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970). This allows you to tailor the licensing conditions to better suit your specific requirements. @@ -510,7 +510,7 @@ 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! +Do you find CodePill 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 CodePill. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact – back CodePill today and be part of this exciting journey! | | | | | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | diff --git a/app/api/swagger.yaml b/app/api/swagger.yaml index 977c17b9..0c22a333 100644 --- a/app/api/swagger.yaml +++ b/app/api/swagger.yaml @@ -1,8 +1,8 @@ swagger: '2.0' info: - title: MiroTalk SFU API - description: API description for external applications that integrate with MiroTalk SFU. + title: CodePill API + description: API description for external applications that integrate with CodePill. version: 1.0.1 basePath: /api/v1 diff --git a/app/src/HtmlInjector.js b/app/src/HtmlInjector.js index 835689fc..34a3098b 100644 --- a/app/src/HtmlInjector.js +++ b/app/src/HtmlInjector.js @@ -22,11 +22,11 @@ class HtmlInjector { getInjectData() { return { OG_TYPE: this.config?.og?.type || 'app-webrtc', - OG_SITE_NAME: this.config?.og?.siteName || 'MiroTalk SFU', + OG_SITE_NAME: this.config?.og?.siteName || 'CodePill', OG_TITLE: this.config?.og?.title || 'Click the link to make a call.', OG_DESCRIPTION: this.config?.og?.description || - 'MiroTalk SFU calling provides real-time video calls, messaging and screen sharing.', + 'CodePill calling provides real-time video calls, messaging and screen sharing.', OG_IMAGE: this.config?.og?.image || 'https://sfu.mirotalk.com/images/mirotalksfu.png', OG_URL: this.config?.og?.url || 'https://sfu.mirotalk.com', // Add more data here as needed with fallbacks diff --git a/app/src/Server.js b/app/src/Server.js index d8fb5e86..548daa63 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -56,13 +56,13 @@ dev dependencies: { */ /** - * MiroTalk SFU - Server component + * Lika2 SFU - Server component * - * @link GitHub: https://github.com/miroslavpejic85/mirotalksfu - * @link Official Live demo: https://sfu.mirotalk.com + * @link GitHub: https://github.com/miroslavpejic85/Lika2sfu + * @link Official Live demo: https://sfu.Lika2.com * @license For open source use: AGPLv3 - * @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 + * @license For commercial or closed source, contact us at license.Lika2@gmail.com or purchase directly via CodeCanyon + * @license CodeCanyon: https://codecanyon.net/item/Lika2-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com * @version 2.0.13 * @@ -155,7 +155,7 @@ const host = config?.server?.hostUrl || `http://localhost:${config?.server?.list const trustProxy = Boolean(config?.server?.trustProxy); const jwtCfg = { - JWT_KEY: config?.security?.jwt?.key || 'mirotalksfu_jwt_secret', + JWT_KEY: config?.security?.jwt?.key || 'Lika2sfu_jwt_secret', JWT_EXP: config?.security?.jwt?.exp || '1h', }; @@ -242,7 +242,7 @@ if (enabled && commands.length > 0 && token) { // Stats const defaultStats = { enabled: true, - src: 'https://stats.mirotalk.com/script.js', + src: 'https://stats.Lika2.com/script.js', id: '41d26670-f275-45bb-af82-3ce91fe57756', }; @@ -659,9 +659,9 @@ function startServer() { log.debug('Direct Join', req.query); - // http://localhost:3010/join?room=test&name=mirotalksfu&audio=0&video=0&screen=0¬ify=0&chat=1 - // http://localhost:3010/join?room=test&roomPassword=0&name=mirotalksfu&audio=1&video=1&screen=0&hide=0¬ify=1&duration=00:00:30 - // http://localhost:3010/join?room=test&roomPassword=0&name=mirotalksfu&audio=1&video=1&screen=0&hide=0¬ify=0&token=token + // http://localhost:3010/join?room=test&name=Lika2sfu&audio=0&video=0&screen=0¬ify=0&chat=1 + // http://localhost:3010/join?room=test&roomPassword=0&name=Lika2sfu&audio=1&video=1&screen=0&hide=0¬ify=1&duration=00:00:30 + // http://localhost:3010/join?room=test&roomPassword=0&name=Lika2sfu&audio=1&video=1&screen=0&hide=0¬ify=0&token=token const { room, roomPassword, name, audio, video, screen, hide, notify, chat, duration, token, isPresenter } = checkXSS(req.query); @@ -802,21 +802,21 @@ function startServer() { }); // privacy policy - app.get('/privacy', (req, res) => { - res.sendFile(views.privacy); - }); + // app.get('/privacy', (req, res) => { + // res.sendFile(views.privacy); + // }); - // mirotalk about - app.get('/about', (req, res) => { - res.sendFile(views.about); - }); + // Lika2 about + // app.get('/about', (req, res) => { + // res.sendFile(views.about); + // }); - // Get stats endpoint - app.get('/stats', (req, res) => { - const stats = config?.features?.stats || defaultStats; - // log.debug('Send stats', stats); - res.send(stats); - }); + // // Get stats endpoint + // app.get('/stats', (req, res) => { + // const stats = config?.features?.stats || defaultStats; + // // log.debug('Send stats', stats); + // res.send(stats); + // }); // handle who are you: Presenter or Guest app.get('/whoAreYou/:roomId', (req, res) => { @@ -1285,7 +1285,7 @@ function startServer() { const api = new ServerApi(host, authorization); if (!api.isAuthorized()) { - log.debug('MiroTalk get meetings - Unauthorized', { + log.debug('Lika2 get meetings - Unauthorized', { header: req.headers, body: req.body, }); @@ -1302,7 +1302,7 @@ function startServer() { }); // log.debug the output if all done - log.debug('MiroTalk get stats - Authorized', { + log.debug('Lika2 get stats - Authorized', { header: req.headers, body: req.body, timestamp, @@ -1327,7 +1327,7 @@ function startServer() { const { host, authorization } = req.headers; const api = new ServerApi(host, authorization); if (!api.isAuthorized()) { - log.debug('MiroTalk get meetings - Unauthorized', { + log.debug('Lika2 get meetings - Unauthorized', { header: req.headers, body: req.body, }); @@ -1337,7 +1337,7 @@ function startServer() { const meetings = api.getMeetings(roomList); res.json({ meetings: meetings }); // log.debug the output if all done - log.debug('MiroTalk get meetings - Authorized', { + log.debug('Lika2 get meetings - Authorized', { header: req.headers, body: req.body, meetings: meetings, @@ -1356,7 +1356,7 @@ function startServer() { const { host, authorization } = req.headers; const api = new ServerApi(host, authorization); if (!api.isAuthorized()) { - log.debug('MiroTalk get meeting - Unauthorized', { + log.debug('Lika2 get meeting - Unauthorized', { header: req.headers, body: req.body, }); @@ -1366,7 +1366,7 @@ function startServer() { const meetingURL = api.getMeetingURL(); res.json({ meeting: meetingURL }); // log.debug the output if all done - log.debug('MiroTalk get meeting - Authorized', { + log.debug('Lika2 get meeting - Authorized', { header: req.headers, body: req.body, meeting: meetingURL, @@ -1385,7 +1385,7 @@ function startServer() { const { host, authorization } = req.headers; const api = new ServerApi(host, authorization); if (!api.isAuthorized()) { - log.debug('MiroTalk get join - Unauthorized', { + log.debug('Lika2 get join - Unauthorized', { header: req.headers, body: req.body, }); @@ -1395,7 +1395,7 @@ function startServer() { const joinURL = api.getJoinURL(req.body); res.json({ join: joinURL }); // log.debug the output if all done - log.debug('MiroTalk get join - Authorized', { + log.debug('Lika2 get join - Authorized', { header: req.headers, body: req.body, join: joinURL, @@ -1414,7 +1414,7 @@ function startServer() { const { host, authorization } = req.headers; const api = new ServerApi(host, authorization); if (!api.isAuthorized()) { - log.debug('MiroTalk get token - Unauthorized', { + log.debug('Lika2 get token - Unauthorized', { header: req.headers, body: req.body, }); @@ -1424,7 +1424,7 @@ function startServer() { const token = api.getToken(req.body); res.json({ token: token }); // log.debug the output if all done - log.debug('MiroTalk get token - Authorized', { + log.debug('Lika2 get token - Authorized', { header: req.headers, body: req.body, token: token, @@ -1489,7 +1489,7 @@ function startServer() { res.json({ activeRooms: activeRooms }); // log.debug the output if all done - log.debug('MiroTalk get active rooms - Authorized', { + log.debug('Lika2 get active rooms - Authorized', { header: req.headers, body: req.body, activeRooms: activeRooms, diff --git a/app/src/config.template.js b/app/src/config.template.js index 80fc1f1a..c2f399a4 100644 --- a/app/src/config.template.js +++ b/app/src/config.template.js @@ -2,10 +2,10 @@ /** * ============================================== - * MiroTalk SFU - Configuration File + * Lika2 SFU - Configuration File * ============================================== * - * This file contains all configurable settings for the MiroTalk SFU application. + * This file contains all configurable settings for the Lika2 SFU application. * Environment variables can override most settings (see each section for details). * * Structure: @@ -201,8 +201,8 @@ module.exports = { * - server : RTMP server URL (default: 'rtmp://localhost:1935') * - appName : Application name (default: 'live') * - streamKey : Optional authentication key (auto-generated UUID if empty) - * - secret : Must match NodeMediaServer's config.js (default: 'mirotalkRtmpSecret') - * - apiSecret : WebRTC→RTMP API secret (default: 'mirotalkRtmpApiSecret') + * - secret : Must match NodeMediaServer's config.js (default: 'Lika2RtmpSecret') + * - apiSecret : WebRTC→RTMP API secret (default: 'Lika2RtmpApiSecret') * - expirationHours : Stream URL expiry in hours (default: 4) * - dir : Video storage directory (default: 'app/rtmp') * - ffmpegPath : FFmpeg binary path (auto-detected) @@ -210,12 +210,12 @@ module.exports = { * * Server Management * ---------------- - * NodeMediaServer (mirotalk/nms:latest): + * NodeMediaServer (Lika2/nms:latest): * - Start: npm run nms-start * - Stop: npm run nms-stop * - Logs: npm run nms-logs * - * NGINX-RTMP (mirotalk/rtmp:latest): + * NGINX-RTMP (Lika2/rtmp:latest): * - Start: npm run rtmp-start * - Stop: npm run rtmp-stop * - Logs: npm run rtmp-logs @@ -239,7 +239,7 @@ module.exports = { * * Documentation: * -------------- - * - https://docs.mirotalk.com/mirotalk-sfu/rtmp/ + * - https://docs.Lika2.com/Lika2-sfu/rtmp/ */ rtmp: { enabled: process.env.RTMP_ENABLED === 'true', @@ -251,8 +251,8 @@ module.exports = { server: process.env.RTMP_SERVER || 'rtmp://localhost:1935', appName: process.env.RTMP_APP_NAME || 'live', streamKey: process.env.RTMP_STREAM_KEY || '', - secret: process.env.RTMP_SECRET || 'mirotalkRtmpSecret', - apiSecret: process.env.RTMP_API_SECRET || 'mirotalkRtmpApiSecret', + secret: process.env.RTMP_SECRET || 'Lika2RtmpSecret', + apiSecret: process.env.RTMP_API_SECRET || 'Lika2RtmpApiSecret', expirationHours: parseInt(process.env.RTMP_EXPIRATION_HOURS) || 4, dir: 'rtmp', ffmpegPath: RTMP_FFMPEG_PATH, @@ -289,7 +289,7 @@ module.exports = { * - exp: Token expiration time */ jwt: { - key: process.env.JWT_SECRET || 'mirotalksfu_jwt_secret', + key: process.env.JWT_SECRET || 'Lika2sfu_jwt_secret', exp: process.env.JWT_EXPIRATION || '1h', }, @@ -347,7 +347,7 @@ module.exports = { clientSecret: process.env.OIDC_CLIENT_SECRET || 'clientSecret', // Session configuration - secret: process.env.OIDC_SECRET || 'mirotalksfu-oidc-secret', + secret: process.env.OIDC_SECRET || 'Lika2sfu-oidc-secret', authRequired: process.env.OIDC_AUTH_REQUIRED === 'true', // Whether all routes require authentication auth0Logout: process.env.OIDC_AUTH_LOGOUT !== 'false', // Use provider's logout endpoint @@ -410,20 +410,20 @@ module.exports = { * * Documentation: * ------------- - * https://docs.mirotalk.com/mirotalk-sfu/host-protection/ + * https://docs.Lika2.com/Lika2-sfu/host-protection/ */ host: { protected: process.env.HOST_PROTECTED === 'true', user_auth: process.env.HOST_USER_AUTH === 'true', users_from_db: process.env.HOST_USERS_FROM_DB === 'true', - users_api_secret_key: process.env.USERS_API_SECRET || 'mirotalkweb_default_secret', - users_api_endpoint: process.env.USERS_API_ENDPOINT || 'http://localhost:9000/api/v1/user/isAuth', // 'https://webrtc.mirotalk.com/api/v1/user/isAuth' + users_api_secret_key: process.env.USERS_API_SECRET || 'Lika2web_default_secret', + users_api_endpoint: process.env.USERS_API_ENDPOINT || 'http://localhost:9000/api/v1/user/isAuth', // 'https://webrtc.Lika2.com/api/v1/user/isAuth' users_api_room_allowed: - process.env.USERS_ROOM_ALLOWED_ENDPOINT || 'http://localhost:9000/api/v1/user/isRoomAllowed', // 'https://webrtc.mirotalk.com/api/v1/user/isRoomAllowed' + process.env.USERS_ROOM_ALLOWED_ENDPOINT || 'http://localhost:9000/api/v1/user/isRoomAllowed', // 'https://webrtc.Lika2.com/api/v1/user/isRoomAllowed' users_api_rooms_allowed: - 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' + process.env.USERS_ROOMS_ALLOWED_ENDPOINT || 'http://localhost:9000/api/v1/user/roomsAllowed', // 'https://webrtc.Lika2.com/api/v1/user/roomsAllowed' + api_room_exists: process.env.ROOM_EXISTS_ENDPOINT || 'http://localhost:9000/api/v1/room/exists', // 'https://webrtc.Lika2.com//api/v1/room/exists' users: process.env.HOST_USERS ? process.env.HOST_USERS.split('|').map((userStr) => { @@ -498,11 +498,11 @@ module.exports = { * * API Documentation: * ------------------ - * - Complete API reference: https://docs.mirotalk.com/mirotalk-sfu/api/ + * - Complete API reference: https://docs.Lika2.com/Lika2-sfu/api/ * - Webhook setup: See integration guides for Slack/Mattermost */ api: { - keySecret: process.env.API_KEY_SECRET || 'mirotalksfu_default_secret', + keySecret: process.env.API_KEY_SECRET || 'Lika2sfu_default_secret', allowed: { stats: process.env.API_ALLOW_STATS !== 'false', meetings: process.env.API_ALLOW_MEETINGS === 'true', @@ -631,13 +631,13 @@ module.exports = { * AI Behavior: * ----------- * - systemLimit: Personality/behavior instructions for the AI avatar - * (default: Streaming avatar instructions for MiroTalk SFU) + * (default: Streaming avatar instructions for Lika2 SFU) */ videoAI: { enabled: process.env.VIDEOAI_ENABLED === 'true', basePath: 'https://api.heygen.com', apiKey: process.env.VIDEOAI_API_KEY || '', - systemLimit: process.env.VIDEOAI_SYSTEM_LIMIT || 'You are a streaming avatar from MiroTalk SFU...', + systemLimit: process.env.VIDEOAI_SYSTEM_LIMIT || 'You are a streaming avatar from Lika2 SFU...', }, /** @@ -678,7 +678,7 @@ module.exports = { username: process.env.EMAIL_USERNAME || 'your_username', password: process.env.EMAIL_PASSWORD || 'your_password', from: process.env.EMAIL_FROM || process.env.EMAIL_USERNAME, - sendTo: process.env.EMAIL_SEND_TO || 'sfu.mirotalk@gmail.com', + sendTo: process.env.EMAIL_SEND_TO || 'sfu.Lika2@gmail.com', }, /** @@ -793,7 +793,7 @@ module.exports = { { name: process.env.DISCORD_COMMAND_NAME || '/sfu', message: process.env.DISCORD_DEFAULT_MESSAGE || 'Here is your SFU meeting room:', - baseUrl: process.env.DISCORD_BASE_URL || 'https://sfu.mirotalk.com/join/', + baseUrl: process.env.DISCORD_BASE_URL || 'https://sfu.Lika2.com/join/', }, ], }, @@ -870,7 +870,7 @@ module.exports = { * Implementation Guide: * -------------------- * - For complete implementation examples, refer to: - * - Project demo: /mirotalksfu/webhook/ folder + * - Project demo: /Lika2sfu/webhook/ folder */ webhook: { enabled: process.env.WEBHOOK_ENABLED === 'true', @@ -917,7 +917,7 @@ module.exports = { * - Sign in to AWS Management Console * - Navigate to S3 service * - Click "Create bucket" - * - Choose unique name (e.g., 'mirotalk') + * - Choose unique name (e.g., 'Lika2') * - Select region (must match AWS_REGION in config) * - Enable desired settings (versioning, logging, etc.) * @@ -950,7 +950,7 @@ module.exports = { accessKeyId: process.env.AWS_ACCESS_KEY_ID || 'your-access-key-id', secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || 'your-secret-access-key', region: process.env.AWS_REGION || 'us-east-2', - bucket: process.env.AWS_S3_BUCKET || 'mirotalk', + bucket: process.env.AWS_S3_BUCKET || 'Lika2', }, }, @@ -968,14 +968,14 @@ module.exports = { * ============================================== * LICENSE REQUIRED: * ============================================== - * - https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 + * - https://codecanyon.net/item/Lika2-sfu-webrtc-realtime-video-conferences/40769970 */ rooms: { /** * Room Display Settings * --------------------- * - showActive: Show active rooms in the UI (default: false) - * https://sfu.mirotalk.com/activeRooms + * https://sfu.Lika2.com/activeRooms */ showActive: process.env.SHOW_ACTIVE_ROOMS === 'true', }, @@ -992,14 +992,14 @@ module.exports = { htmlInjection: process.env.BRAND_HTML_INJECTION !== 'false', app: { - language: process.env.UI_LANGUAGE || 'en', - name: process.env.APP_NAME || 'MiroTalk SFU', + language: process.env.UI_LANGUAGE || 'ar', + name: process.env.APP_NAME || 'Lika2', title: process.env.APP_TITLE || - '

MiroTalk SFU

Free browser based Real-time video calls.
Simple, Secure, Fast.', + '

Lika2 SFU

', description: process.env.APP_DESCRIPTION || - 'Start your next video call with a single click. No download, plug-in, or login is required.', + '', joinDescription: process.env.JOIN_DESCRIPTION || 'Pick a room name.
How about this one?', joinButtonLabel: process.env.JOIN_BUTTON_LABEL || 'JOIN ROOM', joinLastLabel: process.env.JOIN_LAST_LABEL || 'Your recent room:', @@ -1011,7 +1011,7 @@ module.exports = { * Site-wide settings including icons and page-specific content. */ site: { - title: process.env.SITE_TITLE || 'MiroTalk SFU, Free Video Calls, Messaging and Screen Sharing', + title: process.env.SITE_TITLE || 'CodePill', icon: process.env.SITE_ICON_PATH || '../images/logo.svg', appleTouchIcon: process.env.APPLE_TOUCH_ICON_PATH || '../images/logo.svg', newRoomTitle: process.env.NEW_ROOM_TITLE || 'Pick name.
Share URL.
Start conference.', @@ -1027,8 +1027,8 @@ module.exports = { meta: { description: process.env.META_DESCRIPTION || - 'MiroTalk SFU powered by WebRTC and mediasoup for real-time video communications.', - keywords: process.env.META_KEYWORDS || 'webrtc, video calls, conference, screen sharing, mirotalk, sfu', + 'Lika2 SFU powered by WebRTC and mediasoup for real-time video communications.', + keywords: process.env.META_KEYWORDS || 'webrtc, video calls, conference, screen sharing, Lika2, sfu', }, /** @@ -1038,12 +1038,12 @@ module.exports = { */ og: { type: process.env.OG_TYPE || 'app-webrtc', - siteName: process.env.OG_SITE_NAME || 'MiroTalk SFU', + siteName: process.env.OG_SITE_NAME || 'Lika2 SFU', title: process.env.OG_TITLE || 'Click the link to make a call.', description: - process.env.OG_DESCRIPTION || 'MiroTalk SFU provides real-time video calls and screen sharing.', - image: process.env.OG_IMAGE_URL || 'https://sfu.mirotalk.com/images/mirotalksfu.png', - url: process.env.OG_URL || 'https://sfu.mirotalk.com', + process.env.OG_DESCRIPTION || 'Lika2 SFU provides real-time video calls and screen sharing.', + image: process.env.OG_IMAGE_URL || 'https://sfu.Lika2.com/images/Lika2sfu.png', + url: process.env.OG_URL || 'https://sfu.Lika2.com', }, /** @@ -1086,7 +1086,7 @@ module.exports = { * Supports HTML content for flexible formatting. */ about: { - imageUrl: process.env.ABOUT_IMAGE_URL || '../images/mirotalk-logo.gif', + imageUrl: process.env.ABOUT_IMAGE_URL || '../images/Lika2-logo.gif', title: `WebRTC SFU v${packageJson.version}`, html: ` - - - - - - - - - - - + + + + + + + + + + + + @@ -204,36 +214,38 @@ access to use this app.
- - - - - - - - - - - - - - + + + + + + + + + + + + + +
- - - - - - - - - - - - - + + + + + + + + + + + + + + +
@@ -245,1074 +257,1048 @@ access to use this app.
- - - - - - - - - - - - - - + + + + + + + + + + +
-
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -

Volume bar

-
-
-
- -
-
-
- -

Sounds

-
-
-
- -
-
-
- -

Share

-
-
-
- -
-
-
- -

Buttons

-
-
-
- -
-
-
- - - - - - - - - -
-
- -

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

-
-
-
- -

00:00:00

-
-
+
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

Volume bar

+
+
+
+ +
+
+
+ +

Sounds

+
+
+
+ +
+
+
+ +

Share

+
+
+
+ +
+
+
+ +

Buttons

+
+
+
+ +
+
+
+ + + + + + + + + +
+
+ +

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

+
+
+
+ +

00:00:00

+
+
+
-
- -

+
+ +

+
+ +

Video Source:

+
+ +
+ +
+ +

Video Quality:

+
+ +
+ +
+ +
+
+ +

Camera FPS:

+
+
+ +
+ +
+ +
+ +

+
+ +

Microphone:

+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + +
- -

Video Source:

+ +

Noise Suppression

- -
-
+
+
+
+
+
+
+
+
+ +

Speaker:

+
+ + +
+
+ +
+
-
- -

+
+ Notifications mode +
+
+
+ +

Email

+
+ +
+
+
+ +

Events:

+
+ + + + + +
+
+ +

First User Join

+
+
+
+ +
+
+
+ + +
+
+ +
+ Moderator options for Everyone +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +

Start in Privacy Mode

+
+
+
+ +
+
+
+ +

Join Muted

+
+
+
+ +
+
+
+ +

Join Hidden

+
+
+
+ +
+
+
+ +

Restrict Self-Unmute

+
+
+
+ +
+
+
+ +

Restrict Self-Unhide

+
+
+
+ +
+
+
+ +

Disable Screen Sharing

+
+
+
+ +
+
+
+ +

Disable Private Chat

+
+
+
+ +
+
+
+ +

Disable ChatGPT Access

+
+
+
+ +
+
+
+ +

Disable DeepSeek Access

+
+
+
+ +
+
+
+ +

Disable Media Sharing

+
+
+
+ +
+
+
+ +

Disconnect all on Exit

+
+
+
+ +
+
+
+ +
+ + + + + + +
+ +
-
-
+
+
+ +
+ + + + + +
- -

Theme:

+ +

Show free avatars

-
- -
-
- -

Custom theme:

+
+
+
-
- -
-
-
- -

Keep custom

-
-
- -
-
-
-
- -

Buttons bar:

-
-
- -
- -
- - -
-
-
- -

Language:

-
-
-
-
-
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ +
+ +
+ +
+ +
+
+
+ + +
+
+ + + + + + + + + +
+ Video Files: +
+
+ + + +
+
+
+

Stream from URL:

+ + + +
+
+
+

+ Select your desired video and audio sources from settings, then begin RTMP streaming +

+ +
+
+
+
+ +
+ + + + + + + + + +
+
+ +

Username:

+

UserName

+
+
+
+ +

Presenter:

+

true

+
+
+
+ +
+ + + + + +
+
+ +

Shortcuts

+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortcutIconAction
Toggle microphone
Toggle camera
Toggle screen
Toggle raise hand
Toggle chat
Toggle settings
Toggle hide myself
Toggle recording
Toggle emoji
Toggle captions
Toggle polls
Toggle editor
Toggle whiteboard
Toggle document PIP
Snapshot screen/window/tab
Share the file
+
+
+ +
+
+
+ +

Aspect ratio:

+
+
+ +
+
+ +

Video Object fit:

+
+
+ +
+
+ +

Video Controls:

+
+
+ +
+
+ +
+
+
+ +

Theme:

+
+
+ +
+
+ +

Custom theme:

+
+
+ +
+
+
+ +

Keep custom

+
+
+ +
+
+
+
+ +

Buttons bar:

+
+
+ +
+ +
+
+ + +
diff --git a/public/views/RtmpStreamer.html b/public/views/RtmpStreamer.html index 439a3b52..3c4cf3f4 100644 --- a/public/views/RtmpStreamer.html +++ b/public/views/RtmpStreamer.html @@ -19,7 +19,7 @@ diff --git a/public/views/about.html b/public/views/about.html index 08ecaa39..b42a983c 100644 --- a/public/views/about.html +++ b/public/views/about.html @@ -3,7 +3,7 @@ - MiroTalk SFU - About. + CodePill - About. @@ -16,7 +16,7 @@ - + diff --git a/public/views/activeRooms.html b/public/views/activeRooms.html index 7dd95ac0..e375ef06 100644 --- a/public/views/activeRooms.html +++ b/public/views/activeRooms.html @@ -1,7 +1,7 @@ - MiroTalk SFU - Active Rooms. + CodePill - Active Rooms. diff --git a/public/views/iframe.html b/public/views/iframe.html index 518fe08d..6fb0b5ad 100644 --- a/public/views/iframe.html +++ b/public/views/iframe.html @@ -3,7 +3,7 @@ - MiroTalk SFU Iframe demo + CodePill Iframe demo diff --git a/public/views/landing.html b/public/views/landing.html index 9297274c..4a9faf80 100644 --- a/public/views/landing.html +++ b/public/views/landing.html @@ -3,7 +3,7 @@ - MiroTalk SFU, Free Video Calls, Messaging and Screen Sharing + CodePill @@ -16,7 +16,7 @@

- MiroTalk SFU
Free browser based Real-time video calls.
+ CodePill
Free browser based Real-time video calls.
Simple, Secure, Fast.

@@ -679,9 +679,9 @@

-

Support MiroTalk SFU

+

Support CodePill

- MiroTalk SFU is a free, open-source project under AGPLv3 license. Your support helps + CodePill is a free, open-source project under AGPLv3 license. Your support helps us maintain servers, add new features, and keep the service free for everyone. Every contribution matters!

@@ -880,7 +880,7 @@ > - +
diff --git a/public/views/login.html b/public/views/login.html index 1576462d..c57c93bb 100644 --- a/public/views/login.html +++ b/public/views/login.html @@ -3,7 +3,7 @@ - MiroTalk SFU - Host Protected login required. + CodePill - Host Protected login required. @@ -16,7 +16,7 @@ - + diff --git a/public/views/newroom.html b/public/views/newroom.html index ce8aa1dc..daa0ecb5 100755 --- a/public/views/newroom.html +++ b/public/views/newroom.html @@ -3,7 +3,7 @@ - MiroTalk SFU - Create your Room name and start the new call. + CodePill - Create your Room name and start the new call. @@ -16,7 +16,7 @@ - + diff --git a/public/views/permission.html b/public/views/permission.html index c31f3cb1..30cdddc8 100755 --- a/public/views/permission.html +++ b/public/views/permission.html @@ -3,7 +3,7 @@ - MiroTalk SFU - Allow Video or Audio access to join in the Room. + CodePill - Allow Video or Audio access to join in the Room. @@ -16,7 +16,7 @@ - + diff --git a/public/views/privacy.html b/public/views/privacy.html index 8ce5a386..f1ea91a5 100755 --- a/public/views/privacy.html +++ b/public/views/privacy.html @@ -3,7 +3,7 @@ - MiroTalk SFU - privacy policy. + CodePill - privacy policy. @@ -16,7 +16,7 @@ Privacy Policy

- MiroTalk SFU has an integrated + CodePill has an integrated mediasoup server. Routing is a multiparty topology, where each participant sends its media to this server and receives all other's media from it. Thanks to the SFU architecture, it allows having @@ -85,7 +85,7 @@ >, then will be downloaded on Your PC/Mobile Device.

We use Umami to track aggregated usage statistics in order to improve our service. The maker of - MiroTalk SFU has no intention of using personally or selling any of + CodePill has no intention of using personally or selling any of the above-mentioned data.

@@ -201,7 +201,7 @@ > - +
diff --git a/public/views/whoAreYou.html b/public/views/whoAreYou.html index 3f7a940d..7da9365c 100755 --- a/public/views/whoAreYou.html +++ b/public/views/whoAreYou.html @@ -3,7 +3,7 @@ - MiroTalk SFU - Who are you. + CodePill - Who are you. @@ -16,7 +16,7 @@ - + diff --git a/rtmpServers/demo/client-server-axios/client/index.html b/rtmpServers/demo/client-server-axios/client/index.html index 50888946..71ca495f 100644 --- a/rtmpServers/demo/client-server-axios/client/index.html +++ b/rtmpServers/demo/client-server-axios/client/index.html @@ -45,7 +45,7 @@ diff --git a/rtmpServers/demo/client-server-socket/client/index.html b/rtmpServers/demo/client-server-socket/client/index.html index 8813a49f..3e18a1dc 100644 --- a/rtmpServers/demo/client-server-socket/client/index.html +++ b/rtmpServers/demo/client-server-socket/client/index.html @@ -46,7 +46,7 @@ diff --git a/webhook/README.md b/webhook/README.md index 54445d28..9e3da881 100644 --- a/webhook/README.md +++ b/webhook/README.md @@ -2,7 +2,7 @@ ![webhook](./webhooks.png) -This example shows how to set up a server to listen for MiroTalk SFU webhook events (join, exitRoom, disconnect). +This example shows how to set up a server to listen for CodePill webhook events (join, exitRoom, disconnect). ### Step 1: Enable Webhooks @@ -33,7 +33,7 @@ WEBHOOK_URL=https://YOUR-DOMAIN-NAME/webhook-endpoint ### Step 3: Webhook Events -MiroTalk SFU sends HTTP `POST` requests to the specified URL with event data: +CodePill sends HTTP `POST` requests to the specified URL with event data: **Example Payload**: diff --git a/widgets/README.md b/widgets/README.md index fc3a65c4..6535712f 100644 --- a/widgets/README.md +++ b/widgets/README.md @@ -1,7 +1,7 @@ -# MiroTalk SFU Widgets +# CodePill Widgets ![widget](./widget.png) --- -This directory contains embeddable example widgets for MiroTalk SFU that can be integrated into any website or application. +This directory contains embeddable example widgets for CodePill that can be integrated into any website or application. diff --git a/widgets/example-2.html b/widgets/example-2.html index da73774d..adf389ac 100644 --- a/widgets/example-2.html +++ b/widgets/example-2.html @@ -31,7 +31,7 @@ connectText: 'connect in < 5 seconds', onlineText: 'We are online', offlineText: 'We are offline', - poweredBy: 'Powered by MiroTalk SFU', + poweredBy: 'Powered by CodePill', }, }, }); diff --git a/widgets/example-3.html b/widgets/example-3.html index 872f65fd..a636e964 100644 --- a/widgets/example-3.html +++ b/widgets/example-3.html @@ -3,7 +3,7 @@ - MiroTalk SFU - Custom Support Widget + CodePill - Custom Support Widget