コード例 #1
0
ファイル: sockend.js プロジェクト: dashersw/cote
test.cb('Sockend simple req&res', (t) => {
    t.plan(2);

    const responder = new Responder({ name: `${t.title}: simple responder`, respondsTo: ['test', 'test 2'] });

    responder.on('test', (req, cb) => cb(req.args));
    responder.on('test 2', (req, cb) => cb([1, 2, 3]));

    portfinder.getPort({ host: '127.0.0.1', port: 6000 }, (err, port) => {
        const server = io(port);
        new Sockend(server, { name: 'simple sockend' });

        const client = ioClient.connect(`http://0.0.0.0:${port}`);

        server.on('connection', (sock) => {
            responder.sock.on('connect', () => {
                client.emit('test', { args: [4, 5, 6] }, (res) => {
                    t.deepEqual(res, [4, 5, 6]);
                    client.emit('test 2', (res) => {
                        t.deepEqual(res, [1, 2, 3]);
                        t.end();
                    });
                });
            });
        });
    });
});
コード例 #2
0
ファイル: server.js プロジェクト: fab-b/attester
exports.create = function (callback) {
    testServer = new TestServer({
        predictableUrls: config["predictable-urls"],
        shutdownOnCampaignEnd: config["shutdown-on-campaign-end"],
        frozen: config["server-only"],
        flashPolicyPort: config["flash-policy-port"],
        flashPolicyServer: config["flash-policy-server"],
        taskTimeout: config["task-timeout"]
    }, attester.logger);
    testServer.server.on("error", function (error) {
        testServer.logger.logError("Web server error: %s", [error]);
        attester.event.emit("server.error");
    });

    portfinder.basePort = config.port;
    portfinder.getPort(function (err, port) {
        if (err) {
            attester.event.emit("server.error", "Can't start the server: %s", [err]);
            return;
        }
        if (port != config.port && config.port > 0) {
            // logging error instead of a warning so it's more visible in the console
            attester.logger.logError("Port %d unavailable; using %d instead.", [config.port, port]);
        }
        testServer.server.listen(port, function () {
            testServerReady = true;
            attester.event.emit("server.listening");
            callback();
        });
    });
};
コード例 #3
0
ファイル: webpack.dev.conf.js プロジェクト: fly19881121/vueah
module.exports = new Promise((resolve, reject) => {
	portfinder.basePort = process.env.PORT || config.dev.port
	portfinder.getPort((err, port) => {
		if(err) {
			reject(err)
		} else {
			// publish the new Port, necessary for e2e tests
			process.env.PORT = port
			// add port to devServer config
			devWebpackConfig.devServer.port = port

			// Add FriendlyErrorsPlugin
			devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
				compilationSuccessInfo: {
					messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
				},
				onErrors: config.dev.notifyOnErrors ?
					utils.createNotifierCallback() :
					undefined
			}))

			resolve(devWebpackConfig)
		}
	})
})
コード例 #4
0
ファイル: 04_session.js プロジェクト: qasimakhan/larvitsmpp
	it('should setup a server with auth and client trying to connect with correct username and password', function (done) {
		portfinder.getPort(function (err, freePort) {
			if (err) throw err;

			larvitsmpp.server({
				'port':	freePort,
				'checkuserpass':	checkuserpass
			}, function (err, serverSession) {
				if (err) throw err;

				serverSession.on('close', function () {
					// Manually destroy the server socket
					serverSession.sock.destroy();
				});
			});

			larvitsmpp.client({
				'port':	freePort,
				'username':	'******',
				'password':	'******'
			}, function (err, clientSession) {
				if (err) throw err;

				// Gracefully close connection
				clientSession.unbind();

				done();
			});
		});
	});
