From 0cb729dcaa122b6e84bc2a1fbde2529e273b6271 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Fri, 5 Jul 2013 22:33:02 -0700 Subject: [PATCH 1/5] add 'peerjs' bin script for simple(r) bootstrap --- bin/peerjs | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 ++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100755 bin/peerjs diff --git a/bin/peerjs b/bin/peerjs new file mode 100755 index 0000000..83ba95a --- /dev/null +++ b/bin/peerjs @@ -0,0 +1,71 @@ +#!/usr/bin/env node + +var path = require('path') + , pkg = require('../package.json') + , fs = require('fs') + , version = pkg.version + , PeerServer = require('../lib/server').PeerServer + , opts = require('optimist') + .usage('Usage: $0') + .options({ + debug: { + demand: false, + alias: 'd', + description: 'debug', + default: false + }, + timeout: { + demand: false, + alias: 't', + description: 'timeout (milliseconds)', + default: 5000 + }, + ip_limit: { + demand: false, + alias: 'i', + description: 'IP limit', + default: 5000 + }, + concurrent_limit: { + demand: false, + alias: 'c', + description: 'concurrent limit', + default: 5000 + }, + key: { + demand: false, + alias: 'k', + description: 'connection key', + default: 'peerjs' + }, + sslkey: { + demand: false, + description: 'path to SSL key' + }, + sslcert: { + demand: false, + description: 'path to SSL certificate' + }, + port: { + demand: true, + alias: 'p', + description: 'port', + } + }).argv; + +opts.version = version; + +if (opts.sslkey && opts.sslcert) { + opts['ssl'] = {}; + opts.ssl['key'] = fs.readFileSync(path.resolve(opts.sslkey)); + opts.ssl['certificate'] = fs.readFileSync(path.resolve(opts.sslcert)); +} + +process.on('uncaughtException', function(e) { + console.error('Error: ' + e); +}); + +var server = new PeerServer(opts); +console.log( + "Started PeerServer, port: " + opts.port + (" (v. %s)"), version +); diff --git a/package.json b/package.json index 2da52db..0dbed8d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "MIT", "dependencies": { "restify": "~2.3.5", - "ws": "~0.4.25" + "ws": "~0.4.25", + "optimist": "*" } } From 101a033fca75c6ee480081b84d2766ddb61e6eb6 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Fri, 5 Jul 2013 22:35:55 -0700 Subject: [PATCH 2/5] update readme with bin script example --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9fc4515..4ed22c8 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,22 @@ PeerServer helps broker connections between PeerJS clients. Data is not proxied Install the library: - npm install peer +```bash +$> npm install peer +``` Run the server: - var PeerServer = require('peer').PeerServer; - var server = new PeerServer({ port: 9000 }); +```bash +$> peerjs -p 9000 --key mykey +``` + +Or, create a custom server: + +```javascript +var PeerServer = require('peer').PeerServer; +var server = new PeerServer({ port: 9000 }); +``` Connecting to the server from PeerJS: From 443680f1398f3f60570544fade9a42785c2db3dc Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Fri, 5 Jul 2013 22:42:30 -0700 Subject: [PATCH 3/5] fix ip lookup --- lib/server.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/server.js b/lib/server.js index 5cf2572..9bea262 100644 --- a/lib/server.js +++ b/lib/server.js @@ -73,7 +73,7 @@ PeerServer.prototype._initializeWSS = function() { socket.close(); return; } - + if (!self._clients[key] || !self._clients[key][id]) { self._checkKey(key, ip, function(err) { if (!err) { @@ -203,7 +203,7 @@ PeerServer.prototype._initializeHTTP = function() { var id = req.params.id; var token = req.params.token; var key = req.params.key; - var ip = req.ip; + var ip = req.connection.remoteAddress; if (!self._clients[key] || !self._clients[key][id]) { self._checkKey(key, ip, function(err) { @@ -307,7 +307,7 @@ PeerServer.prototype._pruneOutstanding = function() { var keys = Object.keys(this._outstanding); for (var k = 0, kk = keys.length; k < kk; k += 1) { var key = keys[k]; - var dsts = Object.keys(this._outstanding[key]); + var dsts = Object.keys(this._outstanding[key]); for (var i = 0, ii = dsts.length; i < ii; i += 1) { var offers = this._outstanding[key][dsts[i]]; var seen = {}; From c2bcd2cf1715540bd4f9bb221f6469bcf52d2574 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Sat, 6 Jul 2013 11:26:37 -0700 Subject: [PATCH 4/5] woops, forgot the bin script in package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0dbed8d..d926e79 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.6", "description": "Peer-to-peer data in browsers", "main": "lib/server.js", + "bin": { "peerjs": "./bin/peerjs" }, "repository": { "type": "git", "url": "git://github.com/peers/peerjs-server.git" From f9c2172c8e618a6e2258fa91fb57e3860e2415ab Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Sat, 6 Jul 2013 11:28:21 -0700 Subject: [PATCH 5/5] use longform port flag + consistent formatting --- README.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 4ed22c8..a212387 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ $> npm install peer Run the server: ```bash -$> peerjs -p 9000 --key mykey +$> peerjs --port 9000 --key peerjs ``` Or, create a custom server: @@ -31,23 +31,27 @@ var server = new PeerServer({ port: 9000 }); Connecting to the server from PeerJS: - +```html + +``` Using HTTPS: Simply pass in PEM-encoded certificate and key. - var fs = require('fs'); - var PeerServer = require('peer').PeerServer; +```javascript +var fs = require('fs'); +var PeerServer = require('peer').PeerServer; - var server = new PeerServer({ - port: 9000, - ssl: { - key: fs.readFileSync('/path/to/your/ssl/key/here.key'), - certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt') - } - }); +var server = new PeerServer({ + port: 9000, + ssl: { + key: fs.readFileSync('/path/to/your/ssl/key/here.key'), + certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt') + } +}); +``` ## Problems?