mirror of
https://github.com/novnc/noVNC.git
synced 2026-05-30 17:09:38 +00:00
Unused code, variables and unnecessary styles. The host/port check would only have an effect if someone explicitly set them as empty in the query string. The different colors of the status bar are not necessary, nor is the styling of the background.
210 lines
6.9 KiB
HTML
210 lines
6.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
|
|
<!--
|
|
noVNC example: lightweight example using minimal UI and features
|
|
Copyright (C) 2012 Joel Martin
|
|
Copyright (C) 2018 Samuel Mannehed for Cendio AB
|
|
noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
|
|
This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
|
|
|
|
Connect parameters are provided in query string:
|
|
http://example.com/?host=HOST&port=PORT&encrypt=1
|
|
or the fragment:
|
|
http://example.com/#host=HOST&port=PORT&encrypt=1
|
|
-->
|
|
<title>noVNC</title>
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
|
|
Remove this if you use the .htaccess -->
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
|
|
<style type="text/css">
|
|
|
|
body {
|
|
margin: 0;
|
|
background-color: dimgrey;
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
html {
|
|
height: 100%;
|
|
}
|
|
|
|
#noVNC_status_bar {
|
|
background-color: #6e84a3;
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
border-bottom: 1px outset;
|
|
}
|
|
#noVNC_status {
|
|
color: #ffffff;
|
|
font: bold 12px Helvetica;
|
|
margin: auto;
|
|
}
|
|
|
|
#noVNC_left_dummy_elem {
|
|
flex: 1;
|
|
}
|
|
|
|
#noVNC_buttons {
|
|
padding: 1px;
|
|
flex: 1;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
</style>
|
|
|
|
<!-- promise polyfills promises for IE11 -->
|
|
<script src="vendor/promise.js"></script>
|
|
<!-- ES2015/ES6 modules polyfill -->
|
|
<script type="module">
|
|
window._noVNC_has_module_support = true;
|
|
</script>
|
|
<script>
|
|
window.addEventListener("load", function() {
|
|
if (window._noVNC_has_module_support) return;
|
|
var loader = document.createElement("script");
|
|
loader.src = "vendor/browser-es-module-loader/dist/browser-es-module-loader.js";
|
|
document.head.appendChild(loader);
|
|
});
|
|
</script>
|
|
|
|
<!-- actual script modules -->
|
|
<script type="module" crossorigin="anonymous">
|
|
// Load supporting scripts
|
|
import * as WebUtil from './app/webutil.js';
|
|
import RFB from './core/rfb.js';
|
|
|
|
var rfb;
|
|
var desktopName;
|
|
|
|
function updateDesktopName(e) {
|
|
desktopName = e.detail.name;
|
|
}
|
|
function credentials(e) {
|
|
var form = document.createElement('form');
|
|
form.innerHTML = '<label></label>';
|
|
form.innerHTML += '<input type=password size=10 id="password_input">';
|
|
form.onsubmit = setPassword;
|
|
|
|
// bypass status() because it sets text content
|
|
document.getElementById('noVNC_status').innerHTML = '';
|
|
document.getElementById('noVNC_status').appendChild(form);
|
|
document.getElementById('noVNC_status').querySelector('label').textContent = 'Password Required: ';
|
|
}
|
|
function setPassword() {
|
|
rfb.sendCredentials({ password: document.getElementById('password_input').value });
|
|
return false;
|
|
}
|
|
function sendCtrlAltDel() {
|
|
rfb.sendCtrlAltDel();
|
|
return false;
|
|
}
|
|
function status(text) {
|
|
document.getElementById('noVNC_status').textContent = text;
|
|
}
|
|
|
|
function connected(e) {
|
|
document.getElementById('sendCtrlAltDelButton').disabled = false;
|
|
if (WebUtil.getConfigVar('encrypt',
|
|
(window.location.protocol === "https:"))) {
|
|
status("Connected (encrypted) to " + desktopName);
|
|
} else {
|
|
status("Connected (unencrypted) to " + desktopName);
|
|
}
|
|
}
|
|
|
|
function disconnected(e) {
|
|
document.getElementById('sendCtrlAltDelButton').disabled = true;
|
|
if (e.detail.clean) {
|
|
status("Disconnected");
|
|
} else {
|
|
status("Something went wrong, connection is closed");
|
|
}
|
|
}
|
|
|
|
document.getElementById('sendCtrlAltDelButton').onclick = sendCtrlAltDel;
|
|
|
|
WebUtil.init_logging(WebUtil.getConfigVar('logging', 'warn'));
|
|
document.title = WebUtil.getConfigVar('title', 'noVNC');
|
|
// By default, use the host and port of server that served this file
|
|
var host = WebUtil.getConfigVar('host', window.location.hostname);
|
|
var port = WebUtil.getConfigVar('port', window.location.port);
|
|
|
|
// if port == 80 (or 443) then it won't be present and should be
|
|
// set manually
|
|
if (!port) {
|
|
if (window.location.protocol.substring(0,5) == 'https') {
|
|
port = 443;
|
|
}
|
|
else if (window.location.protocol.substring(0,4) == 'http') {
|
|
port = 80;
|
|
}
|
|
}
|
|
|
|
var password = WebUtil.getConfigVar('password', '');
|
|
var path = WebUtil.getConfigVar('path', 'websockify');
|
|
|
|
// If a token variable is passed in, set the parameter in a cookie.
|
|
// This is used by nova-novncproxy.
|
|
var token = WebUtil.getConfigVar('token', null);
|
|
if (token) {
|
|
// if token is already present in the path we should use it
|
|
path = WebUtil.injectParamIfMissing(path, "token", token);
|
|
|
|
WebUtil.createCookie('token', token, 1)
|
|
}
|
|
|
|
(function() {
|
|
|
|
status("Connecting");
|
|
|
|
var url;
|
|
|
|
if (WebUtil.getConfigVar('encrypt',
|
|
(window.location.protocol === "https:"))) {
|
|
url = 'wss';
|
|
} else {
|
|
url = 'ws';
|
|
}
|
|
|
|
url += '://' + host;
|
|
if(port) {
|
|
url += ':' + port;
|
|
}
|
|
url += '/' + path;
|
|
|
|
rfb = new RFB(document.body, url,
|
|
{ repeaterID: WebUtil.getConfigVar('repeaterID', ''),
|
|
shared: WebUtil.getConfigVar('shared', true),
|
|
credentials: { password: password } });
|
|
rfb.viewOnly = WebUtil.getConfigVar('view_only', false);
|
|
rfb.addEventListener("connect", connected);
|
|
rfb.addEventListener("disconnect", disconnected);
|
|
rfb.addEventListener("credentialsrequired", credentials);
|
|
rfb.addEventListener("desktopname", updateDesktopName);
|
|
rfb.scaleViewport = WebUtil.getConfigVar('scale', false);
|
|
rfb.resizeSession = WebUtil.getConfigVar('resize', false);
|
|
})();
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="noVNC_status_bar">
|
|
<div id="noVNC_left_dummy_elem"></div>
|
|
<div id="noVNC_status">Loading</div>
|
|
<div id="noVNC_buttons">
|
|
<input type=button value="Send CtrlAltDel"
|
|
id="sendCtrlAltDelButton">
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|