]> git.proxmox.com Git - novnc-pve.git/commitdiff
add html template for pve
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 13 Jun 2014 09:33:27 +0000 (11:33 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 13 Jun 2014 09:33:27 +0000 (11:33 +0200)
This is patch [PATCH 2/7] add novnc html template

Created by Stefan Priebe for pve-manager.

Makefile
debian/install
vnc_pve.html [new file with mode: 0644]

index 486853528461fe04af6fec9bf0af2d649ed4ebd7..c80731be3e0ee6b93b1ec5109a0c34c8e9e37a84 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,7 @@ deb ${DEB}: ${TARSRC}
        tar xf ${NOVNCSRC}
        mv ${NOVNCDIR}/debian ${NOVNCDIR}/debian.org
        cp -a debian ${NOVNCDIR}/debian
+       cp vnc_pve.html ${NOVNCDIR}
        # fix file permissions
        chmod 0644 ${NOVNCDIR}/include/jsunzip.js
        echo "git clone git://git.proxmox.com/git/novnc-pve.git\\ngit checkout ${GITVERSION}" > ${NOVNCDIR}/debian/SOURCE
index 3e2411249c0ec9a96cb90f50a3f63fde64f06fd6..2ab39bf7f45bb4789658f58a185183b2893a86b5 100644 (file)
@@ -1,5 +1,4 @@
-vnc.html               /usr/share/novnc-pve
-vnc_auto.html          /usr/share/novnc-pve
+vnc_pve.html           /usr/share/novnc-pve
 utils/launch.sh        /usr/share/novnc-pve/utils
 utils/websocket.py     /usr/share/novnc-pve/utils
 utils/websockify       /usr/share/novnc-pve/utils
diff --git a/vnc_pve.html b/vnc_pve.html
new file mode 100644 (file)
index 0000000..99aab80
--- /dev/null
@@ -0,0 +1,198 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>noVNC</title>
+
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+    <!-- 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" />
+    <!-- App Start Icon  -->
+    <link rel="apple-touch-startup-image" href="images/screen_320x460.png" />
+    <!-- For iOS devices set the icon to use if user bookmarks app on their homescreen -->
+    <link rel="apple-touch-icon" href="images/screen_57x57.png">
+
+    <!-- Stylesheets -->
+    <link rel="stylesheet" href="include/base.css" title="plain">
+
+    <script src="include/util.js"></script>
+</head>
+
+<body style="margin: 0px;">
+    <div id="noVNC_screen">
+            <div id="noVNC_status_bar" class="noVNC_status_bar" style="margin-top: 0px; visibility: hidden; position: absolute;">
+                <table border=0 width="100%"><tr>
+                    <td><div id="noVNC_status" style="position: relative; height: auto;">
+                        Loading
+                    </div></td>
+                    <td width="1%"><div id="noVNC_buttons">
+                        <input type=button value="Send CtrlAltDel"
+                            id="sendCtrlAltDelButton">
+                        <span id="noVNC_xvp_buttons">
+                        <input type=button value="Shutdown"
+                            id="xvpShutdownButton">
+                        <input type=button value="Reboot"
+                            id="xvpRebootButton">
+                        <input type=button value="Reset"
+                            id="xvpResetButton">
+                        </span>
+                            </div>
+               </td>
+                </tr></table>
+            </div>
+            <canvas id="noVNC_canvas" width="640px" height="20px">
+                Canvas not supported.
+            </canvas>
+        </div>
+
+        <script>
+        /*jslint white: false */
+        /*global window, $, Util, RFB, */
+        "use strict";
+
+        // Load supporting scripts
+        Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js",
+                           "keysymdef.js", "keyboard.js", "input.js", "display.js",
+                           "jsunzip.js", "rfb.js"]);
+
+        var rfb;
+
+        function passwordRequired(rfb) {
+            var msg;
+            msg = '<form onsubmit="return setPassword();"';
+            msg += '  style="margin-bottom: 0px">';
+            msg += 'Password Required: ';
+            msg += '<input type=password size=10 id="password_input" class="noVNC_status">';
+            msg += '<\/form>';
+            $D('noVNC_status_bar').setAttribute("class", "noVNC_status_warn");
+            $D('noVNC_status').innerHTML = msg;
+        }
+        function setPassword() {
+            rfb.sendPassword($D('password_input').value);
+            return false;
+        }
+        function sendCtrlAltDel() {
+            rfb.sendCtrlAltDel();
+            return false;
+        }
+        function xvpShutdown() {
+            rfb.xvpShutdown();
+            return false;
+        }
+        function xvpReboot() {
+            rfb.xvpReboot();
+            return false;
+        }
+        function xvpReset() {
+            rfb.xvpReset();
+            return false;
+        }
+        function updateState(rfb, state, oldstate, msg) {
+            var s, sb, cad, level;
+            s = $D('noVNC_status');
+            sb = $D('noVNC_status_bar');
+            cad = $D('sendCtrlAltDelButton');
+            switch (state) {
+                case 'failed':       level = "error";  break;
+                case 'fatal':        level = "error";  break;
+                case 'normal':       level = "normal"; break;
+                case 'disconnected': level = "normal"; break;
+                case 'loaded':       level = "normal"; break;
+                default:             level = "warn";   break;
+            }
+
+            if (state === "normal") {
+                cad.disabled = false;
+            } else {
+                cad.disabled = true;
+                xvpInit(0);
+            }
+
+            if (typeof(msg) !== 'undefined') {
+                sb.setAttribute("class", "noVNC_status_" + level);
+                s.innerHTML = msg;
+            }
+        }
+
+        function xvpInit(ver) {
+            var xvpbuttons;
+            xvpbuttons = $D('noVNC_xvp_buttons');
+            if (ver >= 1) {
+                xvpbuttons.style.display = 'inline';
+            } else {
+                xvpbuttons.style.display = 'none';
+            }
+        }
+
+        window.onscriptsload = function () {
+            var host, port, password, path, token;
+
+            $D('sendCtrlAltDelButton').style.display = "inline";
+            $D('sendCtrlAltDelButton').onclick = sendCtrlAltDel;
+            $D('xvpShutdownButton').onclick = xvpShutdown;
+            $D('xvpRebootButton').onclick = xvpReboot;
+            $D('xvpResetButton').onclick = xvpReset;
+
+            WebUtil.init_logging(WebUtil.getQueryVar('logging', 'warn'));
+            document.title = unescape(WebUtil.getQueryVar('title', 'noVNC'));
+            // By default, use the host and port of server that served this file
+            host = WebUtil.getQueryVar('host', window.location.hostname);
+            port = WebUtil.getQueryVar('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;
+                }
+            }
+
+            // If a token variable is passed in, set the parameter in a cookie.
+            // This is used by nova-novncproxy.
+            token = WebUtil.getQueryVar('token', null);
+            if (token) {
+                WebUtil.createCookie('token', token, 1)
+            }
+
+            password = WebUtil.getQueryVar('password', '');
+            path = WebUtil.getQueryVar('path', 'websockify');
+
+            if ((!host) || (!port)) {
+                updateState('failed',
+                    "Must specify host and port in URL");
+                return;
+            }
+
+            rfb = new RFB({'target':       $D('noVNC_canvas'),
+                           'encrypt':      WebUtil.getQueryVar('encrypt',
+                                    (window.location.protocol === "https:")),
+                           'repeaterID':   WebUtil.getQueryVar('repeaterID', ''),
+                           'true_color':   WebUtil.getQueryVar('true_color', true),
+                           'local_cursor': WebUtil.getQueryVar('cursor', true),
+                           'shared':       WebUtil.getQueryVar('shared', true),
+                           'view_only':    WebUtil.getQueryVar('view_only', false),
+                           'updateState':  updateState,
+                           'onXvpInit':    xvpInit,
+                           'onPasswordRequired':  passwordRequired});
+            rfb.connect(host, port, password, path);
+           
+           $D("noVNC_screen").onmouseover = function(e) {
+               window.focus();
+           };
+
+//        .mouseout(function() {
+//            rfb.get_keyboard().set_focused(false);
+//        }).mouseover(function() {
+//            rfb.get_keyboard().set_focused(true);
+//        });
+
+        };
+        </script>
+    </body>
+</html>