index.html 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <!DOCTYPE html>
  2. <!--
  3. Copyright © 2017-2019 Threema GmbH (https://threema.ch/).
  4. This file is part of Threema Web.
  5. Threema Web is free software: you can redistribute it and/or modify it
  6. under the terms of the GNU Affero General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or (at
  8. your option) any later version.
  9. This program is distributed in the hope that it will be useful, but
  10. WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
  12. General Public License for more details.
  13. You should have received a copy of the GNU Affero General Public License
  14. along with Threema Web. If not, see <http://www.gnu.org/licenses/>.
  15. -->
  16. <html>
  17. <head>
  18. <meta charset="utf-8">
  19. <meta name="viewport" content="width=device-width, initial-scale=1">
  20. <meta name="referrer" content="no-referrer">
  21. <meta name="robots" content="noindex">
  22. <title>Threema Web Diagnostics</title>
  23. <!-- Favicon -->
  24. <link rel="icon" href="../img/favicon/favicon.ico?v=[[VERSION]]" type="image/x-icon">
  25. <link rel="shortcut icon" href="../img/favicon/favicon.ico?v=[[VERSION]]" type="image/x-icon">
  26. <!-- Fonts -->
  27. <link rel="stylesheet" href="../fonts/roboto.css?v=[[VERSION]]" type="text/css">
  28. <link rel="stylesheet" href="../fonts/material.css?v=[[VERSION]]" type="text/css">
  29. <!-- Styling -->
  30. <style>
  31. body {
  32. padding: 16px;
  33. font-family: 'Roboto';
  34. }
  35. #background-image {
  36. min-height: 100%;
  37. min-width: 1024px;
  38. width: 100%;
  39. height: auto;
  40. position: fixed;
  41. top: 0;
  42. left: 0;
  43. z-index: -1;
  44. -moz-user-select: none;
  45. -webkit-user-select: none;
  46. user-select: none;
  47. }
  48. #wrapper {
  49. background-color: white;
  50. margin: 0 auto;
  51. padding: 16px 32px 32px;
  52. min-width: 400px;
  53. max-width: 500px;
  54. text-align: center;
  55. }
  56. #logo {
  57. width: 300px;
  58. color: white;
  59. margin: 0px auto 16px;
  60. }
  61. h1 { margin-top: 0; font-size: 30px; font-weight: 500; }
  62. h2 { font-weight: 300; font-size: 22px; }
  63. p { font-weight: 300; }
  64. .status span {
  65. display: inline-block;
  66. line-height: 36px;
  67. vertical-align: top;
  68. }
  69. .status-yes i { color: #4caf50; }
  70. .status-no i { color: #f44336; }
  71. .status-unknown i { color: #0277BD; }
  72. .hidden { display: none; }
  73. .small { font-size: 0.8em; font-weight: 300; }
  74. .log-data {
  75. background-color: #eee;
  76. border: 1px solid #ccc;
  77. padding: 8px;
  78. }
  79. .log-data p {
  80. margin: 4px 0;
  81. font-family: monospace;
  82. }
  83. footer {
  84. color: white;
  85. font-weight: 300;
  86. text-align: center;
  87. padding-top: 16px;
  88. }
  89. </style>
  90. <!-- JS -->
  91. <script src="../node_modules/angular/angular.js?v=[[VERSION]]"></script>
  92. <script src="../node_modules/angular-sanitize/angular-sanitize.min.js?v=[[VERSION]]"></script>
  93. <script src="../node_modules/webrtc-adapter/out/adapter.js?v=[[VERSION]]"></script>
  94. <script src="../node_modules/sdp/sdp.js?v=[[VERSION]]"></script>
  95. <script src="troubleshoot.js?v=[[VERSION]]"></script>
  96. </head>
  97. <body ng-app="troubleshoot">
  98. <img src="../img/bg.jpg?v=[[VERSION]]" id="background-image" draggable="false" alt="">
  99. <header>
  100. <div id="title">
  101. <div id="logo">
  102. <img src="../img/logo.svg?v=[[VERSION]]" alt="Logo">
  103. </div>
  104. </div>
  105. </header>
  106. <div id="wrapper" ng-controller="ChecksController as $ctrl">
  107. <h1 ng-if="$ctrl.state === 'init'">Threema Web Diagnostics</h1>
  108. <h1 ng-if="$ctrl.state === 'check'">Threema Web Diagnostics ({{ $ctrl.os | osName }})</h1>
  109. <p ng-if="$ctrl.state === 'init'">This test will check your browser for
  110. compatibility or configuration problems.</p>
  111. <p ng-if="$ctrl.state === 'init'">What type of mobile device do you use?</p>
  112. <div ng-if="$ctrl.state === 'init'">
  113. <button role="button" aria-label="Android" ng-click="$ctrl.start('android')">Android</button>
  114. <button role="button" aria-label="iOS" ng-click="$ctrl.start('ios')">iOS</button>
  115. </div>
  116. <div id="checks" ng-if="$ctrl.state === 'check'">
  117. <div id="check-js">
  118. <h2>Is JavaScript enabled?</h2>
  119. <check
  120. result="$ctrl.resultJs">
  121. </div>
  122. <div id="check-ls">
  123. <h2>Is LocalStorage available?</h2>
  124. <check
  125. result="$ctrl.resultLs"
  126. text-no="Without LocalStorage, persistent sessions and settings<br>cannot be stored in the browser.<br>See the <a href='https://threema.ch/faq/web_browser_settings'>FAQ</a> for information on how to fix this.">
  127. </div>
  128. <div id="check-dn">
  129. <h2>Are desktop notifications available?</h2>
  130. <check
  131. result="$ctrl.resultDn"
  132. text-no="Without desktop notifications, we cannot notify you when a new message arrives.">
  133. </div>
  134. <div id="check-ws">
  135. <h2>Are WebSocket connections possible?</h2>
  136. <check
  137. result="$ctrl.resultWs"
  138. text-no="Threema Web must be able to open a working WebSocket connection to the SaltyRTC signaling server.">
  139. </div>
  140. <div id="check-pc" ng-if="$ctrl.os === 'android'">
  141. <h2>Is WebRTC available?</h2>
  142. <check
  143. result="$ctrl.resultPc"
  144. text-no="RTCPeerConnection is a part of WebRTC.<br>Threema Web cannot work without it.">
  145. </div>
  146. <div id="check-dc" ng-if="$ctrl.os === 'android'">
  147. <h2>Are WebRTC DataChannels available?</h2>
  148. <check
  149. result="$ctrl.resultDc"
  150. text-no="RTCDataChannel is a part of WebRTC.<br>Threema Web cannot work without it.">
  151. </div>
  152. <div id="check-turn" ng-if="$ctrl.os === 'android'">
  153. <h2>Does TURN work?</h2>
  154. <check
  155. result="$ctrl.resultTurn"
  156. text-no="It looks like TURN traffic is being blocked by your firewall.<br>Without TURN, connections can only be established if your computer<br>and your phone are in the same network.">
  157. </div>
  158. </div>
  159. </div>
  160. <footer>
  161. &copy; 2017&ndash;2019 Threema GmbH
  162. </footer>
  163. </body>
  164. </html>