コード例 #5
0
ファイル: honeypot.js プロジェクト: alexanderGugel/honigtopf
var Honeypot = function (infoHash, port) {
  if (!infoHash) {
    logger.warn('Tried creating new honeypot, but didn\'t specify infoHash');
    return;
  }
  logger.info('Creating new honeypot for infoHash ' + this.infoHash + '...');
  this.infoHash = infoHash;
  this.port = port;
  if (!port) {
    logger.debug('Searching unused port for honeypot ' + this.infoHash + ' using portfinder...');
    portfinder.getPort(function (err, port) {
      if (err) {
        logger.error('Failed finding port using portfinder: ' + err.message);
        logger.error(JSON.stringify(err));
        return;
      }
      this.port = port;
      logger.debug('Port ' + this.port + ' for honeypot ' + this.infoHash + ' has been found and provisioned');
      _init.call(this);
    }.bind(this));
  } else {
    logger.debug('Port for honeypot ' + this.infoHash + ' specified');
    _init.call(this);
  }
};
コード例 #6
0
test('`find_node` query (with many in table)', function (t) {
  t.plan(4)
  var dht1 = new DHT({ bootstrap: false })
  var dht2 = new DHT({ bootstrap: false })

  common.failOnWarningOrError(dht1, t)
  common.failOnWarningOrError(dht2, t)

  dht1.addNode('1.1.1.1:6969', common.randomNodeId())
  dht1.addNode('10.10.10.10:6969', common.randomNodeId())
  dht1.addNode('255.255.255.255:6969', common.randomNodeId())

  portfinder.getPort(function (err, port) {
    t.error(err)
    dht1.listen(port, function () {
      var targetNodeId = common.randomNodeId()
      dht2._sendFindNode('127.0.0.1:' + port, targetNodeId, function (err, res) {
        t.error(err)
        t.deepEqual(res.id, dht1.nodeId)
        t.deepEqual(
          res.nodes.map(function (node) { return node.addr }).sort(),
          [ '1.1.1.1:6969', '10.10.10.10:6969', '255.255.255.255:6969' ]
        )

        dht1.destroy()
        dht2.destroy()
      })
    })
  })
})
コード例 #7
0
ファイル: 04_session.js プロジェクト: qasimakhan/larvitsmpp
	it('should setup a server with auth and client trying to connect with wrong username and password', function (done) {
		portfinder.getPort(function (err, freePort) {
			if (err) throw err;

			larvitsmpp.server({
				'port':	freePort,
				'checkuserpass':	checkuserpass
			}, function (err, serverSession) {
				if (err) throw err;

				serverSession.on('close', function () {
					// Manually destroy the server socket
					serverSession.sock.destroy();
				});
			});

			larvitsmpp.client({
				'port': freePort
			}, function (err) {
				assert(err, 'Error should be set since login should have failed');

				done();
			});
		});
	});
コード例 #8
0
ファイル: serve.js プロジェクト: caridy/yogi
    selleck: function(callback) {
        var self = this;
        portfinder.getPort(function (err, port) {
            var project = path.join(__dirname, '../../configs/selleck');

            if (util.isYUI()) {
                log.info('this is yui, using global path for all docs');
                if (self.module.name === 'yui3') {
                    project = path.join(self.module.dir, 'src/common/docs/');
                } else {
                    project = path.join(self.module.dir, 'common/docs/');
                }
            }

            self.version(function(version) {
                if (version) {
                    var file = path.join(project, 'project.json'),
                        json = JSON.parse(fs.readFileSync(file, 'utf8'));

                    json.yuiVersion = version;
                    try {
                    fs.writeFileSync(file, JSON.stringify(json, null, 4), 'utf8');
                    } catch (e) {}
                }
                self.spawn('selleck', port, ['--server', port, '--project', project], 'docs');
                callback();
            });
        });
    },
