Files
noVNC/vnc.html
T

424 lines
18 KiB
HTML
Raw Normal View History

2012-10-19 12:18:48 -05:00
<!DOCTYPE html>
2019-03-13 14:19:51 +01:00
<html lang="en" class="noVNC_loading">
<head>
<!--
2010-11-10 16:02:19 -06:00
noVNC example: simple example using default UI
2024-11-27 13:58:26 +01:00
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:
2017-05-04 15:13:33 +02:00
http://example.com/?host=HOST&port=PORT&encrypt=1
or the fragment:
2017-05-04 15:13:33 +02:00
http://example.com/#host=HOST&port=PORT&encrypt=1
2010-09-08 10:11:11 -05:00
-->
2011-09-08 10:00:09 -05:00
<title>noVNC</title>
2022-12-22 16:43:44 +01:00
<link rel="icon" type="image/x-icon" href="app/images/icons/novnc.ico">
<meta name="theme-color" content="#313131">
2016-10-14 13:24:35 +02:00
<!-- Apple iOS Safari settings -->
2019-04-02 14:22:34 +02:00
<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">
2022-12-22 13:15:25 +01:00
<!-- @2x -->
2022-12-22 15:54:12 +01:00
<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">
2022-12-22 13:15:25 +01:00
<!-- @3x -->
2022-12-22 15:54:12 +01:00
<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">
2011-09-29 09:32:09 -05:00
2011-09-08 10:00:09 -05:00
<!-- Stylesheets -->
<link rel="stylesheet" href="app/styles/constants.css">
2019-04-02 14:22:34 +02:00
<link rel="stylesheet" href="app/styles/base.css">
<link rel="stylesheet" href="app/styles/input.css">
2011-09-08 10:00:09 -05:00
2021-09-24 16:15:31 +02:00
<!-- 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">
2021-11-22 14:03:19 +01:00
<script type="module" crossorigin="anonymous" src="app/error-handler.js"></script>
<script type="module">
import UI from "./app/ui.js";
2024-08-08 16:20:51 +02:00
import * as Log from './core/util/logging.js';
let response;
let defaults = {};
let mandatory = {};
2024-08-08 16:20:51 +02:00
// 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>
2011-09-29 09:32:09 -05:00
</head>
2010-04-01 11:36:22 -05:00
<body>
2016-11-05 18:02:08 +01:00
2017-03-02 14:21:29 +01:00
<div id="noVNC_fallback_error" class="noVNC_center">
<div>
<div>noVNC encountered an error:</div>
2019-04-02 14:22:34 +02:00
<br>
2017-03-02 14:21:29 +01:00
<div id="noVNC_fallback_errormsg"></div>
</div>
2016-11-05 18:02:08 +01:00
</div>
2024-11-27 13:58:26 +01:00
<!-- noVNC control bar -->
<div id="noVNC_control_bar_anchor" class="noVNC_vcenter">
2016-08-24 11:10:40 +02:00
<div id="noVNC_control_bar">
<div id="noVNC_control_bar_handle" title="Hide/Show the control bar"><div></div></div>
<div class="noVNC_scroll">
2019-04-02 14:22:34 +02:00
<h1 class="noVNC_logo" translate="no"><span>no</span><br>VNC</h1>
2016-08-26 12:24:57 +02:00
<hr>
2016-08-24 11:10:40 +02:00
<!-- Drag/Pan the viewport -->
2019-10-14 10:17:44 +02:00
<input type="image" alt="Drag" src="app/images/drag.svg"
2016-08-25 14:41:53 +02:00
id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
2024-11-27 13:58:26 +01:00
title="Move/Drag viewport">
2016-08-24 11:10:40 +02:00
2024-11-27 13:58:26 +01:00
<!--noVNC touch device only buttons-->
<div id="noVNC_mobile_buttons">
2016-08-25 16:31:38 +02:00
<input type="image" alt="Keyboard" src="app/images/keyboard.svg"
2024-11-27 13:58:26 +01:00
id="noVNC_keyboard_button" class="noVNC_button" title="Show keyboard">
</div>
2011-09-08 10:00:09 -05:00
2016-08-25 20:52:46 +02:00
<!-- Extra manual keys -->
<input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg"
id="noVNC_toggle_extra_keys_button" class="noVNC_button"
2024-11-27 13:58:26 +01:00
title="Show extra keys">
<div class="noVNC_vcenter">
<div id="noVNC_modifiers" class="noVNC_panel">
<input type="image" alt="Ctrl" src="app/images/ctrl.svg"
id="noVNC_toggle_ctrl_button" class="noVNC_button"
title="Toggle Ctrl">
<input type="image" alt="Alt" src="app/images/alt.svg"
id="noVNC_toggle_alt_button" class="noVNC_button"
title="Toggle Alt">
<input type="image" alt="Windows" src="app/images/windows.svg"
id="noVNC_toggle_windows_button" class="noVNC_button"
title="Toggle Windows">
<input type="image" alt="Tab" src="app/images/tab.svg"
id="noVNC_send_tab_button" class="noVNC_button"
title="Send Tab">
<input type="image" alt="Esc" src="app/images/esc.svg"
id="noVNC_send_esc_button" class="noVNC_button"
title="Send Escape">
<input type="image" alt="Ctrl+Alt+Del" src="app/images/ctrlaltdel.svg"
id="noVNC_send_ctrl_alt_del_button" class="noVNC_button"
title="Send Ctrl-Alt-Del">
</div>
</div>
2017-10-13 14:25:26 +02:00
<!-- Shutdown/Reboot -->
2016-08-25 16:31:38 +02:00
<input type="image" alt="Shutdown/Reboot" src="app/images/power.svg"
2017-10-13 14:25:26 +02:00
id="noVNC_power_button" class="noVNC_button"
2019-04-02 14:22:34 +02:00
title="Shutdown/Reboot...">
<div class="noVNC_vcenter">
2017-10-13 14:25:26 +02:00
<div id="noVNC_power" class="noVNC_panel">
2016-08-30 16:38:45 +02:00
<div class="noVNC_heading">
2019-04-02 14:22:34 +02:00
<img alt="" src="app/images/power.svg"> Power
2016-08-30 16:38:45 +02:00
</div>
2019-04-02 14:22:34 +02:00
<input type="button" id="noVNC_shutdown_button" value="Shutdown">
<input type="button" id="noVNC_reboot_button" value="Reboot">
<input type="button" id="noVNC_reset_button" value="Reset">
2016-08-24 11:10:40 +02:00
</div>
</div>
2016-08-24 11:10:40 +02:00
<!-- Clipboard -->
2016-08-25 16:31:38 +02:00
<input type="image" alt="Clipboard" src="app/images/clipboard.svg"
2016-08-25 14:41:53 +02:00
id="noVNC_clipboard_button" class="noVNC_button"
2019-04-02 14:22:34 +02:00
title="Clipboard">
<div class="noVNC_vcenter">
2016-08-25 11:10:25 +02:00
<div id="noVNC_clipboard" class="noVNC_panel">
2016-08-30 16:38:45 +02:00
<div class="noVNC_heading">
2019-04-02 14:22:34 +02:00
<img alt="" src="app/images/clipboard.svg"> Clipboard
2016-08-30 16:38:45 +02:00
</div>
2022-11-14 17:17:01 +01:00
<p class="noVNC_subheading">
Edit clipboard content in the textarea below.
</p>
<textarea id="noVNC_clipboard_text" rows=5></textarea>
2016-08-24 11:10:40 +02:00
</div>
</div>
2011-09-08 10:00:09 -05:00
2016-08-24 11:10:40 +02:00
<!-- Toggle fullscreen -->
2024-11-27 13:58:26 +01:00
<input type="image" alt="Full screen" src="app/images/fullscreen.svg"
2016-08-25 14:41:53 +02:00
id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
2024-11-27 13:58:26 +01:00
title="Full screen">
2013-09-28 19:25:15 +01:00
2016-08-24 11:10:40 +02:00
<!-- Settings -->
2016-08-25 16:31:38 +02:00
<input type="image" alt="Settings" src="app/images/settings.svg"
2016-08-25 14:41:53 +02:00
id="noVNC_settings_button" class="noVNC_button"
2019-04-02 14:22:34 +02:00
title="Settings">
<div class="noVNC_vcenter">
2016-08-25 11:10:25 +02:00
<div id="noVNC_settings" class="noVNC_panel">
2022-10-13 13:37:22 +02:00
<div class="noVNC_heading">
<img alt="" src="app/images/settings.svg"> Settings
</div>
2011-09-08 10:00:09 -05:00
<ul>
2016-08-30 16:38:09 +02:00
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_shared" type="checkbox"
class="toggle">
Shared mode
</label>
2016-08-30 16:38:09 +02:00
</li>
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_view_only" type="checkbox"
class="toggle">
View only
</label>
2016-08-30 16:38:09 +02:00
</li>
2019-04-02 14:22:34 +02:00
<li><hr></li>
2016-08-30 16:38:09 +02:00
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_view_clip" type="checkbox"
class="toggle">
Clip to window
</label>
2016-08-30 16:38:09 +02:00
</li>
<li>
2024-11-27 13:58:26 +01:00
<label for="noVNC_setting_resize">Scaling mode:</label>
2016-10-29 17:37:09 +02:00
<select id="noVNC_setting_resize" name="vncResize">
<option value="off">None</option>
2024-11-27 13:58:26 +01:00
<option value="scale">Local scaling</option>
<option value="remote">Remote resizing</option>
2016-10-29 17:37:09 +02:00
</select>
2016-08-30 16:38:09 +02:00
</li>
2019-04-02 14:22:34 +02:00
<li><hr></li>
2016-08-30 16:38:09 +02:00
<li>
2016-10-29 17:37:09 +02:00
<div class="noVNC_expander">Advanced</div>
2016-10-29 17:25:32 +02:00
<div><ul>
2020-02-28 14:52:56 +01:00
<li>
<label for="noVNC_setting_quality">Quality:</label>
2020-02-28 14:56:57 +01:00
<input id="noVNC_setting_quality" type="range" min="0" max="9" value="6">
2020-02-28 14:52:56 +01:00
</li>
2020-05-01 16:14:15 +02:00
<li>
<label for="noVNC_setting_compression">Compression level:</label>
<input id="noVNC_setting_compression" type="range" min="0" max="9" value="2">
</li>
2020-02-28 14:52:56 +01:00
<li><hr></li>
2016-10-29 17:25:32 +02:00
<li>
2016-10-29 17:37:09 +02:00
<label for="noVNC_setting_repeaterID">Repeater ID:</label>
2019-04-02 14:22:34 +02:00
<input id="noVNC_setting_repeaterID" type="text" value="">
2016-10-29 17:25:32 +02:00
</li>
<li>
2016-10-29 17:37:09 +02:00
<div class="noVNC_expander">WebSocket</div>
<div><ul>
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_encrypt" type="checkbox"
class="toggle">
Encrypt
</label>
2016-10-29 17:37:09 +02:00
</li>
<li>
<label for="noVNC_setting_host">Host:</label>
2019-04-02 14:22:34 +02:00
<input id="noVNC_setting_host">
2016-10-29 17:37:09 +02:00
</li>
<li>
<label for="noVNC_setting_port">Port:</label>
2019-04-02 14:22:34 +02:00
<input id="noVNC_setting_port" type="number">
2016-10-29 17:37:09 +02:00
</li>
<li>
<label for="noVNC_setting_path">Path:</label>
2019-04-02 14:22:34 +02:00
<input id="noVNC_setting_path" type="text" value="websockify">
2016-10-29 17:37:09 +02:00
</li>
</ul></div>
2016-10-29 17:25:32 +02:00
</li>
2019-04-02 14:22:34 +02:00
<li><hr></li>
2017-01-11 15:08:56 +01:00
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_reconnect" type="checkbox"
class="toggle">
Automatic reconnect
</label>
2017-01-11 15:08:56 +01:00
</li>
<li>
2024-11-27 13:58:26 +01:00
<label for="noVNC_setting_reconnect_delay">Reconnect delay (ms):</label>
2019-04-02 14:22:34 +02:00
<input id="noVNC_setting_reconnect_delay" type="number">
2017-01-11 15:08:56 +01:00
</li>
2019-04-02 14:22:34 +02:00
<li><hr></li>
2018-08-12 03:17:16 +08:00
<li>
2025-01-13 01:19:40 +01:00
<label>
<input id="noVNC_setting_show_dot" type="checkbox"
class="toggle">
Show dot when no cursor
</label>
2018-08-12 03:17:16 +08:00
</li>
2025-09-12 12:14:43 +10:00
<li>
<label>
<input id="noVNC_setting_keep_device_awake" type="checkbox"
class="toggle">
Keep client display awake while connected
</label>
</li>
2019-04-02 14:22:34 +02:00
<li><hr></li>
2016-10-29 17:37:09 +02:00
<!-- Logging selection dropdown -->
2016-10-29 17:25:32 +02:00
<li>
2016-10-29 17:37:09 +02:00
<label>Logging:
<select id="noVNC_setting_logging" name="vncLogging">
</select>
</label>
2016-10-29 17:25:32 +02:00
</li>
</ul></div>
2016-08-30 16:38:09 +02:00
</li>
2019-07-19 14:21:40 +03:00
<li class="noVNC_version_separator"><hr></li>
<li class="noVNC_version_wrapper">
<span>Version:</span>
<span class="noVNC_version"></span>
</li>
2011-09-08 10:00:09 -05:00
</ul>
2016-08-24 11:10:40 +02:00
</div>
</div>
2011-09-08 10:00:09 -05:00
2024-11-27 13:58:26 +01:00
<!-- Connection controls -->
2016-08-25 16:31:38 +02:00
<input type="image" alt="Disconnect" src="app/images/disconnect.svg"
2016-08-25 14:41:53 +02:00
id="noVNC_disconnect_button" class="noVNC_button"
2019-04-02 14:22:34 +02:00
title="Disconnect">
</div>
2011-09-08 10:00:09 -05:00
</div>
</div> <!-- End of noVNC_control_bar -->
2011-09-08 10:00:09 -05:00
<div id="noVNC_hint_anchor" class="noVNC_vcenter">
<div id="noVNC_control_bar_hint">
</div>
</div>
2024-11-27 13:58:26 +01:00
<!-- Status dialog -->
<div id="noVNC_status"></div>
2016-10-29 17:58:34 +02:00
<!-- Connect button -->
<div class="noVNC_center">
<div id="noVNC_connect_dlg">
2022-12-23 13:33:50 +01:00
<p class="noVNC_logo" translate="no"><span>no</span>VNC</p>
2022-12-23 13:29:52 +01:00
<div>
<button id="noVNC_connect_button">
<img alt="" src="app/images/connect.svg"> Connect
</button>
</div>
2016-10-29 17:58:34 +02:00
</div>
</div>
2024-11-27 13:58:26 +01:00
<!-- Server key verification dialog -->
<div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_verify_server_dlg" class="noVNC_panel"><form>
2022-03-10 16:28:54 +01:00
<div class="noVNC_heading">
Server identity
</div>
<div>
The server has provided the following identifying information:
</div>
2022-03-10 16:26:38 +01:00
<div id="noVNC_fingerprint_block">
2025-01-17 11:29:07 +01:00
Fingerprint:
<span id="noVNC_fingerprint"></span>
2022-03-10 16:26:38 +01:00
</div>
<div>
Please verify that the information is correct and press
"Approve". Otherwise press "Reject".
2022-03-10 16:26:38 +01:00
</div>
2025-01-13 16:18:03 +01:00
<div class="button_row">
<input id="noVNC_approve_server_button" type="submit" value="Approve">
<input id="noVNC_reject_server_button" type="button" value="Reject">
2022-03-10 16:26:38 +01:00
</div>
</form></div>
</div>
2024-11-27 13:58:26 +01:00
<!-- Password dialog -->
2016-11-14 17:17:05 +01:00
<div class="noVNC_center noVNC_connect_layer">
<div id="noVNC_credentials_dlg" class="noVNC_panel"><form>
2022-03-10 16:28:54 +01:00
<div class="noVNC_heading">
Credentials
</div>
2022-03-10 16:26:38 +01:00
<div id="noVNC_username_block">
<label for="noVNC_username_input">Username:</label>
2022-03-10 16:26:38 +01:00
<input id="noVNC_username_input">
</div>
<div id="noVNC_password_block">
<label for="noVNC_password_input">Password:</label>
2022-03-10 16:26:38 +01:00
<input id="noVNC_password_input" type="password">
</div>
2025-01-13 16:18:03 +01:00
<div class="button_row">
<input id="noVNC_credentials_button" type="submit" value="Send credentials">
2022-03-10 16:26:38 +01:00
</div>
</form></div>
</div>
2011-09-13 13:14:11 -05:00
2024-11-27 13:58:26 +01:00
<!-- Transition screens -->
<div id="noVNC_transition">
<div id="noVNC_transition_text"></div>
2017-01-11 15:08:56 +01:00
<div>
2025-01-13 16:18:03 +01:00
<input type="button" id="noVNC_cancel_reconnect_button" value="Cancel">
2017-01-11 15:08:56 +01:00
</div>
<div class="noVNC_spinner"></div>
</div>
2017-11-24 15:25:23 +01:00
<!-- This is where the RFB elements will attach -->
<div id="noVNC_container">
2017-11-24 15:25:23 +01:00
<!-- 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>
2011-09-08 10:00:09 -05:00
</div>
2016-09-19 15:15:07 +02:00
<audio id="noVNC_bell">
2019-04-02 14:22:34 +02:00
<source src="app/sounds/bell.oga" type="audio/ogg">
<source src="app/sounds/bell.mp3" type="audio/mpeg">
2016-09-19 15:15:07 +02:00
</audio>
</body>
2010-04-01 11:36:22 -05:00
</html>