Skip to content

Commit

Permalink
add keyboard layout and fix bug on SSL errors
Browse files Browse the repository at this point in the history
  • Loading branch information
citronneur committed Jul 7, 2015
1 parent 8278bf4 commit 8f4d47b
Show file tree
Hide file tree
Showing 10 changed files with 440 additions and 328 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## 0.2.0 - 20150707
* Add this changelog
* Configure keyboard layout for client side of protocol
* Handle TLS error
* Add log level
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,17 @@ var client = rdp.createClient({
enablePerf : true,
autoLogin : true,
decompress : false,
screen : { width : 800, height : 600 }
screen : { width : 800, height : 600 },
locale : 'en',
logLevel : 'INFO'
}).on('connect', function () {
}).on('close', function() {
}).on('bitmap', function(bitmap) {
}).on('error', function(err) {
}).connect('XXX.XXX.XXX.XXX', 3389);
```

Client parameters
Client parameters :

* domain {string} Microsoft domain
* userName {string} Username
Expand All @@ -52,8 +54,16 @@ Client parameters
* autoLogin {boolean} start session if login informations are good
* decompress {boolean} use RLE algorrithm for decompress bitmap
* screen {object} screen size
** width {integer} width of screen
** height {integer} height of screen
- width {integer} width of screen
- height {integer} height of screen
* locale {string} keyboard layout
- en qwerty layout
- fr azerty layout
* logLevel {string} console log level of library
- DEBUG
- INFO
- WARN
- ERROR

Use decompress parameter may decrease performance.

Expand Down
2 changes: 1 addition & 1 deletion bin/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
var rdp = require("../lib");


rdp.createClient({ domain : 'siradel', userName : 'speyrefitte', decompress : true}).connect('54.187.36.238', 3389);
rdp.createClient({ domain : 'siradel', userName : 'speyrefitte', decompress : false, logLevel : 'INFO'}).connect('172.16.1.62', 3389);
61 changes: 31 additions & 30 deletions lib/core/layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ var events = require('events');
*/
function BufferLayer(socket) {
//for ssl connection
this.cleartext = null;
this.securePair = null;
this.socket = socket;

var self = this;
Expand Down Expand Up @@ -100,8 +100,8 @@ BufferLayer.prototype.recv = function(data) {
BufferLayer.prototype.send = function(data) {
var s = new type.Stream(data.size());
data.write(s);
if(this.cleartext) {
this.cleartext.write(s.buffer);
if(this.securePair) {
this.securePair.cleartext.write(s.buffer);
}
else {
this.socket.write(s.buffer);
Expand All @@ -122,26 +122,26 @@ BufferLayer.prototype.expect = function(expectedSize) {
* @param callback {func} when connection is done
*/
BufferLayer.prototype.startTLS = function(callback) {
options = {
var options = {
socket : this.socket,
pair : tls.createSecurePair(crypto.createCredentials(), false, false, false)
};
var self = this;
starttls(options, function(err) {
this.securePair = starttls(options, function(err) {
log.warn(err);
self.cleartext = this.cleartext;
self.cleartext.on('data', function(data) {
try {
self.recv(data);
}
catch(e) {
self.socket.destroy();
self.emit('error', e);
}
}).on('error', function (err) {
self.emit('error', err);
});
callback();
})

this.securePair.cleartext.on('data', function(data) {
try {
self.recv(data);
}
catch(e) {
self.socket.destroy();
self.emit('error', e);
}
}).on('error', function (err) {
self.emit('error', err);
});
};

Expand All @@ -152,30 +152,31 @@ BufferLayer.prototype.startTLS = function(callback) {
* @param callback {function}
*/
BufferLayer.prototype.listenTLS = function(keyFilePath, crtFilePath, callback) {
options = {
var options = {
socket : this.socket,
pair : tls.createSecurePair(crypto.createCredentials({
key: fs.readFileSync(keyFilePath),
cert: fs.readFileSync(crtFilePath),
}), true, false, false)
};
var self = this;
starttls(options, function(err) {
this.securePair = starttls(options, function(err) {
log.warn(err);
self.cleartext = this.cleartext;
self.cleartext.on('data', function(data) {
try {
self.recv(data);
}
catch(e) {
self.socket.destroy();
self.emit('error', e);
}
}).on('error', function (err) {
self.emit('error', err);
});
callback();
});

this.securePair.cleartext.on('data', function(data) {
try {
self.recv(data);
}
catch(e) {
self.socket.destroy();
self.emit('error', e);
}
}).on('error', function (err) {
self.emit('error', err);
});
};

/**
Expand Down
11 changes: 11 additions & 0 deletions lib/core/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,25 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

var Levels = {
'DEBUG' : 1,
'INFO' : 2,
'WARN' : 3,
'ERROR' : 4
};


function log(level, message) {
if (Levels[level] < module.exports.level) return;
console.log("[node-rdpjs] " + level + ":\t" + message);
}

/**
* Module exports
*/
module.exports = {
level : Levels.INFO,
Levels : Levels,
debug : function(message) { log("DEBUG", message); },
info : function(message) { log("INFO", message); },
warn : function(message) { log("WARN", message); },
Expand Down
Loading

0 comments on commit 8f4d47b

Please sign in to comment.