コード例 #9
0
module.exports.createServer = function (onListening, handler) {
  var server = require('../index.js').createServer();
  server.on('connection', function (conn) {
    conn.on('error', function () {
      // we are here when client drops connection
    });
    var flags = 0xffffff;
    flags = flags ^ ClientFlags.COMPRESS;

    conn.serverHandshake({
      protocolVersion: 10,
      serverVersion: 'node.js rocks',
      connectionId: 1234,
      statusFlags: 2,
      characterSet: 8,
      capabilityFlags: flags
    });
    if (handler) {
      handler(conn);
    }
  });
  portfinder.getPort(function (err, port) {
    server.listen(port, onListening);
  });
  return server;
};
コード例 #10
0
ファイル: weinre.js プロジェクト: mz-team/mz-command-release
function makeLiveServer(callback) {
  if (weinreServer) return callback(null, weinreServer, weinrePort);

  var basePort = fis.media().get('weinre.port', 8081);

  // 获取下一个可用端口。
  portfinder.getPort({
    port: basePort
  }, function(error, port) {
    if (error) {
      fis.log.warn('The port %s for weinre is already in use!', basePort);
      return callback(error);
    }

    weinrePort = port;

    weinreServer = weinre.run({
      httpPort: weinrePort,
      boundHost: defaultHostname,
      verbose: false,
      debug: false,
      readTimeout: 5,
      deathTimeout: 15
    });

    openUrl('http://' + defaultHostname + ':' + weinrePort + '/client/#' + weinreUsername);

    process.on('uncaughtException', function(err) {
      if (err.message !== 'read ECONNRESET') throw err;
    });

    callback(null, weinreServer, weinrePort);
  });
}
コード例 #11
0
ファイル: serve.js プロジェクト: caridy/yogi
    yuidoc: function(callback) {
        var self = this;
        portfinder.getPort(function (err, port) {
            var config = path.join(__dirname, '../../configs/yuidoc/yuidoc.json');
            if (util.isYUI()) {
                log.info('this is yui, using global path for all docs');
                if (self.module.name === 'yui3') {
                    config = path.join(self.module.dir, 'src/common/api/yuidoc.json');
                } else {
                    config = path.join(self.module.dir, 'common/api/yuidoc.json');
                }
            }
            self.version(function(version) {
                if (version) {
                    var json = JSON.parse(fs.readFileSync(config, 'utf8'));

                    json.version = version;
                    try {
                    fs.writeFileSync(config, JSON.stringify(json, null, 4), 'utf8');
                    } catch (e) {}
                }
                self.spawn('yuidoc', port, ['--server', port, '--config', config], 'api');
                callback();
            });
        });
    },
コード例 #12
0
ファイル: Listener.js プロジェクト: agitojs/agito
  beforeEach(function(done) {
    var unixSocketPath = path.join(__dirname, 'tmp.sock');
    createUnixSocket(unixSocketPath);
    protocols = [false, false, false, true].map(function(ret) {
      return {
        match: sinon.spy(function() { return ret; }),
        proxy: {
          address: unixSocketPath
        }
      };
    });

    portfinder.getPort(function(err, p) {
      port = p;

      if (err) {
        return done(err);
      }
      listener = new Listener({
        port: port,
        protocols: protocols
      });

      return done();
    });
  });
コード例 #13
0
ファイル: index.js プロジェクト: samueleaton/autossh
 /*
 */
 connect(conf) {
   const port = this.localPort === 'auto' ? this.generateRandomPort() : this.localPort;
   if (this.reverse || this.localHost !== 'localhost') {
     this.execTunnel(() => {
       this.pollConnection();
     });
   }
   else {
     portfinder.getPort({ port }, (portfinderErr, freePort) => {
       if (this.killed)
         return;
       if (portfinderErr)
         this.emit('error', 'Port error: ' + portfinderErr);
       if (this.localPort !== 'auto' && this.localPort !== freePort)
         this.emit('error', `Port ${this.localPort} is not available`);
       else {
         this.localPort = freePort;
         // creates tunnel and then polls port until connection is established
         this.execTunnel(() => {
           this.pollConnection();
         });
       }
     });
   }
 }
