Simple end-to-end encrypted voice calls.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.9 KiB

<!DOCTYPE html>
Copyright (c) 2020 Thomas Kramer.
This file is part of picoTalk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <>.
<meta charset="utf-8" />
<meta name="description" content="Simple and truly end-to-end encrypted voice calls." />
<meta name="keywords" content="call, e2ee, end-to-end, encrypted, simple, light" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta property="og:type" content="website" />
<meta property="og:title" content="PicoTalk" />
<meta property="og:image" content="" />
<meta property="og:image:secure_url" content="" />
<meta property="og:url" content="" />
<meta property="og:description" content="Simple and truly end-to-end encrypted voice calls." />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<div id="content" class="flexvertical">
<h1>picoTalk <img src="logo_no_bg.svg" height="40px" style="margin-bottom: -5px"/></h1>
<i>Simple and truly end-to-end encrypted voice calls.</i>
<b>JavaScript must be enabled for this site!</b>
<div class="box flexvertical" id="joinRoomForm" style="display: none;">
<label>Room name</label>
<span class="tooltip">
<input type="text" id="room_name" value=""> <br />
<span class="tooltiptext">Choose an arbitrary room name. Best something hard to guess.</span>
<label class="optional">Server</label>
<span class="tooltip">
<input type="text" class="optional" id="server_name" value=""> <br />
<span class="tooltiptext">Optionally define which server should be used for the call.</span>
<button id="btn_connect">Go</button>
<div class="box flexvertical" id="joinRoomConfirm" style="display: none;">
Join the room <b id="joinRoomConfirmName">...</b> <br />
on server <b id="joinRoomConfirmServer">...</b> <br />
<label>Name</label><input type="text" id="user_name" value="Anonymous"> <br />
<span class="tooltip">
<input type="text" id="password" value=""> <br />
<span class="tooltiptext">This is used to further secure the end-to-end encryption against man-in-the middle attacks.</span>
<button id="btn_join">Join</button>
<div class="box" id="waitToConnect" style="display: none;">
<i>Try to connect...</i>
<div class="box flexhorizontal" id="controlButtons" style="display: none;">
<button id="btnToggleMute">Mute</button>
<button id="btnLeave">Leave</button>
<div class="flexhorizontal">
<div class="box flexvertical" id="divPeerList" style="display: none;">
<ul id="peerList">
<div class="box flexvertical" id="divChat" style="display: none;">
<ul id="chatMessages">
<li>Write a message to the other peers here!</li>
<input type="text" id="inputChatMessage" />
<div id="divShowLog" class="tooltip">
<a id="btnShowLog">Show Log</a>
<span class="tooltiptext">Show/hide debug information.</span>
<div class="box" id="divLog" style="display: none;">
<ol id="log"></ol>
<script type="text/javascript" src="nacl.js" charset="utf-8"></script>
<script type="text/javascript" src="nacl-util.js" charset="utf-8"></script>
<script type="text/javascript" src="queue.js" charset="utf-8"></script>
<script type="text/javascript" src="wave-resampler.js" charset="utf-8"></script>
<script type="text/javascript" src="main.js" charset="utf-8"></script>
<div id="footer">
<a href="">About</a>