summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/webutil.js6
-rw-r--r--core/websock.js2
-rw-r--r--tests/test.webutil.js25
-rw-r--r--vnc_lite.html11
4 files changed, 23 insertions, 21 deletions
diff --git a/app/webutil.js b/app/webutil.js
index 084c69f..b94f035 100644
--- a/app/webutil.js
+++ b/app/webutil.js
@@ -25,14 +25,14 @@ export function initLogging(level) {
//
// For privacy (Using a hastag #, the parameters will not be sent to the server)
// the url can be requested in the following way:
-// https://www.example.com#myqueryparam=myvalue&password=secreatvalue
+// https://www.example.com#myqueryparam=myvalue&password=secretvalue
//
// Even Mixing public and non public parameters will work:
-// https://www.example.com?nonsecretparam=example.com#password=secreatvalue
+// https://www.example.com?nonsecretparam=example.com#password=secretvalue
export function getQueryVar(name, defVal) {
"use strict";
const re = new RegExp('.*[?&]' + name + '=([^&#]*)'),
- match = ''.concat(document.location.href, window.location.hash).match(re);
+ match = document.location.href.match(re);
if (typeof defVal === 'undefined') { defVal = null; }
if (match) {
diff --git a/core/websock.js b/core/websock.js
index 37b33fc..e07e31b 100644
--- a/core/websock.js
+++ b/core/websock.js
@@ -293,7 +293,7 @@ export default class Websock {
// e.g. compacting.
// The function also expands the receive que if needed, and for
// performance reasons we combine these two actions to avoid
- // unneccessary copying.
+ // unnecessary copying.
_expandCompactRQ(minFit) {
// if we're using less than 1/8th of the buffer even with the incoming bytes, compact in place
// instead of resizing
diff --git a/tests/test.webutil.js b/tests/test.webutil.js
index 76aa763..6f460a3 100644
--- a/tests/test.webutil.js
+++ b/tests/test.webutil.js
@@ -8,39 +8,48 @@ describe('WebUtil', function () {
"use strict";
describe('config variables', function () {
+ let origState, origHref;
+ beforeEach(function () {
+ origState = history.state;
+ origHref = location.href;
+ });
+ afterEach(function () {
+ history.replaceState(origState, '', origHref);
+ });
+
it('should parse query string variables', function () {
// history.pushState() will not cause the browser to attempt loading
// the URL, this is exactly what we want here for the tests.
- history.pushState({}, '', "test?myvar=myval");
+ history.replaceState({}, '', "test?myvar=myval");
expect(WebUtil.getConfigVar("myvar")).to.be.equal("myval");
});
it('should return default value when no query match', function () {
- history.pushState({}, '', "test?myvar=myval");
+ history.replaceState({}, '', "test?myvar=myval");
expect(WebUtil.getConfigVar("other", "def")).to.be.equal("def");
});
it('should handle no query match and no default value', function () {
- history.pushState({}, '', "test?myvar=myval");
+ history.replaceState({}, '', "test?myvar=myval");
expect(WebUtil.getConfigVar("other")).to.be.equal(null);
});
it('should parse fragment variables', function () {
- history.pushState({}, '', "test#myvar=myval");
+ history.replaceState({}, '', "test#myvar=myval");
expect(WebUtil.getConfigVar("myvar")).to.be.equal("myval");
});
it('should return default value when no fragment match', function () {
- history.pushState({}, '', "test#myvar=myval");
+ history.replaceState({}, '', "test#myvar=myval");
expect(WebUtil.getConfigVar("other", "def")).to.be.equal("def");
});
it('should handle no fragment match and no default value', function () {
- history.pushState({}, '', "test#myvar=myval");
+ history.replaceState({}, '', "test#myvar=myval");
expect(WebUtil.getConfigVar("other")).to.be.equal(null);
});
it('should handle both query and fragment', function () {
- history.pushState({}, '', "test?myquery=1#myhash=2");
+ history.replaceState({}, '', "test?myquery=1#myhash=2");
expect(WebUtil.getConfigVar("myquery")).to.be.equal("1");
expect(WebUtil.getConfigVar("myhash")).to.be.equal("2");
});
it('should prioritize fragment if both provide same var', function () {
- history.pushState({}, '', "test?myvar=1#myvar=2");
+ history.replaceState({}, '', "test?myvar=1#myvar=2");
expect(WebUtil.getConfigVar("myvar")).to.be.equal("2");
});
});
diff --git a/vnc_lite.html b/vnc_lite.html
index e725a2d..eaf75f8 100644
--- a/vnc_lite.html
+++ b/vnc_lite.html
@@ -107,20 +107,13 @@
// query string. If the variable isn't defined in the URL
// it returns the default value instead.
function readQueryVariable(name, defaultValue) {
- // A URL with a query parameter can look like this (But will most probably get logged on the http server):
+ // A URL with a query parameter can look like this:
// https://www.example.com?myqueryparam=myvalue
//
- // For privacy (Using a hastag #, the parameters will not be sent to the server)
- // the url can be requested in the following way:
- // https://www.example.com#myqueryparam=myvalue&password=secreatvalue
- //
- // Even Mixing public and non public parameters will work:
- // https://www.example.com?nonsecretparam=example.com#password=secreatvalue
- //
// Note that we use location.href instead of location.search
// because Firefox < 53 has a bug w.r.t location.search
const re = new RegExp('.*[?&]' + name + '=([^&#]*)'),
- match = ''.concat(document.location.href, window.location.hash).match(re);
+ match = document.location.href.match(re);
if (match) {
// We have to decode the URL since want the cleartext value