コード例 #14
0
ファイル: sockend.js プロジェクト: dashersw/cote
test.cb(`Sockend wrong respondsTo configuration`, (t) => {
    t.plan(2);
    const key = r.generate();

    const responder1 = new Responder({ name: `${t.title}: responder1`, respondsTo: ['test1'], key });
    const responder2 = new Responder({ name: `${t.title}: responder2`, respondsTo: 'test2', key });

    let metResponders = 0;

    responder1.on('test', (req, cb) => cb(req.args));
    responder2.on('test', (req, cb) => cb(req.args));

    portfinder.getPort({ host: '127.0.0.1', port: 28000 }, (err, port) => {
        const server = io(port);
        const sockend = new Sockend(server, { name: 'sockend for wrong respondsTo configuration', key });

        sockend.discovery.on('added', (obj) => {
            if (obj.advertisement.axon_type != 'rep') return;
            if (obj.advertisement.key != sockend.advertisement.key) return;

            metResponders++;

            if (obj.advertisement.respondsTo === 'test2') {
                t.pass();
            }

            if (obj.advertisement.respondsTo[0] == 'test1') {
                t.pass();
            }

            if (metResponders == 2) t.end();
        });
    });
});
コード例 #15
0
test('`announce_peer` query with bad token', function (t) {
  t.plan(3)
  portfinder.getPort(function (err, port) {
    t.error(err)

    var dht1 = new DHT({ bootstrap: false })
    var dht2 = new DHT({ bootstrap: false })

    common.failOnWarningOrError(dht1, t)
    common.failOnWarningOrError(dht2, t)

    var infoHash = common.randomNodeId()

    dht1.listen(port, function () {
      var token = new Buffer('bad token')
      dht2._sendAnnouncePeer('127.0.0.1:' + port, infoHash, 9999, token, function (err, res) {
        t.ok(err, 'got error')
        t.ok(err.message.indexOf('bad token') !== -1)

        dht1.destroy()
        dht2.destroy()
      })
    })
  })
})
コード例 #16
0
ファイル: test.js プロジェクト: devsaurin/yogi
    prepServer: function(callback) {
        log.info('prepping grover tests');
        var gbase = path.join(git.findRoot(), '../'),
            self = this;

        log.debug('setting server root to: ' + gbase);
        process.chdir(gbase);
        

        portfinder.getPort(function (err, port) {
            self.yogiURL = 'http://127.0.0.1:' + port + '/';
            
            log.debug('startng yogi server at: ' + self.yogiURL);
            self.options.grover = true;
            self.options.tests = self.resolveTests();

            self.options.tests.forEach(function(val, key) {
                self.options.tests[key] = val.replace(gbase, 'tests/').split(path.sep).join('/');
            });
            self.options.callback = function() {
                //delete the options callback so that it never fires again
                delete self.options.callback;
                server.port = port;
                server.startServer();
                self.yogiServer = server;
                var t = ((self.options.parsed.functional) ? 500 : 0);
                setTimeout(function() {
                    callback(port);
                }, t);
            };
            server.init(self.options);
        });
    },
コード例 #17
0
test('`announce_peer` query gets ack response', function (t) {
  t.plan(6)

  var dht1 = new DHT({ bootstrap: false })
  var dht2 = new DHT({ bootstrap: false })

  common.failOnWarningOrError(dht1, t)
  common.failOnWarningOrError(dht2, t)

  var infoHash = common.randomNodeId()
  var host =

  portfinder.getPort(function (err, port) {
    t.error(err)
    dht1.listen(port, function () {
      dht2._sendGetPeers('127.0.0.1:' + port, infoHash, function (err, res1) {
        t.error(err)
        t.deepEqual(res1.id, dht1.nodeId)
        t.ok(Buffer.isBuffer(res1.token))

        dht2._sendAnnouncePeer('127.0.0.1:' + port, infoHash, 9999, res1.token, function (err, res2) {
            t.error(err)
            t.deepEqual(res1.id, dht1.nodeId)

            dht1.destroy()
            dht2.destroy()
          }
        )
      })
    })
  })
})
コード例 #18
0
ファイル: serve.js プロジェクト: mk2/monaca-cli
        function() {
          // ifaces
          var deferredAddresses = Q.defer();
          require('dns').lookup(require('os').hostname(), { family: 4, all: true } , function(err, addresses) {
            if (err) {
              util.warn(err);
            }
            deferredAddresses.resolve(addresses || []);
          });

          // port
          var deferredPort = Q.defer();
          portfinder.basePort = argv.port || 8000;
          portfinder.getPort(function(err, port) {
            if (err) {
              return deferredPort.reject(err);
            }
            if (argv.port && argv.port !== port) {
              util.warn('The specified port ' + argv.port + ' is already in use. Using available port ' + port + ' instead.\n');
            }
            deferredPort.resolve(port);
          });

          return Q.all([deferredAddresses.promise, deferredPort.promise]);
        }
コード例 #19
0
ファイル: 04_session.js プロジェクト: qasimakhan/larvitsmpp
	it('should setup a basic server and client and then directly unbinding again', function (done) {
		portfinder.getPort(function (err, freePort) {
			if (err) throw err;

			larvitsmpp.server({
				'port':	freePort
			}, function (err, serverSession) {
				if (err) throw err;

				serverSession.on('close', function () {
					// Manually destroy the server socket
					serverSession.sock.destroy();
				});
			});

			larvitsmpp.client({
				'port':	freePort
			}, function (err, clientSession) {
				if (err) throw err;

				// Gracefully close connection
				clientSession.unbind();

				done();
			});
		});
	});
