]> git.proxmox.com Git - mirror_novnc.git/blobdiff - vnc_auto.html
Change server example
[mirror_novnc.git] / vnc_auto.html
index bbf94d7b4c2247664019c54c1da744e903b069da..e4fc46769d818cf6be2a9fba3dd80cd36cabaf82 100644 (file)
     <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" />
+    <link rel="apple-touch-startup-image" href="app/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">
+    <link rel="apple-touch-icon" href="app/images/screen_57x57.png">
     <!--
-    <link rel="apple-touch-icon-precomposed" href="images/screen_57x57.png" />
+    <link rel="apple-touch-icon-precomposed" href="app/images/screen_57x57.png" />
     -->
 
 
     <!-- Stylesheets -->
-    <link rel="stylesheet" href="include/base.css" title="plain">
+    <link rel="stylesheet" href="app/styles/auto.css">
 
      <!--
     <script type='text/javascript'
         src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
     -->
-        <script src="include/util.js"></script>
+        <script src="core/util.js"></script>
+        <script src="app/webutil.js"></script>
 </head>
 
 <body style="margin: 0px;">
-    <div id="noVNC_screen">
+    <div id="noVNC_container">
             <div id="noVNC_status_bar" class="noVNC_status_bar" style="margin-top: 0px;">
                 <table border=0 width="100%"><tr>
                     <td><div id="noVNC_status" style="position: relative; height: auto;">
         "use strict";
 
         // Load supporting scripts
-        Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js",
-                           "keysymdef.js", "keyboard.js", "input.js", "display.js",
-                           "inflator.js", "rfb.js", "keysym.js"]);
+        WebUtil.load_scripts({
+            'core': ["base64.js", "websock.js", "des.js", "input/keysymdef.js",
+                     "input/xtscancodes.js", "input/util.js", "input/devices.js",
+                     "display.js", "inflator.js", "rfb.js", "input/keysym.js"]});
 
         var rfb;
         var resizeTimeout;
+        var desktopName;
 
 
         function UIresize() {
             if (WebUtil.getConfigVar('resize', false)) {
                 var innerW = window.innerWidth;
                 var innerH = window.innerHeight;
-                var controlbarH = $D('noVNC_status_bar').offsetHeight;
-                var padding = 5;
+                var controlbarH = document.getElementById('noVNC_status_bar').offsetHeight;
                 if (innerW !== undefined && innerH !== undefined)
-                    rfb.requestDesktopSize(innerW, innerH - controlbarH - padding);
+                    rfb.requestDesktopSize(innerW, innerH - controlbarH);
             }
         }
         function FBUComplete(rfb, fbu) {
             UIresize();
             rfb.set_onFBUComplete(function() { });
         }
-        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 updateDesktopName(rfb, name) {
+            desktopName = name;
+        }
+        function passwordRequired(rfb, msg) {
+            if (typeof msg === 'undefined') {
+                msg = 'Password Required: ';
+            }
+            var html;
+            html = '<form onsubmit="return setPassword();"';
+            html += '  style="margin-bottom: 0px">';
+            html += '<label></label>'
+            html += '<input type=password size=10 id="password_input" class="noVNC_status">';
+            html += '<\/form>';
+
+            // bypass status() because it sets text content
+            document.getElementById('noVNC_status_bar').setAttribute("class", "noVNC_status_warn");
+            document.getElementById('noVNC_status').innerHTML = html;
+            document.getElementById('noVNC_status').querySelector('label').textContent = msg;
         }
         function setPassword() {
-            rfb.sendPassword($D('password_input').value);
+            rfb.sendPassword(document.getElementById('password_input').value);
             return false;
         }
         function sendCtrlAltDel() {
             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');
+        function status(text, level) {
+            switch (level) {
+                case 'normal':
+                case 'warn':
+                case 'error':
+                    break;
+                default:
+                    level = "warn";
+            }
+            document.getElementById('noVNC_status_bar').setAttribute("class", "noVNC_status_" + level);
+            document.getElementById('noVNC_status').textContent = text;
+        }
+        function updateState(rfb, state, oldstate) {
+            var cad = document.getElementById('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;
+                case 'connecting':
+                    status("Connecting", "normal");
+                    break;
+                case 'connected':
+                    if (rfb && rfb.get_encrypt()) {
+                        status("Connected (encrypted) to " +
+                               desktopName, "normal");
+                    } else {
+                        status("Connected (unencrypted) to " +
+                               desktopName, "normal");
+                    }
+                    break;
+                case 'disconnecting':
+                    status("Disconnecting", "normal");
+                    break;
+                case 'disconnected':
+                    status("Disconnected", "normal");
+                    break;
+                default:
+                    status(state, "warn");
+                    break;
             }
 
-            if (state === "normal") {
+            if (state === 'connected') {
                 cad.disabled = false;
             } else {
                 cad.disabled = true;
                 xvpInit(0);
             }
 
-            if (typeof(msg) !== 'undefined') {
-                sb.setAttribute("class", "noVNC_status_" + level);
-                s.innerHTML = msg;
+        }
+        function disconnected(rfb, reason) {
+            if (typeof(reason) !== 'undefined') {
+                status(reason, "error");
             }
         }
+        function notification(rfb, msg, level, options) {
+            status(msg, level);
+        }
 
         window.onresize = function () {
             // When the window has been resized, wait until the size remains
 
         function xvpInit(ver) {
             var xvpbuttons;
-            xvpbuttons = $D('noVNC_xvp_buttons');
+            xvpbuttons = document.getElementById('noVNC_xvp_buttons');
             if (ver >= 1) {
                 xvpbuttons.style.display = 'inline';
             } else {
         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;
+            document.getElementById('sendCtrlAltDelButton').style.display = "inline";
+            document.getElementById('sendCtrlAltDelButton').onclick = sendCtrlAltDel;
+            document.getElementById('xvpShutdownButton').onclick = xvpShutdown;
+            document.getElementById('xvpRebootButton').onclick = xvpReboot;
+            document.getElementById('xvpResetButton').onclick = xvpReset;
 
             WebUtil.init_logging(WebUtil.getConfigVar('logging', 'warn'));
             document.title = unescape(WebUtil.getConfigVar('title', 'noVNC'));
             }
 
             if ((!host) || (!port)) {
-                updateState(null, 'fatal', null, 'Must specify host and port in URL');
+                status('Must specify host and port in URL', 'error');
                 return;
             }
 
             try {
-                rfb = new RFB({'target':       $D('noVNC_canvas'),
+                rfb = new RFB({'target':       document.getElementById('noVNC_canvas'),
                                'encrypt':      WebUtil.getConfigVar('encrypt',
                                         (window.location.protocol === "https:")),
                                'repeaterID':   WebUtil.getConfigVar('repeaterID', ''),
                                'local_cursor': WebUtil.getConfigVar('cursor', true),
                                'shared':       WebUtil.getConfigVar('shared', true),
                                'view_only':    WebUtil.getConfigVar('view_only', false),
+                               'onNotification':  notification,
                                'onUpdateState':  updateState,
+                               'onDisconnected': disconnected,
                                'onXvpInit':    xvpInit,
                                'onPasswordRequired':  passwordRequired,
-                               'onFBUComplete': FBUComplete});
+                               'onFBUComplete': FBUComplete,
+                               'onDesktopName': updateDesktopName});
             } catch (exc) {
-                updateState(null, 'fatal', null, 'Unable to create RFB client -- ' + exc);
+                status('Unable to create RFB client -- ' + exc, 'error');
                 return; // don't continue trying to connect
             }