Merge remote-tracking branch 'origin/webpack2' into create_ubuntu_packages
						commit
						d98157f3fc
					
				@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# clear previous build
 | 
				
			||||||
 | 
					rm -rf /build/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# build webpack
 | 
				
			||||||
 | 
					npm run build
 | 
				
			||||||
 | 
					# remove node stuff from directory
 | 
				
			||||||
 | 
					rm -rf node_modules/
 | 
				
			||||||
 | 
					# copy all to build dir
 | 
				
			||||||
 | 
					cp -R ./* /build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# remove unneccesary files
 | 
				
			||||||
 | 
					cd /build
 | 
				
			||||||
 | 
					rm *.md
 | 
				
			||||||
 | 
					rm AUTHORS
 | 
				
			||||||
 | 
					rm *.yml
 | 
				
			||||||
 | 
					rm vnc.html
 | 
				
			||||||
 | 
					rm vnc_lite.html
 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					FROM node:12-buster
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPY kasmweb/ /src/www/
 | 
				
			||||||
 | 
					COPY builder/build_www.sh /src/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WORKDIR /src/www
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN npm install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENTRYPOINT [ "/src/build_www.sh" ]
 | 
				
			||||||
@ -0,0 +1,370 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html class="noVNC_loading">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--
 | 
				
			||||||
 | 
					    noVNC example: simple example using default UI
 | 
				
			||||||
 | 
					    Copyright (C) 2018 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>KasmVNC</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" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Icons (see app/images/icons/Makefile for what the sizes are for) -->
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="16x16" type="image/png" href="app/images/icons/368_kasm_logo_only_16x16.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="24x24" type="image/png" href="app/images/icons/368_kasm_logo_only_24x24.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="32x32" type="image/png" href="app/images/icons/368_kasm_logo_only_32x32.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="48x48" type="image/png" href="app/images/icons/368_kasm_logo_only_48x48.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="60x60" type="image/png" href="app/images/icons/368_kasm_logo_only_60x60.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="64x64" type="image/png" href="app/images/icons/368_kasm_logo_only_64x64.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="72x72" type="image/png" href="app/images/icons/368_kasm_logo_only_72x72.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="76x76" type="image/png" href="app/images/icons/368_kasm_logo_only_76x76.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="96x96" type="image/png" href="app/images/icons/368_kasm_logo_only_96x96.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="120x120" type="image/png" href="app/images/icons/368_kasm_logo_only_120x120.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="144x144" type="image/png" href="app/images/icons/368_kasm_logo_only_144x144.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="152x152" type="image/png" href="app/images/icons/368_kasm_logo_only_152x152.png">
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="192x192" type="image/png" href="app/images/icons/368_kasm_logo_only_192x192.png">
 | 
				
			||||||
 | 
					    <!-- Firefox currently mishandles SVG, see #1419039
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="any" type="image/svg+xml" href="app/images/icons/kasm-icon.svg">
 | 
				
			||||||
 | 
					    -->
 | 
				
			||||||
 | 
					    <!-- Repeated last so that legacy handling will pick this -->
 | 
				
			||||||
 | 
					    <link rel="icon" sizes="16x16" type="image/png" href="app/images/icons/368_kasm_logo_only_16x16.png">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 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" />
 | 
				
			||||||
 | 
					    <!-- Home Screen Icons (favourites and bookmarks use the normal icons) -->
 | 
				
			||||||
 | 
					    <link rel="apple-touch-icon" sizes="60x60" type="image/png" href="app/images/icons/368_kasm_logo_only_60x60.png">
 | 
				
			||||||
 | 
					    <link rel="apple-touch-icon" sizes="76x76" type="image/png" href="app/images/icons/368_kasm_logo_only_76x76.png">
 | 
				
			||||||
 | 
					    <link rel="apple-touch-icon" sizes="120x120" type="image/png" href="app/images/icons/368_kasm_logo_only_120x120.png">
 | 
				
			||||||
 | 
					    <link rel="apple-touch-icon" sizes="152x152" type="image/png" href="app/images/icons/368_kasm_logo_only_152x152.png">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Stylesheets -->
 | 
				
			||||||
 | 
					    <!-- <link rel="stylesheet" href="app/styles/base.css" /> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- this is included as a normal file in order to catch script-loading errors as well -->
 | 
				
			||||||
 | 
					    <!-- <script type="text/javascript" src="app/error-handler.js"></script> -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- begin scripts -->
 | 
				
			||||||
 | 
					    <!-- 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);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        window.addEventListener("load", function() {
 | 
				
			||||||
 | 
					            document.getElementById("noVNC_connect_button").click();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    </script> -->
 | 
				
			||||||
 | 
					    <!-- actual script modules -->
 | 
				
			||||||
 | 
					    <!-- <script type="module" crossorigin='use-credentials' src="app/ui.js"></script> -->
 | 
				
			||||||
 | 
					    <!-- end scripts -->
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div id="noVNC_fallback_error" class="noVNC_center">
 | 
				
			||||||
 | 
					        <div>
 | 
				
			||||||
 | 
					            <div>Kasm encountered an error:</div>
 | 
				
			||||||
 | 
					            <br>
 | 
				
			||||||
 | 
					            <div id="noVNC_fallback_errormsg"></div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div id="noVNC_connection_stats">
 | 
				
			||||||
 | 
					        Loading statistics...
 | 
				
			||||||
 | 
					    </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">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <h1 class="noVNC_logo"><img src="app/images/icons/368_kasm_logo_only_24x24.png" /></h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Drag/Pan the viewport -->
 | 
				
			||||||
 | 
					            <img  alt="viewport drag" src="app/images/drag.svg"
 | 
				
			||||||
 | 
					                id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden"
 | 
				
			||||||
 | 
					                title="Move/Drag Viewport" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!--noVNC Touch Device only buttons-->
 | 
				
			||||||
 | 
					            <div id="noVNC_mobile_buttons">
 | 
				
			||||||
 | 
					                <img  alt="No mousebutton" src="app/images/mouse_none.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_mouse_button0" class="noVNC_button"
 | 
				
			||||||
 | 
					                    title="Active Mouse Button"/>
 | 
				
			||||||
 | 
					                <img  alt="Left mousebutton" src="app/images/mouse_left.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_mouse_button1" class="noVNC_button"
 | 
				
			||||||
 | 
					                    title="Active Mouse Button"/>
 | 
				
			||||||
 | 
					                <img  alt="Middle mousebutton" src="app/images/mouse_middle.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_mouse_button2" class="noVNC_button"
 | 
				
			||||||
 | 
					                    title="Active Mouse Button"/>
 | 
				
			||||||
 | 
					                <img  alt="Right mousebutton" src="app/images/mouse_right.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_mouse_button4" class="noVNC_button"
 | 
				
			||||||
 | 
					                    title="Active Mouse Button"/>
 | 
				
			||||||
 | 
					                <img  alt="Keyboard" src="app/images/keyboard.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_keyboard_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                    value="Keyboard" title="Show Keyboard" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Extra manual keys -->
 | 
				
			||||||
 | 
					            <div id="noVNC_extra_keys">
 | 
				
			||||||
 | 
					                <img alt="Extra keys"  src="app/images/toggleextrakeys.svg"
 | 
				
			||||||
 | 
					                    id="noVNC_toggle_extra_keys_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                    title="Show Extra Keys"/>
 | 
				
			||||||
 | 
					                <div class="noVNC_vcenter">
 | 
				
			||||||
 | 
					                <div id="noVNC_modifiers" class="noVNC_panel">
 | 
				
			||||||
 | 
					                    <img  alt="Ctrl" src="app/images/ctrl.svg"
 | 
				
			||||||
 | 
					                        id="noVNC_toggle_ctrl_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                        title="Toggle Ctrl"/>
 | 
				
			||||||
 | 
					                    <img  alt="Alt" src="app/images/alt.svg"
 | 
				
			||||||
 | 
					                        id="noVNC_toggle_alt_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                        title="Toggle Alt"/>
 | 
				
			||||||
 | 
					                    <img  alt="Windows" src="app/images/windows.svg"
 | 
				
			||||||
 | 
					                        id="noVNC_toggle_windows_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                        title="Toggle Windows"/>
 | 
				
			||||||
 | 
					                    <img  alt="Tab" src="app/images/tab.svg"
 | 
				
			||||||
 | 
					                        id="noVNC_send_tab_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                        title="Send Tab"/>
 | 
				
			||||||
 | 
					                    <img  alt="Esc" src="app/images/esc.svg"
 | 
				
			||||||
 | 
					                        id="noVNC_send_esc_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                        title="Send Escape"/>
 | 
				
			||||||
 | 
					                    <img  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>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Shutdown/Reboot -->
 | 
				
			||||||
 | 
					            <img  alt="Shutdown/Reboot" src="app/images/power.svg"
 | 
				
			||||||
 | 
					                id="noVNC_power_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                title="Shutdown/Reboot..." />
 | 
				
			||||||
 | 
					            <div class="noVNC_vcenter">
 | 
				
			||||||
 | 
					            <div id="noVNC_power" class="noVNC_panel">
 | 
				
			||||||
 | 
					                <div class="noVNC_heading">
 | 
				
			||||||
 | 
					                    <img src="app/images/power.svg"> Power
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <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" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Clipboard -->
 | 
				
			||||||
 | 
					            <img  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 src="app/images/clipboard.svg"> Clipboard
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <textarea id="noVNC_clipboard_text" rows=5></textarea>
 | 
				
			||||||
 | 
					                <br />
 | 
				
			||||||
 | 
					                <input id="noVNC_clipboard_clear_button" type="button"
 | 
				
			||||||
 | 
					                    value="Clear" class="noVNC_submit" />
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Toggle fullscreen -->
 | 
				
			||||||
 | 
					            <img  alt="Fullscreen" src="app/images/fullscreen.svg"
 | 
				
			||||||
 | 
					                id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden"
 | 
				
			||||||
 | 
					                title="Fullscreen" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Settings -->
 | 
				
			||||||
 | 
					            <img  alt="Settings" src="app/images/settings.svg"
 | 
				
			||||||
 | 
					                id="noVNC_settings_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                title="Settings" />
 | 
				
			||||||
 | 
					            <div class="noVNC_vcenter">
 | 
				
			||||||
 | 
					            <div id="noVNC_settings" class="noVNC_panel">
 | 
				
			||||||
 | 
					                <ul>
 | 
				
			||||||
 | 
					                    <li class="noVNC_heading">
 | 
				
			||||||
 | 
					                        <img src="app/images/settings.svg"> Settings
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_shared" type="checkbox" /> Shared Mode</label>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_view_only" type="checkbox" /> View Only</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_clipboard_up" type="checkbox" /> Clipboard Up</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_clipboard_down" type="checkbox" /> Clipboard Down</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_clipboard_seamless" type="checkbox" /> Clipboard Seamless</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_prefer_local_cursor" type="checkbox" /> Prefer Local Cursor</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_enable_webp" type="checkbox" /> Enable WebP Compression</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_enable_perf_stats" type="checkbox" /> Enable Performance Stats</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_toggle_control_panel" type="checkbox" /> Toggle Control Panel via Keystrokes</label></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label for="noVNC_setting_video_quality">Video Quality:</label>
 | 
				
			||||||
 | 
					                        <select id="noVNC_setting_video_quality" name="vncVideoQuality">
 | 
				
			||||||
 | 
					                            <option value=0>Low</option>
 | 
				
			||||||
 | 
					                            <option value=1>Medium</option>
 | 
				
			||||||
 | 
					                            <option value=2>High</option>
 | 
				
			||||||
 | 
					                        </select>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label for="noVNC_setting_idle_disconnect">Idle Timeout:</label>
 | 
				
			||||||
 | 
					                        <select id="noVNC_setting_idle_disconnect" name="vncIdleDisconnect">
 | 
				
			||||||
 | 
					                            <option value=20>20</option>
 | 
				
			||||||
 | 
					                        </select>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li><hr></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label><input id="noVNC_setting_view_clip" type="checkbox" /> Clip to Window</label>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <label for="noVNC_setting_resize">Scaling Mode:</label>
 | 
				
			||||||
 | 
					                        <select id="noVNC_setting_resize" name="vncResize">
 | 
				
			||||||
 | 
					                            <option value="off">None</option>
 | 
				
			||||||
 | 
					                            <option value="scale">Local Scaling</option>
 | 
				
			||||||
 | 
					                            <option value="remote">Remote Resizing</option>
 | 
				
			||||||
 | 
					                        </select>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    <li><hr></li>
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <div class="noVNC_expander">Advanced</div>
 | 
				
			||||||
 | 
					                        <div><ul>
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <label for="noVNC_setting_repeaterID">Repeater ID:</label>
 | 
				
			||||||
 | 
					                                <input id="noVNC_setting_repeaterID" type="input" value="" />
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <div class="noVNC_expander">WebSocket</div>
 | 
				
			||||||
 | 
					                                <div><ul>
 | 
				
			||||||
 | 
					                                    <li>
 | 
				
			||||||
 | 
					                                        <label><input id="noVNC_setting_encrypt" type="checkbox" /> Encrypt</label>
 | 
				
			||||||
 | 
					                                    </li>
 | 
				
			||||||
 | 
					                                    <li>
 | 
				
			||||||
 | 
					                                        <label for="noVNC_setting_host">Host:</label>
 | 
				
			||||||
 | 
					                                        <input id="noVNC_setting_host" />
 | 
				
			||||||
 | 
					                                    </li>
 | 
				
			||||||
 | 
					                                    <li>
 | 
				
			||||||
 | 
					                                        <label for="noVNC_setting_port">Port:</label>
 | 
				
			||||||
 | 
					                                        <input id="noVNC_setting_port" type="number" />
 | 
				
			||||||
 | 
					                                    </li>
 | 
				
			||||||
 | 
					                                    <li>
 | 
				
			||||||
 | 
					                                        <label for="noVNC_setting_path">Path:</label>
 | 
				
			||||||
 | 
					                                        <input id="noVNC_setting_path" type="input" value="websockify" />
 | 
				
			||||||
 | 
					                                    </li>
 | 
				
			||||||
 | 
					                                </ul></div>
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                            <li><hr></li>
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <label><input id="noVNC_setting_reconnect" type="checkbox" /> Automatic Reconnect</label>
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <label for="noVNC_setting_reconnect_delay">Reconnect Delay (ms):</label>
 | 
				
			||||||
 | 
					                                <input id="noVNC_setting_reconnect_delay" type="number" />
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                            <li><hr></li>
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <label><input id="noVNC_setting_show_dot" type="checkbox" /> Show Dot when No Cursor</label>
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                            <li><hr></li>
 | 
				
			||||||
 | 
					                            <!-- Logging selection dropdown -->
 | 
				
			||||||
 | 
					                            <li>
 | 
				
			||||||
 | 
					                                <label>Logging:
 | 
				
			||||||
 | 
					                                    <select id="noVNC_setting_logging" name="vncLogging">
 | 
				
			||||||
 | 
					                                    </select>
 | 
				
			||||||
 | 
					                                </label>
 | 
				
			||||||
 | 
					                            </li>
 | 
				
			||||||
 | 
					                        </ul></div>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                </ul>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Connection Controls -->
 | 
				
			||||||
 | 
					            <img  alt="Disconnect" src="app/images/disconnect.svg"
 | 
				
			||||||
 | 
					                id="noVNC_disconnect_button" class="noVNC_button"
 | 
				
			||||||
 | 
					                title="Disconnect" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div id="noVNC_control_bar_hint"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </div> <!-- End of noVNC_control_bar -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Status Dialog -->
 | 
				
			||||||
 | 
					    <div style="visibility: hidden" id="noVNC_status"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Connect button -->
 | 
				
			||||||
 | 
					    <div class="noVNC_center">
 | 
				
			||||||
 | 
					        <div id="noVNC_connect_dlg">
 | 
				
			||||||
 | 
					            <!--div class="noVNC_logo" translate="no"><span>no</span>VNC</div-->
 | 
				
			||||||
 | 
					            <div id="noVNC_connect_button"><div>
 | 
				
			||||||
 | 
					                <img src="app/images/connect.svg"> Connect
 | 
				
			||||||
 | 
					            </div></div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- Password Dialog -->
 | 
				
			||||||
 | 
					    <div class="noVNC_center noVNC_connect_layer">
 | 
				
			||||||
 | 
					    <div id="noVNC_password_dlg" class="noVNC_panel"><form>
 | 
				
			||||||
 | 
					        <ul>
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <label>Password:</label>
 | 
				
			||||||
 | 
					                <input id="noVNC_password_input" type="password" />
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <input id="noVNC_password_button" type="submit" value="Send Password" class="noVNC_submit" />
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </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" class="noVNC_submit" />
 | 
				
			||||||
 | 
					        </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"
 | 
				
			||||||
 | 
					            autocorrect="off" autocomplete="off" spellcheck="false"
 | 
				
			||||||
 | 
					            mozactionhint="Enter" 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>
 | 
				
			||||||
@ -0,0 +1,138 @@
 | 
				
			|||||||
 | 
					const path = require('path');
 | 
				
			||||||
 | 
					const { CleanWebpackPlugin } = require('clean-webpack-plugin');
 | 
				
			||||||
 | 
					const HtmlWebpackPlugin = require('html-webpack-plugin');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin');
 | 
				
			||||||
 | 
					const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 | 
				
			||||||
 | 
					// const SvgSpriteHtmlWebpackPlugin = require('svg-sprite-html-webpack');
 | 
				
			||||||
 | 
					const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    mode: "production",
 | 
				
			||||||
 | 
					    entry: {
 | 
				
			||||||
 | 
					        main: './app/ui.js',
 | 
				
			||||||
 | 
					        error_handler: './app/error-handler.js',
 | 
				
			||||||
 | 
					        promise: './vendor/promise.js',
 | 
				
			||||||
 | 
					        style: './app/styles/base.css'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    output: {
 | 
				
			||||||
 | 
					        path: path.resolve(__dirname, 'dist'),
 | 
				
			||||||
 | 
					        filename: '[name].bundle.js'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    module: {
 | 
				
			||||||
 | 
					        rules: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                test: /\.js$/,
 | 
				
			||||||
 | 
					                exclude: /(node_modules)/,
 | 
				
			||||||
 | 
					                use: {
 | 
				
			||||||
 | 
					                    loader: 'babel-loader',
 | 
				
			||||||
 | 
					                    options: {
 | 
				
			||||||
 | 
					                        presets: ['@babel/preset-env']
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                test: /\.(sa|sc|c)ss$/,
 | 
				
			||||||
 | 
					                use: [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        loader: MiniCssExtractPlugin.loader
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        loader: "css-loader",
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    // {
 | 
				
			||||||
 | 
					                    //     loader: "postcss-loader"
 | 
				
			||||||
 | 
					                    // },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        loader: "sass-loader",
 | 
				
			||||||
 | 
					                        options: {
 | 
				
			||||||
 | 
					                            implementation: require("sass")
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Now we apply rule for images
 | 
				
			||||||
 | 
					                test: /\.(png|jpe?g|gif|svg)$/,
 | 
				
			||||||
 | 
					                use: [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // Using file-loader for these files
 | 
				
			||||||
 | 
					                        loader: "file-loader",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        // In options we can set different things like format
 | 
				
			||||||
 | 
					                        // and directory to save
 | 
				
			||||||
 | 
					                        options: {
 | 
				
			||||||
 | 
					                            outputPath: 'images'
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Apply rule for fonts files
 | 
				
			||||||
 | 
					                test: /\.(woff|woff2|ttf|otf|eot)$/,
 | 
				
			||||||
 | 
					                use: [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // Using file-loader too
 | 
				
			||||||
 | 
					                        loader: "file-loader",
 | 
				
			||||||
 | 
					                        options: {
 | 
				
			||||||
 | 
					                            outputPath: 'fonts'
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            // {
 | 
				
			||||||
 | 
					            //     test: /\.svg$/,
 | 
				
			||||||
 | 
					            //     exclude: /node_modules/,
 | 
				
			||||||
 | 
					            //     use: SvgSpriteHtmlWebpackPlugin.getLoader(),
 | 
				
			||||||
 | 
					            // }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    optimization: {
 | 
				
			||||||
 | 
					        minimize: true,
 | 
				
			||||||
 | 
					        minimizer: [
 | 
				
			||||||
 | 
					            new CssMinimizerPlugin(),
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        runtimeChunk: 'single',
 | 
				
			||||||
 | 
					        splitChunks: {
 | 
				
			||||||
 | 
					            chunks: 'all',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    plugins: [
 | 
				
			||||||
 | 
					        new CleanWebpackPlugin(),
 | 
				
			||||||
 | 
					        new HtmlWebpackPlugin({
 | 
				
			||||||
 | 
					            filename: '../index.html',
 | 
				
			||||||
 | 
					            template: 'load.html',
 | 
				
			||||||
 | 
					            minify: {
 | 
				
			||||||
 | 
					                html5: true,
 | 
				
			||||||
 | 
					                collapseWhitespace: true,
 | 
				
			||||||
 | 
					                minifyCSS: true,
 | 
				
			||||||
 | 
					                minifyJS: true,
 | 
				
			||||||
 | 
					                minifyURLs: false,
 | 
				
			||||||
 | 
					                removeAttributeQuotes: true,
 | 
				
			||||||
 | 
					                removeComments: true, // false for Vue SSR to find app placeholder
 | 
				
			||||||
 | 
					                removeEmptyAttributes: true,
 | 
				
			||||||
 | 
					                removeOptionalTags: true,
 | 
				
			||||||
 | 
					                removeRedundantAttributes: true,
 | 
				
			||||||
 | 
					                removeScriptTypeAttributes: true,
 | 
				
			||||||
 | 
					                removeStyleLinkTypeAttributese: true,
 | 
				
			||||||
 | 
					                useShortDoctype: true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }),
 | 
				
			||||||
 | 
					        // new SvgSpriteHtmlWebpackPlugin({
 | 
				
			||||||
 | 
					        //     append: true,
 | 
				
			||||||
 | 
					        //     includeFiles: [
 | 
				
			||||||
 | 
					        //         'app/images/*.svg',
 | 
				
			||||||
 | 
					        //     ],
 | 
				
			||||||
 | 
					        //     generateSymbolId: function(svgFilePath, svgHash, svgContent) {
 | 
				
			||||||
 | 
					        //         return svgHash.toString();
 | 
				
			||||||
 | 
					        //     },
 | 
				
			||||||
 | 
					        // }),
 | 
				
			||||||
 | 
					        new HtmlWebpackInlineSVGPlugin({
 | 
				
			||||||
 | 
					            inlineAll: true,
 | 
				
			||||||
 | 
					            runPreEmit: true,
 | 
				
			||||||
 | 
					        }),
 | 
				
			||||||
 | 
					        new MiniCssExtractPlugin({
 | 
				
			||||||
 | 
					            filename: "[name].bundle.css"
 | 
				
			||||||
 | 
					        }),
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue