/* eslint-disable no-unused-vars, no-var */ var config = {}; config.hosts = { domain: 'meet.jitsi', muc: 'muc.meet.jitsi', }; // ВАЖНО: Переопределяем настройки из основного config.js // Используем HTTP (ws://) вместо HTTPS (wss://) для локальной разработки // Это соответствует настройкам в docker-compose.yml: PUBLIC_URL_PROTOCOL=http, DISABLE_HTTPS=1 // Используем 127.0.0.1 вместо localhost, чтобы избежать проблем с кешированием браузера config.bosh = 'http://127.0.0.1:8443/http-bind'; config.websocket = 'ws://127.0.0.1:8443/xmpp-websocket'; // Переопределяем hosts для правильной работы if (typeof config.hosts === 'undefined') { config.hosts = {}; } config.hosts.domain = 'meet.jitsi'; config.hosts.muc = 'muc.meet.jitsi'; // Язык по умолчанию config.defaultLanguage = 'ru'; // Отключить prejoin страницу config.prejoinPageEnabled = false; // Не начинать с выключенным аудио/видео config.startWithAudioMuted = false; config.startWithVideoMuted = false; // Отключить deep linking config.disableDeepLinking = true; // Отключить welcome/close страницы config.enableWelcomePage = false; config.enableClosePage = false; // Отключить сторонние запросы config.disableThirdPartyRequests = true; // Разрешение видео: минимум 720P, рекомендация 1080P config.resolution = 1080; config.constraints = { video: { height: { ideal: 1080, max: 1080, min: 720 }, width: { ideal: 1920, max: 1920, min: 1280 } } }; // Включить обнаружение шумного микрофона config.enableNoisyMicDetection = true; // Отключить статистику и метрики config.disableStats = true; config.analytics = { disabled: true }; // Отключить запись config.disableLocalRecording = true; // КРИТИЧНО: Переопределяем bosh и websocket с защитой от перезаписи // Используем Object.defineProperty для защиты от перезаписи основным config.js (function() { var boshUrl = 'http://127.0.0.1:8443/http-bind'; var websocketUrl = 'ws://127.0.0.1:8443/xmpp-websocket'; // Устанавливаем значения сразу config.bosh = boshUrl; config.websocket = websocketUrl; // Защищаем от перезаписи через Object.defineProperty try { Object.defineProperty(config, 'bosh', { get: function() { return boshUrl; }, set: function(value) { console.warn('[Jitsi Custom Config] Попытка изменить config.bosh на', value, '- игнорируется'); }, configurable: false, enumerable: true }); Object.defineProperty(config, 'websocket', { get: function() { return websocketUrl; }, set: function(value) { console.warn('[Jitsi Custom Config] Попытка изменить config.websocket на', value, '- игнорируется'); }, configurable: false, enumerable: true }); } catch (e) { // Если не удалось установить защиту, используем периодическую проверку setInterval(function() { if (config.bosh !== boshUrl) { config.bosh = boshUrl; console.log('[Jitsi Custom Config] Восстановлен config.bosh'); } if (config.websocket !== websocketUrl) { config.websocket = websocketUrl; console.log('[Jitsi Custom Config] Восстановлен config.websocket'); } }, 100); } })();