Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
citronneur committed Jul 2, 2015
1 parent 35c21bc commit c9760fe
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 5 deletions.
93 changes: 89 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,110 @@ Remote Desktop Protocol for Node.js

node-rdp is a pure implementation of the Microsoft RDP (Remote Desktop Protocol) protocol (client and server side). node-rdp support only SSL security layer.

## Simple RDP Client
## Install

You can install last release node-rdp through npm :

```
npm install node-rdp
```

Or work with dev branch :

```
git clone https://github.com/citronneur/node-rdp.git
cd node-rdp
npm install
```

## RDP Client

To create a simple rdp client :

```javascript
var rdp = require('rdp');

rdp.createClient({
var client = rdp.createClient({
domain : 'my_domain',
userName : 'my_username',
password : 'my_password',
enablePerf : true,
autoLogin : true,
screen : { width : 800, height : 600 }
}).on('connect', function () {
}).on('bitmap', function(bitmap) {
}).on('close', function() {
}).on('bitmap', function(bitmap) {
}).on('error', function(err) {
}).connect(infos.ip, infos.port);
}).connect('XXX.XXX.XXX.XXX', 3389);
```

Most of bitmap are encoded with RLE (Run Length Encoding) algorithm. It's not the purpose of node-rdp to embed decompression algorithm. See mstsc.js to see a pure javascript implementation (for browser).

### Client Events

List of all available events from server

#### connect

Connect event is received when rdp stack is connected

#### close

Close event is received when rdp stack is close cleanly

#### error

Error event is received when a protocol error happened

#### bitmap

Bitmap event is received for a bitmap refresh order :

* destTop {integer} y min position
* destLeft {integer} x min position
* destBottom {integer} y max position
* destRight {integer} x max position
* width {integer} width of bitmap data
* height {integer} height of bitmap data
* bitsPerPixel {integer} [15|16|24|32] bits per pixel
* isCompress {boolean} true if bitmap is compressed with RLE algorithm
* data : {Buffer} bitmap data

### Client Inputs

Client inputs are mainly user inputs (mouse and keyboard).

#### Mouse

```javascript
client.sendPointerEvent(x, y, button, isPressed);
```

* x {integer} mouse x position in pixel
* y {integer} mouse y position in pixel
* button {integer} [ 1 (left) | 2 (right) | 3 (middle) ]
* isPressed {boolean} true for a pressed button event

#### Keyboard

```javascript
client.sendKeyEventScancode(code, isPressed);
```

* code {integer} scancode of key
* isPressed {boolean} true for a key pressed event

```javascript
client.sendKeyEventUnicode(code, isPressed);
```

* code {integer} unicode char of key
* isPressed {boolean} true for a key pressed event

## Roadmap

* Protocol server side
* NLA Authentication
* RDp security layer for windows xp compatibility
* Win32 orders
* RemoteFX (H.264) codec
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.createServer().listen(33389);
rdp.createClient({ domain : 'siradel', userName : 'speyrefitte'}).connect('54.187.36.238', 3389);
1 change: 1 addition & 0 deletions lib/protocol/rdp.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ var inherits = require('util').inherits;
var events = require('events');
var layer = require('../core').layer;
var error = require('../core').error;
var rle = require('../core').rle;
var log = require('../core').log;
var TPKT = require('./tpkt');
var x224 = require('./x224');
Expand Down

0 comments on commit c9760fe

Please sign in to comment.