コード例 #20
0
ファイル: index.js プロジェクト: djfm/autocrowdin
	var prepareTheShop = function (dir) {
		var d = new Deferred();

		if (fs.existsSync(path.join(dir, 'admin')))
		{
			if (undefined !== fs.renameSync(path.join(dir, 'admin'), path.join(dir, 'admin-dev')))
			{
				console.log(path.join(dir, 'admin'), path.join(dir, 'admin-dev'));
				d.reject('Could not rename admin to admin-dev.');
			}
		}
		if (fs.existsSync(path.join(dir, 'install')))
		{
			if (undefined !== fs.renameSync(path.join(dir, 'install'), path.join(dir, 'install-dev')))
			{
				d.reject('Could not rename install to install-dev.');
			}
		}

		portfinder.getPort(function (error, port) {
			if (error)
			{
				d.reject('Could not find an open port: ' + error);
			}
			else
			{
				d.resolve({port: port, path: dir});
			}
		});


		return d.promise;
	};
コード例 #21
0
ファイル: 04_session.js プロジェクト: qasimakhan/larvitsmpp
	it('should test that a session can recreate SMS with random sequence', function (done) {
		portfinder.getPort(function (err, freePort) {
			const	sockInLog	= [], // Log incomming socket messages
				sock	= new net.Socket();

			if (err) throw err;

			sock.connect(freePort, 'localhost', function () {
				// bind_transceiver - initial call. Subsequent calls should be made on the sock.on('data') thingie
				sock.write(new Buffer('0000002100000009000000000000002f666f6f0062617200736d70700034000000', 'hex'));
			});

			sock.on('data', function (data) {
				sockInLog.push(data.toString('hex'));

				if (sockInLog.length === 1) {
					assert.strictEqual(data.toString('hex'),	'0000001480000009000000000000002f666f6f00');

					// Send all 4 parts at the same time but random order
					// Message Part 2
					sock.write(new Buffer('000000de00000004000000000000003100050074657374000201313233343500430000003136303630373136333031333030302b00000000009f0500030204027768656e20616e20756e6b6e6f776e207072696e74657220746f6f6b20612067616c6c6579206f66207479706520616e6420736372616d626c656420697420746f206d616b65206120747970652073706563696d656e20626f6f6b2e20497420686173207375727669766564206e6f74206f6e6c7920666976652063656e7475726965732c2062757420616c736f20746865206c65617020690426000101', 'hex'));
					// Message Part 1
					sock.write(new Buffer('000000de00000004000000000000003000050074657374000201313233343500430000003136303630373136333031333030302b00000000009f0500030204014c6f72656d20497073756d2069732073696d706c792064756d6d792074657874206f6620746865207072696e74696e6720616e64207479706573657474696e6720696e6475737472792e204c6f72656d20497073756d20686173206265656e2074686520696e6475737472792773207374616e646172642064756d6d79207465787420657665722073696e6365207468652031353030732c200426000101', 'hex'));
					// Message Part 4
					sock.write(new Buffer('000000b200000004000000000000003300050074657374000201313233343500430000003136303630373136333031333030302b000000000078050003020404617373616765732c20616e64206d6f726520726563656e746c792077697468206465736b746f70207075626c697368696e6720736f667477617265206c696b6520416c64757320506167654d616b657220696e636c7564696e672076657273696f6e73206f66204c6f72656d20497073756d', 'hex'));
					// Message Part 3
					sock.write(new Buffer('000000de00000004000000000000003200050074657374000201313233343500430000003136303630373136333031333030302b00000000009f0500030204036e746f20656c656374726f6e6963207479706573657474696e672c2072656d61696e696e6720657373656e7469616c6c7920756e6368616e6765642e2049742077617320706f70756c61726973656420696e207468652031393630732077697468207468652072656c65617365206f66204c657472617365742073686565747320636f6e7461696e696e67204c6f72656d20497073756d20700426000101', 'hex'));
				} else if (sockInLog.length === 2) {
					assert.strictEqual(data.toString('hex'),	'000000158000000400000000000000303233343300');
				} else if (sockInLog.length === 3) {
					// This is actually four different PDUs at the same time, marking the response on all four parts above
					assert.strictEqual(data.toString('hex'),	'000000158000000400000000000000313233343300000000158000000400000000000000323233343300000000158000000400000000000000333233343300');
					done();
				} else {
					throw new Error('To much data received');
				}
			});

			larvitsmpp.server({
				'port':	freePort
			}, function (err, serverSession) {
				if (err) throw err;

				serverSession.on('sms', function (sms) {
					assert.strictEqual(sms.message,	'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum');

					sms.smsId	= 2343;

					sms.sendResp(function (err) {
						if (err) throw err;
					});
				});

				serverSession.on('close', function () {
					// Manually destroy the server socket
					serverSession.sock.destroy();
				});
			});
		});
	});
