rfb: Allow port to be optionally appended to URI
Supports server configurations that might prefer wss:// connections on the default port, then proxies them through the web server to the VNC server. This proxy configuration is helpful on servers using self-signed certificates. Accessing the https://host/vnc_auto.html page and adding an exception for that host is sufficient to also satisfy the wss://host/ request, unlike requests to wss://host:port/ which may require an extra certificate exception.
This commit is contained in:
parent
38f3d92c5e
commit
1a50f6809f
11
core/rfb.js
11
core/rfb.js
|
@ -273,9 +273,9 @@
|
||||||
this._rfb_password = (password !== undefined) ? password : "";
|
this._rfb_password = (password !== undefined) ? password : "";
|
||||||
this._rfb_path = (path !== undefined) ? path : "";
|
this._rfb_path = (path !== undefined) ? path : "";
|
||||||
|
|
||||||
if (!this._rfb_host || !this._rfb_port) {
|
if (!this._rfb_host) {
|
||||||
return this._fail(
|
return this._fail(
|
||||||
_("Must set host and port"));
|
_("Must set host"));
|
||||||
}
|
}
|
||||||
|
|
||||||
this._rfb_init_state = '';
|
this._rfb_init_state = '';
|
||||||
|
@ -379,7 +379,12 @@
|
||||||
uri = this._encrypt ? 'wss' : 'ws';
|
uri = this._encrypt ? 'wss' : 'ws';
|
||||||
}
|
}
|
||||||
|
|
||||||
uri += '://' + this._rfb_host + ':' + this._rfb_port + '/' + this._rfb_path;
|
uri += '://' + this._rfb_host;
|
||||||
|
if(this._rfb_port) {
|
||||||
|
uri += ':' + this._rfb_port;
|
||||||
|
}
|
||||||
|
uri += '/' + this._rfb_path;
|
||||||
|
|
||||||
Util.Info("connecting to " + uri);
|
Util.Info("connecting to " + uri);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -81,15 +81,6 @@ describe('Remote Frame Buffer Protocol Client', function() {
|
||||||
expect(client._updateConnectionState).to.not.have.been.called;
|
expect(client._updateConnectionState).to.not.have.been.called;
|
||||||
expect(client._rfb_connection_state).to.equal('');
|
expect(client._rfb_connection_state).to.equal('');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not try to connect if we are missing a port', function () {
|
|
||||||
client._fail = sinon.spy();
|
|
||||||
client._rfb_connection_state = '';
|
|
||||||
client.connect('abc');
|
|
||||||
expect(client._fail).to.have.been.calledOnce;
|
|
||||||
expect(client._updateConnectionState).to.not.have.been.called;
|
|
||||||
expect(client._rfb_connection_state).to.equal('');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#disconnect', function () {
|
describe('#disconnect', function () {
|
||||||
|
@ -487,6 +478,13 @@ describe('Remote Frame Buffer Protocol Client', function() {
|
||||||
client._updateConnectionState('connecting');
|
client._updateConnectionState('connecting');
|
||||||
expect(client._sock.open).to.have.been.calledWith('ws://HOST:8675/PATH');
|
expect(client._sock.open).to.have.been.calledWith('ws://HOST:8675/PATH');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not include a port in the uri if not specified in connect', function () {
|
||||||
|
sinon.spy(client._sock, 'open');
|
||||||
|
client.set_encrypt(true);
|
||||||
|
client.connect('HOST', undefined)
|
||||||
|
expect(client._sock.open).to.have.been.calledWith('wss://HOST/');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('disconnecting', function () {
|
describe('disconnecting', function () {
|
||||||
|
|
Loading…
Reference in New Issue