230 lines
8.3 KiB
HTML
230 lines
8.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" class="noVNC_loading">
|
|
<head>
|
|
|
|
<!--
|
|
noVNC example: simple example using default UI
|
|
Copyright (C) 2019 The noVNC authors
|
|
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>
|
|
|
|
<link rel="icon" type="image/x-icon" href="app/images/icons/novnc.ico">
|
|
<meta name="theme-color" content="#313131">
|
|
|
|
<!-- Apple iOS Safari settings -->
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
|
|
<!-- @2x -->
|
|
<link rel="apple-touch-icon" sizes="40x40" type="image/png" href="app/images/icons/novnc-ios-40.png">
|
|
<link rel="apple-touch-icon" sizes="58x58" type="image/png" href="app/images/icons/novnc-ios-58.png">
|
|
<link rel="apple-touch-icon" sizes="80x80" type="image/png" href="app/images/icons/novnc-ios-80.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" type="image/png" href="app/images/icons/novnc-ios-120.png">
|
|
<link rel="apple-touch-icon" sizes="152x152" type="image/png" href="app/images/icons/novnc-ios-152.png">
|
|
<link rel="apple-touch-icon" sizes="167x167" type="image/png" href="app/images/icons/novnc-ios-167.png">
|
|
<!-- @3x -->
|
|
<link rel="apple-touch-icon" sizes="60x60" type="image/png" href="app/images/icons/novnc-ios-60.png">
|
|
<link rel="apple-touch-icon" sizes="87x87" type="image/png" href="app/images/icons/novnc-ios-87.png">
|
|
<link rel="apple-touch-icon" sizes="120x120" type="image/png" href="app/images/icons/novnc-ios-120.png">
|
|
<link rel="apple-touch-icon" sizes="180x180" type="image/png" href="app/images/icons/novnc-ios-180.png">
|
|
|
|
<!-- Stylesheets -->
|
|
<link rel="stylesheet" href="app/styles/constants.css">
|
|
<link rel="stylesheet" href="app/styles/base.css">
|
|
<link rel="stylesheet" href="app/styles/input.css">
|
|
|
|
<!-- Images that will later appear via CSS -->
|
|
<link rel="preload" as="image" href="app/images/info.svg">
|
|
<link rel="preload" as="image" href="app/images/error.svg">
|
|
<link rel="preload" as="image" href="app/images/warning.svg">
|
|
|
|
<script type="module" crossorigin="anonymous" src="app/error-handler.js"></script>
|
|
|
|
<script type="module">
|
|
import UI from "./app/ui.js";
|
|
import * as Log from './core/util/logging.js';
|
|
|
|
let response;
|
|
|
|
let defaults = {};
|
|
let mandatory = {};
|
|
|
|
// Default settings will be loaded from defaults.json. Mandatory
|
|
// settings will be loaded from mandatory.json, which the user
|
|
// cannot change.
|
|
|
|
try {
|
|
response = await fetch('./defaults.json');
|
|
if (!response.ok) {
|
|
throw Error("" + response.status + " " + response.statusText);
|
|
}
|
|
|
|
defaults = await response.json();
|
|
} catch (err) {
|
|
Log.Error("Couldn't fetch defaults.json: " + err);
|
|
}
|
|
|
|
try {
|
|
response = await fetch('./mandatory.json');
|
|
if (!response.ok) {
|
|
throw Error("" + response.status + " " + response.statusText);
|
|
}
|
|
|
|
mandatory = await response.json();
|
|
} catch (err) {
|
|
Log.Error("Couldn't fetch mandatory.json: " + err);
|
|
}
|
|
|
|
// You can also override any defaults you need here:
|
|
//
|
|
// defaults['host'] = 'vnc.example.com';
|
|
|
|
// Or force a specific setting, preventing the user from
|
|
// changing it:
|
|
//
|
|
// mandatory['view_only'] = true;
|
|
|
|
// See docs/EMBEDDING.md for a list of possible settings.
|
|
|
|
UI.start({ settings: { defaults: defaults,
|
|
mandatory: mandatory } });
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="noVNC_fallback_error" class="noVNC_center">
|
|
<div>
|
|
<div>noVNC encountered an error:</div>
|
|
<br>
|
|
<div id="noVNC_fallback_errormsg"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- noVNC control bar -->
|
|
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
|
|
|
|
<div id="noVNC_control_bar">
|
|
<div id="noVNC_control_bar_handle" title="Hide/Show the control bar"><div></div></div>
|
|
|
|
<div class="noVNC_scroll">
|
|
|
|
<!-- Clipboard -->
|
|
<input type="image" alt="Clipboard" src="app/images/clipboard.svg"
|
|
id="noVNC_clipboard_button" class="noVNC_button"
|
|
title="Clipboard">
|
|
<div class="noVNC_vcenter">
|
|
<div id="noVNC_clipboard" class="noVNC_panel">
|
|
<div class="noVNC_heading">
|
|
<img alt="" src="app/images/clipboard.svg"> Clipboard
|
|
</div>
|
|
<p class="noVNC_subheading">
|
|
Edit clipboard content in the textarea below.
|
|
</p>
|
|
<textarea id="noVNC_clipboard_text" rows="5"></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div> <!-- End of noVNC_control_bar -->
|
|
|
|
<div id="noVNC_hint_anchor" class="noVNC_vcenter">
|
|
<div id="noVNC_control_bar_hint">
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Status dialog -->
|
|
<div id="noVNC_status"></div>
|
|
|
|
<!-- Connect button -->
|
|
<div class="noVNC_center">
|
|
<div id="noVNC_connect_dlg">
|
|
<!-- <p class="noVNC_logo" translate="no"><span>no</span>VNC</p> -->
|
|
<div>
|
|
<button id="noVNC_connect_button">
|
|
<img alt="" src="app/images/connect.svg"> Connect
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Server key verification dialog -->
|
|
<div class="noVNC_center noVNC_connect_layer">
|
|
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
|
|
<div class="noVNC_heading">
|
|
Server identity
|
|
</div>
|
|
<div>
|
|
The server has provided the following identifying information:
|
|
</div>
|
|
<div id="noVNC_fingerprint_block">
|
|
Fingerprint:
|
|
<span id="noVNC_fingerprint"></span>
|
|
</div>
|
|
<div>
|
|
Please verify that the information is correct and press
|
|
"Approve". Otherwise press "Reject".
|
|
</div>
|
|
<div class="button_row">
|
|
<input id="noVNC_approve_server_button" type="submit" value="Approve">
|
|
<input id="noVNC_reject_server_button" type="button" value="Reject">
|
|
</div>
|
|
</form></div>
|
|
</div>
|
|
|
|
<!-- Password dialog -->
|
|
<div class="noVNC_center noVNC_connect_layer">
|
|
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
|
|
<div class="noVNC_heading">
|
|
Credentials
|
|
</div>
|
|
<div id="noVNC_username_block">
|
|
<label for="noVNC_username_input">Username:</label>
|
|
<input id="noVNC_username_input">
|
|
</div>
|
|
<div id="noVNC_password_block">
|
|
<label for="noVNC_password_input">Password:</label>
|
|
<input id="noVNC_password_input" type="password">
|
|
</div>
|
|
<div class="button_row">
|
|
<input id="noVNC_credentials_button" type="submit" value="Send credentials">
|
|
</div>
|
|
</form></div>
|
|
</div>
|
|
|
|
<!-- Transition screens -->
|
|
<div id="noVNC_transition">
|
|
<div id="noVNC_transition_text"></div>
|
|
<div>
|
|
<input type="button" id="noVNC_cancel_reconnect_button" value="Cancel">
|
|
</div>
|
|
<div class="noVNC_spinner"></div>
|
|
</div>
|
|
|
|
<!-- This is where the RFB elements will attach -->
|
|
<div id="noVNC_container">
|
|
<!-- Note that Google Chrome on Android doesn't respect any of these,
|
|
html attributes which attempt to disable text suggestions on the
|
|
on-screen keyboard. Let's hope Chrome implements the ime-mode
|
|
style for example -->
|
|
<textarea id="noVNC_keyboardinput" autocapitalize="off"
|
|
autocomplete="off" spellcheck="false" tabindex="-1"></textarea>
|
|
</div>
|
|
|
|
<audio id="noVNC_bell">
|
|
<source src="app/sounds/bell.oga" type="audio/ogg">
|
|
<source src="app/sounds/bell.mp3" type="audio/mpeg">
|
|
</audio>
|
|
</body>
|
|
</html>
|