コード例 #22
0
test('`get_peers` query to node with *no* peers in table', function (t) {
  t.plan(5)
  var dht1 = new DHT({ bootstrap: false })
  var dht2 = new DHT({ bootstrap: false })

  common.failOnWarningOrError(dht1, t)
  common.failOnWarningOrError(dht2, t)

  dht1.addNode('1.1.1.1:6969', common.randomId())
  dht1.addNode('2.2.2.2:6969', common.randomId())

  portfinder.getPort(function (err, port) {
    t.error(err)
    dht1.listen(port, function () {
      var targetInfoHash = common.randomId()
      dht2._sendGetPeers('127.0.0.1:' + port, targetInfoHash, function (err, res) {
        t.error(err)
        t.deepEqual(res.id, dht1.nodeId)
        t.ok(Buffer.isBuffer(res.token))
        t.deepEqual(
          res.nodes.map(function (node) { return node.addr }).sort(),
          [ '1.1.1.1:6969', '2.2.2.2:6969' ]
        )

        dht1.destroy()
        dht2.destroy()
      })
    })
  })
})
コード例 #23
0
ファイル: index.js プロジェクト: the1sky/pagetimeline
	getAvailablePort:function(callback){
		var portfinder = require( 'portfinder' );
		portfinder.getPort( function(err, port){
			err ? port = 9222 : port;
			callback( err, port );
		} );
	}
コード例 #24
0
ファイル: monitor.js プロジェクト: dashersw/cote
  constructor(advertisement, discoveryOptions = {}, stream) {
    advertisement.type = 'monitor';
    discoveryOptions = _objectSpread({}, defaultOptions, discoveryOptions);
    super(advertisement, discoveryOptions);
    this.stream = stream;
    this.sock = new axon.SubEmitterSocket();
    this.sock.sock.on('bind', () => this.startDiscovery());
    this.sock.on('status', status => this.emit('status', status));

    const onPort = (err, port) => {
      advertisement.port = +port;
      this.sock.bind(port);
      this.sock.sock.server.on('error', err => {
        if (err.code != 'EADDRINUSE') throw err;
        portfinder.getPort({
          host: this.discoveryOptions.address,
          port: this.advertisement.port
        }, onPort);
      });
    };

    portfinder.getPort({
      host: this.discoveryOptions.address,
      port: this.advertisement.port
    }, onPort);
  }
コード例 #25
0
ファイル: Requester.js プロジェクト: hkulekci/cote
var Requester = function(advertisement, discoveryOptions) {
    EventEmitter.call(this, {
        wildcard: true, // should the event emitter use wildcards.
        delimiter: '::', // the delimiter used to segment namespaces, defaults to `.`.
        newListener: false, // if you want to emit the newListener event set to true.
        maxListeners: 2000 // the max number of listeners that can be assigned to an event, defaults to 10.
    });

    var that = this;

    portfinder.getPort(function(err, port) {
        advertisement.axon_type = 'req';
        advertisement.port = +port;
        that.advertisement = advertisement;

        var d = that.discovery = Discovery(advertisement, discoveryOptions);

        that.sock = new axon.ReqSocket();
        that.sock.bind(port);

        that.emit('ready', that.sock);

        d.on('added', function(obj) {
            that.emit('added', obj);
        });

        d.on('removed', function(obj) {
            that.emit('removed', obj);
        });
    });
};
コード例 #26
0
ファイル: monitor.js プロジェクト: dashersw/cote
 this.sock.sock.server.on('error', err => {
   if (err.code != 'EADDRINUSE') throw err;
   portfinder.getPort({
     host: this.discoveryOptions.address,
     port: this.advertisement.port
   }, onPort);
 });
