diff options
author | Chris "Koying" Browet <cbro@semperpax.com> | 2019-08-03 09:11:25 +0200 |
---|---|---|
committer | Samuel Mannehed <samuel@cendio.se> | 2019-12-05 15:46:31 +0100 |
commit | 1c9826140a50f685dd255655dac83a3f571048f0 (patch) | |
tree | 9efea7e7ab5b3e988ca45882daa5e487c279bf81 | |
parent | 5b453ed4a8593d68cc4e535ef6b5614c59ff4a4d (diff) | |
download | novnc-1c9826140a50f685dd255655dac83a3f571048f0.tar.gz |
Add support for Unix Tight auth
-rw-r--r-- | core/rfb.js | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/core/rfb.js b/core/rfb.js index 9ef369d..6f02e4d 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -976,6 +976,23 @@ export default class RFB extends EventTargetMixin { return true; } + _negotiate_tight_unix_auth() { + if (this._rfb_credentials.username === undefined || + this._rfb_credentials.password === undefined) { + this.dispatchEvent(new CustomEvent( + "credentialsrequired", + { detail: { types: ["username", "password"] } })); + return false; + } + + this._sock.send([0, 0, 0, this._rfb_credentials.username.length]); + this._sock.send([0, 0, 0, this._rfb_credentials.password.length]); + this._sock.send_string(this._rfb_credentials.username); + this._sock.send_string(this._rfb_credentials.password); + this._rfb_init_state = "SecurityResult"; + return true; + } + _negotiate_tight_tunnels(numTunnels) { const clientSupportedTunnelTypes = { 0: { vendor: 'TGHT', signature: 'NOTUNNEL' } @@ -1043,7 +1060,8 @@ export default class RFB extends EventTargetMixin { const clientSupportedTypes = { 'STDVNOAUTH__': 1, - 'STDVVNCAUTH_': 2 + 'STDVVNCAUTH_': 2, + 'TGHTULGNAUTH': 129 }; const serverSupportedTypes = []; @@ -1068,6 +1086,9 @@ export default class RFB extends EventTargetMixin { case 'STDVVNCAUTH_': // VNC auth this._rfb_auth_scheme = 2; return this._init_msg(); + case 'TGHTULGNAUTH': // UNIX auth + this._rfb_auth_scheme = 129; + return this._init_msg(); default: return this._fail("Unsupported tiny auth scheme " + "(scheme: " + authType + ")"); @@ -1097,6 +1118,9 @@ export default class RFB extends EventTargetMixin { case 16: // TightVNC Security Type return this._negotiate_tight_auth(); + case 129: // TightVNC UNIX Security Type + return this._negotiate_tight_unix_auth(); + default: return this._fail("Unsupported auth scheme (scheme: " + this._rfb_auth_scheme + ")"); |