summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris "Koying" Browet <cbro@semperpax.com>2019-08-03 09:11:25 +0200
committerSamuel Mannehed <samuel@cendio.se>2019-12-05 15:46:31 +0100
commit1c9826140a50f685dd255655dac83a3f571048f0 (patch)
tree9efea7e7ab5b3e988ca45882daa5e487c279bf81
parent5b453ed4a8593d68cc4e535ef6b5614c59ff4a4d (diff)
downloadnovnc-1c9826140a50f685dd255655dac83a3f571048f0.tar.gz
Add support for Unix Tight auth
-rw-r--r--core/rfb.js26
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 + ")");