Преглед на файлове

Fixed vnc_perf.html

This commit updates vnc_perf.html so that it works with the current
version of noVNC.  It also introduces a utility to convert noVNC session
recordings recorded in base64-mode to binary-mode recordings, since noVNC
no longer supports base64-mode.

Fixes #479.
Solly Ross преди 9 години
родител
ревизия
4ee55e0126
променени са 3 файла, в които са добавени 32 реда и са изтрити 11 реда
  1. 14 10
      tests/vnc_perf.html
  2. 1 1
      tests/vnc_playback.html
  3. 17 0
      utils/b64-to-binary.pl

+ 14 - 10
tests/vnc_perf.html

@@ -38,17 +38,23 @@
     <script type="text/javascript">
         var INCLUDE_URI= "../include/";
         // TODO: Data file should override
-        var VNC_frame_encoding = "base64";
+        var VNC_frame_encoding = "binary";
     </script>
     <script src="../include/util.js"></script>
-    <script src="../include/playback.js"></script>
-    <script src="../data/multi.js"></script>
+    <script src="../include/webutil.js"></script>
 
     <script>
-        // Load supporting scripts
-        Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js",
-                           "keysymdef.js", "keyboard.js", "input.js", "display.js",
-                           "rfb.js"]);
+        var fname = WebUtil.getQueryVar('data', null);
+        if (fname) {
+            msg("Loading " + fname);
+
+            // Load supporting scripts
+            Util.load_scripts(["base64.js", "websock.js", "des.js", "keysym.js",
+                            "keysymdef.js", "keyboard.js", "input.js", "display.js",
+                            "rfb.js", "playback.js", "inflator.js", fname]);
+        } else {
+            msg("Must specifiy data=FOO.js in query string.");
+        }
 
         var start_time, VNC_frame_data, pass, passes, encIdx,
             encOrder = ['raw', 'rre', 'hextile', 'tightpng', 'copyrect'],
@@ -201,9 +207,7 @@
                 enc = encOrder[i];
                 dbgmsg("  " + enc + ": " + VNC_frame_data_multi[enc].length);
             }
-            rfb = new RFB({'target': $D('VNC_canvas'),
-                           'onUpdateState': updateState});
-            rfb.testMode(send_array, VNC_frame_encoding);
+            $D('startButton').disabled = false;
         }
     </script>
 </html>

+ 1 - 1
tests/vnc_playback.html

@@ -40,7 +40,7 @@
     <script type="text/javascript">
         var INCLUDE_URI= "../include/";
         // TODO: Data file should override
-        var VNC_frame_encoding = "base64";
+        var VNC_frame_encoding = "binary";
     </script>
     <script src="../include/util.js"></script>
     <script src="../include/webutil.js"></script>

+ 17 - 0
utils/b64-to-binary.pl

@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use MIME::Base64;
+
+for (<>) {
+    unless (/^'([{}])(\d+)\1(.+?)',$/) {
+        print;
+        next;
+    }
+
+    my ($dir, $amt, $b64) = ($1, $2, $3);
+
+    my $decoded = MIME::Base64::decode($b64) or die "Could not base64-decode line `$_`";
+
+    my $decoded_escaped = join "", map { "\\x$_" } unpack("(H2)*", $decoded);
+
+    print "'${dir}${amt}${dir}${decoded_escaped}',\n";
+}