CINXE.COM
Jitsi Meet
<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html"> <head> <!-- Compute Pressure --> <meta http-equiv="origin-trial" content="Assj/5G57/ttqRE+RAGipFfy8NXJ738EAvJnLHtSSEIZiwPwKbKJ6e7RbDexYhLiXXwLSsBeLftYyuP2do4BwQwAAABqeyJvcmlnaW4iOiJodHRwczovL21lZXQuaml0LnNpOjQ0MyIsImZlYXR1cmUiOiJDb21wdXRlUHJlc3N1cmVfdjIiLCJleHBpcnkiOjE3MTY5NDA3OTksImlzU3ViZG9tYWluIjp0cnVlfQ=="> <meta charset="utf-8"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <meta name="theme-color" content="#2A3A4B"> <base href="https://meet.jit.si/v1/_cdn/meetjitsi_8266.5204/" /> <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> <link rel="stylesheet" href="css/all.css?v=8266.5204"> <link rel="manifest" id="manifest-placeholder"> <script> function contextRoot(pathname) { const contextRootEndIndex = pathname.lastIndexOf('/'); return ( contextRootEndIndex === -1 ? '/' : pathname.substring(0, contextRootEndIndex + 1) ); } window.EXCALIDRAW_ASSET_PATH = 'libs/'; // Dynamically generate the manifest location URL. It must be served from the document origin, and we may have // the base pointing to the CDN. This way we can generate a full URL which will bypass the base. document.querySelector('#manifest-placeholder').setAttribute('href', window.location.origin + contextRoot(window.location.pathname) + 'manifest.json'); document.addEventListener('DOMContentLoaded', () => { if (!JitsiMeetJS.app) { return; } JitsiMeetJS.app.renderEntryPoint({ Component: JitsiMeetJS.app.entryPoints.APP }) const inIframe = () => { try { return window.self !== window.top; } catch (e) { return true; } }; const isElectron = navigator.userAgent.includes('Electron'); const shouldRegisterWorker = !isElectron && !inIframe() && 'serviceWorker' in navigator; if (shouldRegisterWorker) { navigator.serviceWorker .register(window.location.origin + contextRoot(window.location.pathname) + 'pwa-worker.js') .then(reg => { console.log('Service worker registered.', reg); }) .catch(err => { console.log(err); }); } }); </script> <script> // IE11 and earlier can be identified via their user agent and be // redirected to a page that is known to have no newer js syntax. if (window.navigator.userAgent.match(/(MSIE|Trident)/)) { var roomName = encodeURIComponent(window.location.pathname); window.location.pathname = 'static/recommendedBrowsers.html'; } window.indexLoadedTime = window.performance.now(); console.log("(TIME) index.html loaded:\t", indexLoadedTime); window.addEventListener('load', function() { window.loadedEventTime = window.performance.now(); console.log("(TIME) window loaded event:\t", loadedEventTime); }); // XXX the code below listeners for errors and displays an error message // in the document body when any of the required files fails to load. // The intention is to prevent from displaying broken page. var criticalFiles = [ "config.js", "utils.js", "do_external_connect.js", "interface_config.js", "lib-jitsi-meet.min.js", "app.bundle.min.js", "all.css?v=8266.5204" ]; var loadErrHandler = function(e) { var target = e.target; // Error on <script> and <link>(CSS) // <script> will have .src and <link> .href var fileRef = (target.src ? target.src : target.href); if (("SCRIPT" === target.tagName || "LINK" === target.tagName) && criticalFiles.some( function(file) { return fileRef.indexOf(file) !== -1 })) { window.onload = function() { // The whole complex part below implements page reloads with // "exponential backoff". The retry attempt is passes as // "rCounter" query parameter var href = window.location.href; var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/); var retryCountStr = retryMatch ? retryMatch[2] : "0"; var retryCount = Number.parseInt(retryCountStr); if (retryMatch == null) { var separator = href.indexOf("?") === -1 ? "?" : "&"; var hashIdx = href.indexOf("#"); if (hashIdx === -1) { href += separator + "rCounter=1"; } else { var hashPart = href.substr(hashIdx); href = href.substr(0, hashIdx) + separator + "rCounter=1" + hashPart; } } else { var separator = retryMatch[1]; href = href.replace( /(\?|&)rCounter=(\d+)/, separator + "rCounter=" + (retryCount + 1)); } var delay = Math.pow(2, retryCount) * 2000; if (isNaN(delay) || delay < 2000 || delay > 60000) delay = 10000; var showMoreText = "show more"; var showLessText = "show less"; document.body.innerHTML = "<div style='" + "position: absolute;top: 50%;left: 50%;" + "text-align: center;" + "font-size: medium;" + "font-weight: 400;" + "transform: translate(-50%, -50%)'>" + "Uh oh! We couldn't fully download everything we needed :(" + "<br/> " + "We will try again shortly. In the mean time, check for problems with your Internet connection!" + "<br/><br/> " + "<div id='moreInfo' style='" + "display: none;'>" + "Missing " + fileRef + "<br/><br/></div>" + "<a id='showMore' style='" + "text-decoration: underline;" + "font-size:small;" + "cursor: pointer'>" + showMoreText + "</a>" + " " + "<a id ='reloadLink' style='" + "text-decoration: underline;" + "font-size:small;" + "'>reload now</a>" + "</div>"; var reloadLink = document.getElementById('reloadLink'); reloadLink.setAttribute('href', href); var showMoreElem = document.getElementById("showMore"); showMoreElem.addEventListener('click', function () { var moreInfoElem = document.getElementById("moreInfo"); if (showMoreElem.innerHTML === showMoreText) { moreInfoElem.setAttribute( "style", "display: block;" + "color:#FF991F;" + "font-size:small;" + "user-select:text;"); showMoreElem.innerHTML = showLessText; } else { moreInfoElem.setAttribute( "style", "display: none;"); showMoreElem.innerHTML = showMoreText; } }); window.setTimeout( function () { window.location.replace(href); }, delay); // Call extra handler if defined. if (typeof postLoadErrorHandler === "function") { postLoadErrorHandler(fileRef); } }; window.removeEventListener( 'error', loadErrHandler, true /* capture phase */); } }; window.addEventListener( 'error', loadErrHandler, true /* capture phase type of listener */); </script> <script>/** * Hey there Hacker One bounty hunters! None of the contents of this file are security sensitive. * Sorry, but your princess is in another castle :-) * Happy hunting! */ var subdomain = ""; var subdomainDot = subdomain; if (subdomain) { subdomain = subdomain.substr(0,subdomain.length-1).split('.').join('_').toLowerCase(); subdomainDot = subdomain + "."; } var config = { hosts: { domain: 'meet.jit.si', anonymousdomain: 'guest.meet.jit.si', muc: 'conference.'+subdomainDot+'meet.jit.si', focus: 'focus.meet.jit.si', }, tokenAuthUrl: 'https://web-cdn.jitsi.net/auth-static/meet-jit-si/v11/signin.html?state={state}#room={room}&subdir=' + subdomain, tokenAuthUrlAutoRedirect: true, tokenLogoutUrl: 'https://web-cdn.jitsi.net/auth-static/meet-jit-si/v11/signout.html', bridgeChannel: { preferSctp: true, }, disableSimulcast: false, constraints: { video: { height: { ideal: 720, max: 720, min: 180 }, width: { ideal: 1280, max: 1280, min: 320 }, frameRate: { max: 30 } } }, enableInsecureRoomNameWarning: true, analytics: { amplitudeAPPKey: "fafdba4c3b47fe5f151060ca37f02d2f", amplitudeIncludeUTM: false, rtcstatsEnabled: true , rtcstatsStoreLogs: false , rtcstatsUseLegacy: false , rtcstatsEndpoint: "wss://rtcstats-server.jitsi.net/", rtcstatsPollInterval: 10000, whiteListedEvents: [ 'conference.joined', 'page.reload.scheduled', 'rejoined', 'transport.stats', 'rtcstats.trace.onclose', 'audio.play.error', 'audio.play.success', 'reaction.button.clicked', 'reaction.settings.sounds.disabled', 'poll.create', 'poll.vote.checked', 'poll.vote.sent', 'poll.vote.skipped', 'poll.vote.detailsViewed', 'poll.vote.changed', 'poll.option.added', 'poll.option.moved', 'poll.option.removed', 'breakout.rooms.create.button.clicked', 'breakout.rooms.close.button.clicked', 'breakout.rooms.remove.button.clicked', 'breakout.rooms.auto.assign.button.clicked', 'breakout.rooms.join.button.clicked', 'breakout.rooms.send.participant.to.room.button.clicked', 'recording.local.started', 'recording.local.self.started', 'not.allowed.error', 'whiteboard.open', 'whiteboard.restrict', 'network.info' ], }, enableP2P: true, // flag to control P2P connections // New P2P options p2p: { enabled: true, codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264' ], mobileCodecPreferenceOrder: [ 'VP8', 'H264', 'VP9' ], useStunTurn: true // use XEP-0215 to fetch STUN and TURN servers for the P2P connection }, useStunTurn: true, // use XEP-0215 to fetch TURN servers for the JVB connection useTurnUdp: false, bosh: 'https://meet.jit.si/http-bind', websocket: 'wss://meet.jit.si/xmpp-websocket', websocketKeepAliveUrl: 'https://meet.jit.si/_unlock', conferenceRequestUrl: 'https://meet.jit.si/conference-request/v1', //deprecated desktop sharing settings, included only because older version of jitsi-meet require them desktopSharing: 'ext', // Desktop sharing method. Can be set to 'ext', 'webrtc' or false to disable. chromeExtensionId: 'kglhbbefdnlheedjiejgomgmfplipfeb', // Id of desktop streamer Chrome extension desktopSharingSources: ['screen', 'window'], googleApiApplicationClientID: "39065779381-bbhnkrgibtf4p0j9ne5vsq7bm49t1tlf.apps.googleusercontent.com", microsoftApiApplicationClientID: "00000000-0000-0000-0000-000040240063", enableCalendarIntegration: true, //new desktop sharing settings desktopSharingChromeExtId: 'kglhbbefdnlheedjiejgomgmfplipfeb', // Id of desktop streamer Chrome extension desktopSharingChromeSources: ['screen', 'window', 'tab'], enableSaveLogs: false, channelLastN: 10, // The default value of the channel attribute last-n. flags: { sourceNameSignaling: true, sendMultipleVideoStreams: true, receiveMultipleVideoStreams: true, ssrcRewritingEnabled: true, }, maxFullResolutionParticipants: 1, videoQuality: { enableAdaptiveMode: true, codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264' ], mobileCodecPreferenceOrder: [ 'VP8', 'H264', 'VP9' ], vp9: { scalabilityModeEnabled: true, useSimulcast: false, }, av1: { useSimulcast: false, }, }, disableAudioLevels: false, audioQuality: { stereo: false, enableOpusDtx: false }, enableTalkWhileMuted: true, mouseMoveCallbackInterval: 1000, enableNoAudioDetection: true, enableNoisyMicDetection: true, enableClosePage: true, disableLocalVideoFlip: false, hiddenDomain: 'recorder.meet.jit.si', transcription: { enabled: false }, recordings: { suggestRecording: false, showPrejoinWarning: false }, liveStreaming: { enabled: true }, recordingService: { enabled: false, sharingEnabled: false }, localRecording: { disable: false, notifyAllParticipants: true }, requireDisplayName: false, welcomePage: { disabled: false }, isBrand: false, dialInNumbersUrl: 'https://api.jitsi.net/phoneNumberList', dialInConfCodeUrl: 'https://api.jitsi.net/conferenceMapper', startAudioMuted: 25, startVideoMuted: 25, enableUserRolesBasedOnToken: false, enableForcedReload: false, feedbackPercentage: 0, deploymentUrls: { userDocumentationURL: "https://jitsi.github.io/handbook/help", }, chromeExtensionBanner: { url: "https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb", edgeUrl: "https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn", chromeExtensionsInfo: [{"id": "kglhbbefdnlheedjiejgomgmfplipfeb", "path": "jitsi-logo-48x48.png"}, {"id": "eeecajlpbgjppibfledfihobcabccihn", "path": "jitsi-logo-48x48.png"}] }, prejoinPageEnabled: true, moderatedRoomServiceUrl: 'https://moderated.jitsi.net', speakerStats: { disableSearch: true }, enableInsecureRoomNameWarning: true, enableWebHIDFeature: true, disableIframeAPI: true, faceLandmarks: { enableFaceCentering: true, enableFaceExpressionsDetection: false, enableDisplayFaceExpressions: false, enableRTCStats: false, faceCenteringThreshold: 20, captureInterval: 1000 }, giphy: { enabled: true, sdkKey: 'zMXVKoebcgwTRkSm1JjLe6dU5aLfxdRY' }, whiteboard: { enabled: true, collabServerBaseUrl: 'https://excalidraw-backend.cloudflare.jitsi.net', userLimit: 25 }, screenshotCapture:{ enabled: false , mode: 'recording' }, toolbarConfig: { timeout: 4000, initialTimeout: 20000 }, hepopAnalyticsUrl: "", hepopAnalyticsEvent: { product: "lib-jitsi-meet", subproduct: "meet-jit-si", name: "jitsi.page.load.failed", action: "page.load.failed", actionSubject: "page.load", type: "page.load.failed", source: "page.load", attributes: { type: "operational", source: 'page.load' }, server: "meet.jit.si" }, deploymentInfo: { environment: 'meet-jit-si', envType: 'prod', releaseNumber: '5562', shard: 'meet-jit-si-ap-sydney-1-s9', region: 'ap-southeast-2', userRegion: 'ap-southeast-2' }, e2eping: { enabled: false }, legalUrls: {"helpCentre": "https://web-cdn.jitsi.net/faq/meet-faq.html", "privacy": "https://jitsi.org/meet/privacy", "terms": "https://jitsi.org/meet/terms"}, deeplinking: { desktop: { appName: "Jitsi Meet" }, hideLogo: false, showImage: false, ios: { appName: "Jitsi Meet", appScheme: "org.jitsi.meet", dynamicLink: {"apn": "org.jitsi.meet", "appCode": "w2atb", "ibi": "com.atlassian.JitsiMeet.ios", "isi": "1165103905"}, downloadLink: "https://itunes.apple.com/us/app/jitsi-meet/id1165103905" }, android: { appName: "Jitsi Meet", appScheme: "org.jitsi.meet", appPackage: "org.jitsi.meet", fDroidUrl: "https://f-droid.org/en/packages/org.jitsi.meet/", dynamicLink: {"apn": "org.jitsi.meet", "appCode": "w2atb", "ibi": "com.atlassian.JitsiMeet.ios", "isi": "1165103905"}, downloadLink: "https://play.google.com/store/apps/details?id=org.jitsi.meet" } }, testing: { enableCodecSelectionAPI: true, mobileXmppWsThreshold: 100, } }; </script><!-- adapt to your needs, i.e. set hosts and bosh path --> <script>/* eslint-disable no-unused-vars, no-var, max-len */ /* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */ /** * !!!IMPORTANT!!! * * This file is considered deprecated. All options will eventually be moved to * config.js, and no new options should be added here. */ var interfaceConfig = { APP_NAME: 'Jitsi Meet', AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', /** * A UX mode where the last screen share participant is automatically * pinned. Valid values are the string "remote-only" so remote participants * get pinned but not local, otherwise any truthy value for all participants, * and any falsy value to disable the feature. * * Note: this mode is experimental and subject to breakage. */ AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only', BRAND_WATERMARK_LINK: '', CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it DEFAULT_BACKGROUND: '#040404', DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg', DISABLE_DOMINANT_SPEAKER_INDICATOR: false, /** * If true, notifications regarding joining/leaving are no longer displayed. */ DISABLE_JOIN_LEAVE_NOTIFICATIONS: false, /** * If true, presence status: busy, calling, connected etc. is not displayed. */ DISABLE_PRESENCE_STATUS: false, /** * Whether the ringing sound in the call/ring overlay is disabled. If * {@code undefined}, defaults to {@code false}. * * @type {boolean} */ DISABLE_RINGING: false, /** * Whether the speech to text transcription subtitles panel is disabled. * If {@code undefined}, defaults to {@code false}. * * @type {boolean} */ DISABLE_TRANSCRIPTION_SUBTITLES: false, /** * Whether or not the blurred video background for large video should be * displayed on browsers that can support it. */ DISABLE_VIDEO_BACKGROUND: false, DISPLAY_WELCOME_FOOTER: true, DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false, DISPLAY_WELCOME_PAGE_CONTENT: false, DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false, ENABLE_DIAL_OUT: true, // DEPRECATED. Animation no longer supported. // ENABLE_FEEDBACK_ANIMATION: false, FILM_STRIP_MAX_HEIGHT: 120, GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, /** * Hide the invite prompt in the header when alone in the meeting. */ HIDE_INVITE_MORE_HEADER: false, JITSI_WATERMARK_LINK: 'https://jitsi.org', LANG_DETECTION: true, // Allow i18n to detect the system language LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9 /** * Maximum coefficient of the ratio of the large video to the visible area * after the large video is scaled to fit the window. * * @type {number} */ MAXIMUM_ZOOMING_COEFFICIENT: 1.3, /** * Whether the mobile app Jitsi Meet is to be promoted to participants * attempting to join a conference in a mobile Web browser. If * {@code undefined}, defaults to {@code true}. * * @type {boolean} */ MOBILE_APP_PROMO: true, // Names of browsers which should show a warning stating the current browser // has a suboptimal experience. Browsers which are not listed as optimal or // unsupported are considered suboptimal. Valid values are: // chrome, chromium, electron, firefox , safari, webkit OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit' ], POLICY_LOGO: null, PROVIDER_NAME: 'Jitsi', /** * If true, will display recent list * * @type {boolean} */ RECENT_LIST_ENABLED: true, REMOTE_THUMBNAIL_RATIO: 1, // 1:1 SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ], /** * Specify which sharing features should be displayed. If the value is not set * all sharing features will be shown. You can set [] to disable all. */ // SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'], SHOW_BRAND_WATERMARK: false, /** * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting. * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s) * being already installed is done before rendering. */ SHOW_CHROME_EXTENSION_BANNER: false, SHOW_JITSI_WATERMARK: true, SHOW_POWERED_BY: false, SHOW_PROMOTIONAL_CLOSE_PAGE: false, /* * If indicated some of the error dialogs may point to the support URL for * help. */ SUPPORT_URL: 'https://community.jitsi.org/', // Browsers, in addition to those which do not fully support WebRTC, that // are not supported and should show the unsupported browser page. UNSUPPORTED_BROWSERS: [], /** * Whether to show thumbnails in filmstrip as a column instead of as a row. */ VERTICAL_FILMSTRIP: true, // Determines how the video would fit the screen. 'both' would fit the whole // screen, 'height' would fit the original video height to the height of the // screen, 'width' would fit the original video width to the width of the // screen respecting ratio, 'nocrop' would make the video as large as // possible and preserve aspect ratio without cropping. VIDEO_LAYOUT_FIT: 'both', /** * If true, hides the video quality label indicating the resolution status * of the current large video. * * @type {boolean} */ VIDEO_QUALITY_LABEL_DISABLED: false, /** * How many columns the tile view can expand to. The respected range is * between 1 and 5. */ // TILE_VIEW_MAX_COLUMNS: 5, // List of undocumented settings /** INDICATOR_FONT_SIZES PHONE_NUMBER_REGEX */ // -----------------DEPRECATED CONFIGS BELOW THIS LINE----------------------------- /** * Specify URL for downloading ios mobile app. */ // MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', /** * Specify custom URL for downloading android mobile app. */ // MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', /** * Specify mobile app scheme for opening the app from the mobile browser. */ // APP_SCHEME: 'org.jitsi.meet', // NATIVE_APP_NAME: 'Jitsi Meet', /** * Specify Firebase dynamic link properties for the mobile apps. */ // MOBILE_DYNAMIC_LINK: { // APN: 'org.jitsi.meet', // APP_CODE: 'w2atb', // CUSTOM_DOMAIN: undefined, // IBI: 'com.atlassian.JitsiMeet.ios', // ISI: '1165103905' // }, /** * Hide the logo on the deep linking pages. */ // HIDE_DEEP_LINKING_LOGO: false, /** * Specify the Android app package name. */ // ANDROID_APP_PACKAGE: 'org.jitsi.meet', /** * Specify custom URL for downloading f droid app. */ // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/', // Connection indicators ( // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT, // CONNECTION_INDICATOR_DISABLED) got moved to config.js. // Please use disableModeratorIndicator from config.js // DISABLE_FOCUS_INDICATOR: false, // Please use defaultLocalDisplayName from config.js // DEFAULT_LOCAL_DISPLAY_NAME: 'me', // Please use defaultLogoUrl from config.js // DEFAULT_LOGO_URL: 'images/watermark.svg', // Please use defaultRemoteDisplayName from config.js // DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster', // Moved to config.js as `toolbarConfig.initialTimeout`. // INITIAL_TOOLBAR_TIMEOUT: 20000, // Please use `liveStreaming.helpLink` from config.js // Documentation reference for the live streaming feature. // LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Moved to config.js as `toolbarConfig.alwaysVisible`. // TOOLBAR_ALWAYS_VISIBLE: false, // This config was moved to config.js as `toolbarButtons`. // TOOLBAR_BUTTONS: [], // Moved to config.js as `toolbarConfig.timeout`. // TOOLBAR_TIMEOUT: 4000, // Allow all above example options to include a trailing comma and // prevent fear when commenting out the last value. // eslint-disable-next-line sort-keys makeJsonParserHappy: 'even if last key had a trailing comma' // No configuration value should follow this line. }; /* eslint-enable no-unused-vars, no-var, max-len */ var interfaceConfigOverride = { DISABLE_FOCUS_INDICATOR: true, /** * If true, notifications regarding joining/leaving are no longer displayed. */ DISABLE_JOIN_LEAVE_NOTIFICATIONS: true, /** * If true, presence status: busy, calling, connected etc. is not displayed. */ DISABLE_PRESENCE_STATUS: true, DISPLAY_WELCOME_FOOTER: false, DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: true, DISPLAY_WELCOME_PAGE_CONTENT: true, ENABLE_DIAL_OUT: false, /** * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting. * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s) * being already installed is done before rendering. */ SHOW_CHROME_EXTENSION_BANNER: true, SHOW_PROMOTIONAL_CLOSE_PAGE: true, TILE_VIEW_MAX_COLUMNS: 10, // Allow all above example options to include a trailing comma and // prevent fear when commenting out the last value. // eslint-disable-next-line sort-keys makeJsonParserHappy: 'even if last key had a trailing comma' // No configuration value should follow this line. }; Object.assign(interfaceConfig, interfaceConfigOverride); </script> <script src="libs/lib-jitsi-meet.min.js?v=8266.5204"></script> <script src="libs/app.bundle.min.js?v=8266.5204"></script> <title>Jitsi Meet</title> <meta property="og:title" content="Jitsi Meet"/> <meta property="og:image" content="images/jitsilogo.png?v=1"/> <meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> <meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/> <meta itemprop="name" content="Jitsi Meet"/> <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> <meta itemprop="image" content="images/jitsilogo.png?v=1"/> <link rel="icon" href="images/favicon.svg?v=1"> <script> (function() { var filter_list=[]; if (filter_list && filter_list.length >0) { interfaceConfig.TOOLBAR_BUTTONS = interfaceConfig.TOOLBAR_BUTTONS.filter(function (e) { return filter_list.indexOf(e) == -1; }); } // Function called when any of the critical index.html resources // fail to load. window.postLoadErrorHandler = function (fileRef) { if (typeof config.hepopAnalyticsUrl !== 'string' || typeof config.hepopAnalyticsEvent !== "object") { // Nothing to be done here return; } function responseHandler () { console.log("HEPop analytics response:", this.responseText); } // Set required dynamic fields var event = config.hepopAnalyticsEvent; event.serverTime = new Date().getTime(); if (config) { event.user = config.deploymentInfo; } else { event.user = {}; } event.device_id=Math.random().toString(36).substring(2); if (window.localStorage) { event.user.callstats_name = window.localStorage.callStatsUserName; } if (fileRef) { event.user.reason = fileRef; } event.user.url = window.location.href; event.user.conference_name = window.location.pathname.substr(1,window.location.pathname.length-1); var xhttp = new XMLHttpRequest(); xhttp.addEventListener("load", responseHandler); xhttp.open("POST", config.hepopAnalyticsUrl, true); xhttp.setRequestHeader("Content-Type", "application/json"); xhttp.send(JSON.stringify(event)); }; }()); </script> <template id="welcome-page-additional-content-template"> <footer class="welcome-footer"> <div class="welcome-footer-centered"> <div class="welcome-footer-padded"> <div class="welcome-footer-row-block welcome-footer--row-1"> <div class="welcome-footer-row-1-text">Jitsi on mobile – download our apps and start a meeting from anywhere </div> <a class="welcome-badge" href="https://apps.apple.com/us/app/jitsi-meet/id1165103905"><img src="./images/app-store-badge.png" /></a> <a class="welcome-badge" href="https://play.google.com/store/apps/details?id=org.jitsi.meet&hl=en&gl=US"><img src="./images/google-play-badge.png" /></a> <a class="welcomebadge" href="https://f-droid.org/en/packages/org.jitsi.meet/"><img src="./images/f-droid-badge.png" /></a> </div> <div class="welcome-footer-row-block welcome-footer--row-2"> <div class="welcome-footer-row-2-text">Hello, Slack fans! Very pleased to meet you! Just add our extension and off you go!</div> <a href="https://slack.com/oauth/authorize?client_id=116888949298.122751011265&scope=bot,commands"><img src="./images/welcome_page/slack.png" /></a> </div> <div class="welcome-footer-row-block welcome-footer--row-3"> <div> <a class="welcome-footer-link" href="https://jitsi.org/meet-jit-si-privacy/">Privacy Policy </a> <a class="welcome-footer-link" href="http://jitsi.org/meet-jit-si-terms-of-service/">Terms & Conditions</a> </div> <div> <a class="welcome-page-sm" href="https://www.facebook.com/jitsi"><img src="./images/welcome_page/fb.png" /></a> <a class="welcome-page-sm" href="https://www.linkedin.com/company/8x8/"><img src="./images/welcome_page/li.png" /></a> <a class="welcome-page-sm" href="https://twitter.com/jitsinews"><img src="./images/welcome_page/tw.png" /></a> <a class="welcome-page-sm" href="https://github.com/jitsi"><img src="./images/welcome_page/gh.png" /></a> </div> </div> <div class="welcome-footer-row-block welcome-footer--row-4"> <a href="https://8x8.com"><img class="logo-8x8" src="./images/welcome_page/8x8-logo.png" /></a> <div class="welcome-footer-row-4-text"> <div>8x8 is a proud supporter of the Jitsi community.</div> <div>© 8x8, Inc. All Rights Reserved.</div> </div> </div> </div> </div> </div> </footer> </template> <template id = "welcome-page-additional-card-template"> <div class = "welcome-card-text"> <div class="welcome-card-jaas-logo"> <img class="logo-8x8" src="./images/welcome_page/8x8-logo.png" /> <span>Jitsi as a Service</span> </div> <h3 class="welcome-card-large-title">Want meetings in your app? Check out <b>Jitsi as a Service</b>. </h3> <p class="welcome-card-paragraph">Connect the users of your website or app. Get branding & tight access controls. Have notifications, transcriptions & recordings delivered straight to your backend </p> <div> <a href="https://jaas.8x8.vc"> <div class="welcome-card-button welcome-card-button--grey"> <span class="text">Learn more</span> </div> </a> </div> </div> </template> <template id="settings-toolbar-additional-content-template"></template> </head> <body> <noscript aria-hidden="true"> <div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div> </noscript> <div id="react" role="main"></div> </body> </html>