1 <html itemscope
itemtype=
"http://schema.org/Product" prefix=
"og: http://ogp.me/ns#" xmlns=
"http://www.w3.org/1999/html">
4 Copyright (C) 2020 8x8, Inc
5 Copyright (C) 2020 Free Software Foundation
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 <!--#include virtual="head.html" -->
24 <meta charset=
"utf-8">
25 <meta http-equiv=
"content-type" content=
"text/html;charset=utf-8">
26 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
27 <!--#include virtual="base.html" -->
29 <link rel=
"apple-touch-icon" href=
"images/apple-touch-icon.png">
30 <link rel=
"stylesheet" href=
"css/all.css?v=4289">
32 body {background: #
222!important}
44 color:black!important;
49 border-radius:
10px!important;
78 min-height:
0!important;
82 margin-bottom:
40px!important;
85 .welcome .welcome-page-settings{
89 .welcome .header-text{
90 margin-top:
22px!important;
92 .leftwatermark, .header-text-description{
93 display: none!important;
96 <script type=
"text/javascript">
97 /** @licstart The following is the entire license notice for the
98 * JavaScript code in this page
100 * Copyright (C)
8x8, Inc.
102 * Licensed under the Apache License, Version
2.0 (the \
"License\");
103 * you may not use this file except in compliance with the License.
104 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-
2.0
106 * @licend The above is the entire license notice
107 * for the JavaScript code in this page.
111 document.addEventListener('DOMContentLoaded', () =
> {
112 if (!JitsiMeetJS.app) {
116 JitsiMeetJS.app.renderEntryPoint({
117 Component: JitsiMeetJS.app.entryPoints.APP
122 // IE11 and earlier can be identified via their user agent and be
123 // redirected to a page that is known to have no newer js syntax.
124 if (window.navigator.userAgent.match(/(MSIE|Trident)/)) {
125 var roomName = encodeURIComponent(window.location.pathname);
126 window.location.href =
"static/recommendedBrowsers.html" +
"?room=" + roomName;
129 window.indexLoadedTime = window.performance.now();
130 console.log(
"(TIME) index.html loaded:\t", indexLoadedTime);
131 // XXX the code below listeners for errors and displays an error message
132 // in the document body when any of the required files fails to load.
133 // The intention is to prevent from displaying broken page.
134 var criticalFiles = [
137 "do_external_connect.js",
138 "interface_config.js",
140 "lib-jitsi-meet.min.js",
144 var loadErrHandler = function(e) {
145 var target = e.target;
146 // Error on
<script> and
<link>(CSS)
147 //
<script> will have .src and
<link> .href
148 var fileRef = (target.src ? target.src : target.href);
149 if ((
"SCRIPT" === target.tagName ||
"LINK" === target.tagName)
150 && criticalFiles.some(
151 function(file) { return fileRef.indexOf(file) !== -
1 })) {
152 window.onload = function() {
153 // The whole complex part below implements page reloads with
154 //
"exponential backoff". The retry attempt is passes as
155 //
"rCounter" query parameter
156 var href = window.location.href;
158 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/);
159 var retryCountStr = retryMatch ? retryMatch[
2] :
"0";
160 var retryCount = Number.parseInt(retryCountStr);
162 if (retryMatch == null) {
163 var separator = href.indexOf(
"?") === -
1 ?
"?" :
"&";
164 var hashIdx = href.indexOf(
"#");
166 if (hashIdx === -
1) {
167 href += separator +
"rCounter=1";
169 var hashPart = href.substr(hashIdx);
171 href = href.substr(
0, hashIdx)
172 + separator +
"rCounter=1" + hashPart;
175 var separator = retryMatch[
1];
178 /(\?|&)rCounter=(\d+)/,
179 separator +
"rCounter=" + (retryCount +
1));
182 var delay = Math.pow(
2, retryCount) *
2000;
183 if (isNaN(delay) || delay <
2000 || delay
> 60000)
186 var showMoreText =
"show more";
187 var showLessText =
"show less";
189 document.body.innerHTML
191 +
"position: absolute;top: 50%;left: 50%;"
192 +
"text-align: center;"
193 +
"font-size: medium;"
194 +
"font-weight: 400;"
195 +
"transform: translate(-50%, -50%)'>"
196 +
"Uh oh! We couldn't fully download everything we needed :("
198 +
"We will try again shortly. In the mean time, check for problems with your Internet connection!"
200 +
"<div id='moreInfo' style='"
201 +
"display: none;'>" +
"Missing " + fileRef
203 +
"<a id='showMore' style='"
204 +
"text-decoration: underline;"
206 +
"cursor: pointer'>" + showMoreText +
"</a>"
207 +
" "
208 +
"<a id ='reloadLink' style='"
209 +
"text-decoration: underline;"
214 var reloadLink = document.getElementById('reloadLink');
215 reloadLink.setAttribute('href', href);
217 var showMoreElem = document.getElementById(
"showMore");
218 showMoreElem.addEventListener('click', function () {
220 = document.getElementById(
"moreInfo");
222 if (showMoreElem.innerHTML === showMoreText) {
223 moreInfoElem.setAttribute(
228 +
"user-select:text;");
229 showMoreElem.innerHTML = showLessText;
232 moreInfoElem.setAttribute(
233 "style",
"display: none;");
234 showMoreElem.innerHTML = showMoreText;
239 function () { window.location.replace(href); }, delay);
241 // Call extra handler if defined.
242 if (typeof postLoadErrorHandler ===
"function") {
243 postLoadErrorHandler(fileRef);
246 window.removeEventListener(
247 'error', loadErrHandler, true /* capture phase */);
250 window.addEventListener(
251 'error', loadErrHandler, true /* capture phase type of listener */);
253 <script><!--#include virtual="/config.js" --></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
254 <!--#include virtual="connection_optimization/connection_optimization.html" -->
255 <script src=
"libs/do_external_connect.min.js?v=1"></script>
256 <script><!--#include virtual="/interface_config.js" --></script>
257 <script><!--#include virtual="/logging_config.js" --></script>
258 <script src=
"libs/lib-jitsi-meet.min.js?v=4289"></script>
259 <script src=
"libs/app.bundle.min.js?v=4289"></script>
260 <!--#include virtual="title.html" -->
261 <!--#include virtual="plugin.head.html" -->
262 <!--#include virtual="static/welcomePageAdditionalContent.html" -->
263 <!--#include virtual="static/settingsToolbarAdditionalContent.html" -->
266 <!--#include virtual="body.html" -->
268 <div id=
"site-logo"><a href=
"/" title=
"Home">
269 <img src=
"https://my.fsf.org/sites/default/files/fsf-logo_1.png" alt=
"Home" />
272 <p>Welcome to the free (as in freedom) videoconferencing service for
<a href=
"https://www.fsf.org/associate/">associate members
</a> of the
<a href=
"https://www.fsf.org/">Free Software Foundation
</a>. Members can use their FSF account login credentials to start new conference rooms, and invite family, colleagues, and friends to join by sending them the room link. We recommend using a password for your conference for better security, you can find this option under the info button.
</p>
274 <p>This service uses
<a href=
"https://jitsi.org/jitsi-meet/">Jitsi Meet
</a>, with some small changes made for the sake of privacy and
<a href=
"https://www.gnu.org/philosophy/free-software-even-more-important.html">software freedom
</a>. It does not use any third party servers for network initialization, does not recommend or link to proprietary services or programs. It also labels all JavaScript files with their free software licenses following
<a href=
"https://www.gnu.org/software/librejs/">LibreJS
</a> practice.
276 <p><a href=
"https://fsf.org/join?pk_campaign=jitsi&pk_source=joinhome">Become an associate member
</a> today, or support the FSF by making a
<a href=
"https://fsf.org/donate?pk_campaign=jitsi&pk_source=donatehome">donation
</a>.
</p>
278 <div id=
"react"></div>
281 <div class=
"content">
282 <p style=
"color: white">We prioritize your privacy and do not sell or distribute our contact lists. Read our full
<a href=
"https://www.fsf.org/about/free-software-foundation-privacy-policy">privacy policy
</a>.
</p>
283 <p ><a href=
"https://weblabels.fsf.org/jitsi.member.fsf.org/CURRENT/" rel=
"jslicense">JavaScript license information
</a></p>