コード例 #27
0
ファイル: index.js プロジェクト: winiceo/kuzzle
  return (() => {
    var
      deferred,
      execArgv = process.execArgv.slice();

    if (process.debugPort) {
      deferred = q.defer();

      portfinder.getPort((err, debugPort) => {
        execArgv.forEach((v, i) => {
          var match = v.match(/^(--debug|--debug-(brk|port))(=\d+)?$/);

          if (match) {
            execArgv[i] = match[1] + '=' + debugPort;
          }
        });

        deferred.resolve(execArgv);
      });

      return deferred.promise;
    }

    return q(execArgv);
  })()
コード例 #28
0
test('`get_peers` query to node with peers in table', function (t) {
  t.plan(5)

  var dht1 = new DHT({ bootstrap: false })
  var dht2 = new DHT({ bootstrap: false })

  common.failOnWarningOrError(dht1, t)
  common.failOnWarningOrError(dht2, t)

  var targetInfoHash = common.randomNodeId()

  dht1.addPeer('1.1.1.1:6969', targetInfoHash)
  dht1.addPeer('10.10.10.10:6969', targetInfoHash)
  dht1.addPeer('255.255.255.255:6969', targetInfoHash)

  portfinder.getPort(function (err, port) {
    t.error(err)
    dht1.listen(port, function () {
      dht2._sendGetPeers('127.0.0.1:' + port, targetInfoHash, function (err, res) {
        t.error(err)
        t.deepEqual(res.id, dht1.nodeId)
        t.ok(Buffer.isBuffer(res.token))
        t.deepEqual(
          res.values.sort(),
          ['1.1.1.1:6969', '10.10.10.10:6969', '255.255.255.255:6969']
        )

        dht1.destroy()
        dht2.destroy()
      })
    })
  })
})
コード例 #29
0
ファイル: spawn-test.js プロジェクト: lymanlai/dispatcher
 it('should spawn command correctly', function (done) {
   portFinder.getPort(function (err, serverPort) {
     should.not.exist(err, 'error getting server port: ' + JSON.stringify(err, null, ' '))
     var repoDir = path.join(__dirname, 'setup/repos/apples/');
     assert.ok(fs.existsSync(repoDir) ,'repo dir not found at path: ' + repoDir)
     var data = {
       port: port,
       host: host,
       secret: secret,
       repoDir: repoDir,
       command: 'node applesServer --port=' + serverPort
     }
     performSpawn(data, function (err) {
       should.not.exist(err, 'error spawning command: ' + JSON.stringify(err, null, ' '))
     })
     var pattern = /apples server listening on port/;
     droneProcess.stdout.on('data', function (stdoutData) {
       if (pattern.test(stdoutData)) {
         var url = 'http://localhost:' + serverPort + '/ping'
         inspect(url,'url')
         request(url, function (err, res, body) {
           if (err) {
             inspect(err, 'server error')
           }
           should.not.exist(err, 'error in server response: ' + JSON.stringify(err, null, ' '))
           res.statusCode.should.eql(200)
           body.should.eql('pong')
           done()
         })
       }
     })
   })
 })
コード例 #30
0
ファイル: sockend.js プロジェクト: dashersw/cote
test.cb('Sockend pub&sub with __room', (t) => {
    t.plan(1);
    const key = r.generate();

    const publisher = new Publisher({ name: `${t.title}: room publisher`, key, broadcasts: ['published message'] });

    portfinder.getPort({ host: '127.0.0.1', port: 2000 }, (err, port) => {
        const server = io(port);
        new Sockend(server, { name: 'pub&sub sockend', key });

        const client = ioClient.connect(`http://0.0.0.0:${port}`);

        client.on('published message', (msg) => {
            t.deepEqual(msg, { content: 'simple content' });
            t.end();
        });

        server.on('connection', (sock) => {
            sock.join('room1');
            publisher.sock.sock.on('connect', (sdf) => {
                publisher.publish('published message', { content: 'simple content', __room: 'room1' });
            });
        });
    });
});