d98571905a05cc95f30049e8b56934d7085ff005
[jitsi-ansible.git] / files / index.html
1 <html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
2 <!--
3
4 Copyright (C) 2020 8x8, Inc
5 Copyright (C) 2020 Free Software Foundation
6
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.
11
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.
16
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
20
21 -->
22 <head>
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" -->
28
29 <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
30 <link rel="stylesheet" href="css/all.css?v=4289">
31 <style>
32 body {background: #222!important}
33 #fsflogo{
34 background: #800000;
35 }
36
37 #site-logo{
38 width:400px;
39 padding:40px;
40 margin: auto;
41 }
42
43 #fsfcustom{
44 color:black!important;
45 background: #fff;
46 width:680px;
47 margin: 30px auto;
48 padding:15px;
49 border-radius: 10px!important;
50 }
51
52 .header-text-title {
53 display: none
54 }
55
56 #fsfcustom p {
57 font-size:medium;
58 padding:10px;
59 }
60
61 #fsffooter a{
62 color:#75A7E7
63 }
64
65 #fsffooter{
66 font-size:larger;
67 background: #222;
68 height:200px;
69 }
70
71 #fsffooter .content{
72 padding-top:50px;
73 width:680px;
74 margin: auto;
75 }
76
77 #welcome_page{
78 min-height:0!important;
79 }
80
81 .header{
82 margin-bottom: 40px!important;
83 }
84
85 .welcome .welcome-page-settings{
86 position:relative;
87 }
88
89 .welcome .header-text{
90 margin-top:22px!important;
91 }
92 .leftwatermark, .header-text-description{
93 display: none!important;
94 }
95 </style>
96 <script type="text/javascript">
97 /** @licstart The following is the entire license notice for the
98 * JavaScript code in this page
99 *
100 * Copyright (C) 8x8, Inc.
101 *
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
105 *
106 * @licend The above is the entire license notice
107 * for the JavaScript code in this page.
108 */
109 </script>
110 <script>
111 document.addEventListener('DOMContentLoaded', () => {
112 if (!JitsiMeetJS.app) {
113 return;
114 }
115
116 JitsiMeetJS.app.renderEntryPoint({
117 Component: JitsiMeetJS.app.entryPoints.APP
118 })
119 })
120 </script>
121 <script>
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;
127 }
128
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 = [
135 "config.js",
136 "utils.js",
137 "do_external_connect.js",
138 "interface_config.js",
139 "logging_config.js",
140 "lib-jitsi-meet.min.js",
141 "app.bundle.min.js",
142 "all.css?v=4289"
143 ];
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;
157
158 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/);
159 var retryCountStr = retryMatch ? retryMatch[2] : "0";
160 var retryCount = Number.parseInt(retryCountStr);
161
162 if (retryMatch == null) {
163 var separator = href.indexOf("?") === -1 ? "?" : "&";
164 var hashIdx = href.indexOf("#");
165
166 if (hashIdx === -1) {
167 href += separator + "rCounter=1";
168 } else {
169 var hashPart = href.substr(hashIdx);
170
171 href = href.substr(0, hashIdx)
172 + separator + "rCounter=1" + hashPart;
173 }
174 } else {
175 var separator = retryMatch[1];
176
177 href = href.replace(
178 /(\?|&)rCounter=(\d+)/,
179 separator + "rCounter=" + (retryCount + 1));
180 }
181
182 var delay = Math.pow(2, retryCount) * 2000;
183 if (isNaN(delay) || delay < 2000 || delay > 60000)
184 delay = 10000;
185
186 var showMoreText = "show more";
187 var showLessText = "show less";
188
189 document.body.innerHTML
190 = "<div style='"
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 :("
197 + "<br/> "
198 + "We will try again shortly. In the mean time, check for problems with your Internet connection!"
199 + "<br/><br/> "
200 + "<div id='moreInfo' style='"
201 + "display: none;'>" + "Missing " + fileRef
202 + "<br/><br/></div>"
203 + "<a id='showMore' style='"
204 + "text-decoration: underline;"
205 + "font-size:small;"
206 + "cursor: pointer'>" + showMoreText + "</a>"
207 + "&nbsp;&nbsp;&nbsp;"
208 + "<a id ='reloadLink' style='"
209 + "text-decoration: underline;"
210 + "font-size:small;"
211 + "'>reload now</a>"
212 + "</div>";
213
214 var reloadLink = document.getElementById('reloadLink');
215 reloadLink.setAttribute('href', href);
216
217 var showMoreElem = document.getElementById("showMore");
218 showMoreElem.addEventListener('click', function () {
219 var moreInfoElem
220 = document.getElementById("moreInfo");
221
222 if (showMoreElem.innerHTML === showMoreText) {
223 moreInfoElem.setAttribute(
224 "style",
225 "display: block;"
226 + "color:#FF991F;"
227 + "font-size:small;"
228 + "user-select:text;");
229 showMoreElem.innerHTML = showLessText;
230 }
231 else {
232 moreInfoElem.setAttribute(
233 "style", "display: none;");
234 showMoreElem.innerHTML = showMoreText;
235 }
236 });
237
238 window.setTimeout(
239 function () { window.location.replace(href); }, delay);
240
241 // Call extra handler if defined.
242 if (typeof postLoadErrorHandler === "function") {
243 postLoadErrorHandler(fileRef);
244 }
245 };
246 window.removeEventListener(
247 'error', loadErrHandler, true /* capture phase */);
248 }
249 };
250 window.addEventListener(
251 'error', loadErrHandler, true /* capture phase type of listener */);
252 </script>
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" -->
264 </head>
265 <body>
266 <!--#include virtual="body.html" -->
267 <div id="fsflogo" >
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" />
270 </a></div> </div>
271 <div id="fsfcustom">
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>
273
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.
275
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>
277 </div>
278 <div id="react"></div>
279
280 <div id="fsffooter">
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>
284 </div>
285 </body>
286 </html>