From c7660c27bea8e1a084d0c8a19f5580ce827ebdbd Mon Sep 17 00:00:00 2001 From: Boris Shabanov Date: Mon, 27 Apr 2015 17:54:45 +0300 Subject: [PATCH 1/3] add config file for client.js and gitter-adapter.js included hostname for debug, config for faye and gitti fake user --- lib/client.js | 9 ++++----- lib/config.js | 12 ++++++++++++ lib/gitter-adapter.js | 26 ++++++++++++-------------- 3 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 lib/config.js diff --git a/lib/client.js b/lib/client.js index d0e8664..202abd7 100644 --- a/lib/client.js +++ b/lib/client.js @@ -7,6 +7,7 @@ var EventEmitter = require('eventemitter3'); var carrier = require('carrier'); var ircMessage = require('irc-message'); var uuid = require('uuid'); +var config = require('./config'); // The Client handles a single socket client, // parses each line and emits an event when an @@ -20,10 +21,8 @@ function Client(socket) { this.carry = carrier.carry(socket); this.carry.on('line', this.parse.bind(this)); - // TODO Get network and hostname from a config file - this.hostname = 'irc.gitter.im'; + this.hostname = config.hostname; this.host = ':' + this.hostname; - this.user = null; this.nick = null; @@ -132,7 +131,7 @@ Client.prototype.disconnect = function(opts) { if (opts.msg) { try { - var mask = ':gitter!gitter@irc.gitter.im'; + var mask = ':'+config.irc.user+'!'+config.irc.user+'@'+config.irc.hostname; this.send(mask, 'PRIVMSG', this.nick, ': ' + opts.msg); } catch(err) { @@ -143,4 +142,4 @@ Client.prototype.disconnect = function(opts) { this.socket.end(); }; -module.exports = Client; +module.exports = Client; \ No newline at end of file diff --git a/lib/config.js b/lib/config.js new file mode 100644 index 0000000..48b51f9 --- /dev/null +++ b/lib/config.js @@ -0,0 +1,12 @@ +/* jshint unused:true, node:true */ +"use strict"; + +var config = {} + +config.hostname = process.env.DEBUG ? "localhost" : "irc.gitter.im"; +// '&& false' because of no 'faye' +config.gitter = process.env.DEBUG && false ? {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}} : {}; + +config.irc = { hostname : 'irc.gitter.im', user : 'gitti' }; + +module.exports = config; \ No newline at end of file diff --git a/lib/gitter-adapter.js b/lib/gitter-adapter.js index b56ce1a..444693c 100644 --- a/lib/gitter-adapter.js +++ b/lib/gitter-adapter.js @@ -5,6 +5,7 @@ var debug = require('debug')('irc-gitter-adapter'); var irc = require('./protocol'); var Gitter = require('node-gitter'); var manifest = require('../package.json'); +var config = require('./config'); var VERSION = manifest.version; var DATE = Date(); @@ -49,7 +50,7 @@ Adapter.prototype.listenForOneToOnes = function() { .then(function(room) { if (!room.oneToOne) return; var nick = room.user.username; - var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; msg.text.split('\n').forEach(function(line) { c.send(mask, 'PRIVMSG', c.nick, ':' + line); }); @@ -64,11 +65,8 @@ Adapter.prototype.listenForOneToOnes = function() { }; Adapter.prototype.setup = function(token) { - var c = this.client; - - // TODO move this to a config file - var opts = {}; - if (process.env.DEV) opts = {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}}; + var c = this.client; + var opts= config.gitter; this.gitterClient = new Gitter(token, opts); this.gitterClient.currentUser() @@ -80,8 +78,8 @@ Adapter.prototype.setup = function(token) { }.bind(this)) .catch(function(err) { log('Authentication failed for token ', token); - var mask = ':gitter!gitter@irc.gitter.im'; - c.send(mask, 'PRIVMSG', 'gitter', ': Authentication failed. Get a valid token from https://irc.gitter.im'); + var mask = ':'+config.irc.user+'!'+config.irc.user+'@'+config.irc.hostname; + c.send(mask, 'PRIVMSG', config.irc.user, ': Authentication failed. Get a valid token from https://irc.gitter.im'); this.quit(); }.bind(this)); }; @@ -104,7 +102,7 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick = message.fromUser.username; if (nick === c.nick) return; // User's own message - var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; var text; message.text.split('\n').forEach(function(line) { @@ -118,7 +116,7 @@ Adapter.prototype.subscribeToRoom = function(room) { room.on('events', function(evt) { if (evt.operation !== 'create') return; var message = evt.model; - var mask = ':gitter!gitter@irc.gitter.im'; + var mask = ':'+config.irc.user+'!'+config.irc.user+'@' + config.irc.hostname; c.send(mask, 'PRIVMSG', '#' + room.uri, ':' + message.text); }.bind(this)); @@ -127,12 +125,12 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick, mask; if (evt.operation === 'create') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; c.send(mask, 'JOIN', '#' + room.uri); } if (evt.operation === 'remove') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; c.send(mask, 'PART', '#' + room.uri); } }); @@ -190,7 +188,7 @@ Adapter.prototype.joinRoom = function(channel) { }) .spread(function(room, users) { var _channel = '#' + room.uri; - var channelType = '*'; // TODO set right type -> * private, @ secret, = public + var channelType = '='; var usernames = users.map(function(u) { return u.username; }); usernames.push('gitter'); // Fake gitter user for Events @@ -289,4 +287,4 @@ Adapter.prototype._teardown = function() { if (this.gitterClient) this.gitterClient.faye.client.disconnect(); }; -module.exports = Adapter; +module.exports = Adapter; \ No newline at end of file From d62af445e909952a64396bc27f1112112db7a802 Mon Sep 17 00:00:00 2001 From: Boris Shabanov Date: Mon, 27 Apr 2015 17:57:51 +0300 Subject: [PATCH 2/3] add config file for client.js and gitter-adapter.js included hostname for debug, config for faye and gitti fake user --- lib/gitter-adapter.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/gitter-adapter.js b/lib/gitter-adapter.js index 444693c..a3116e6 100644 --- a/lib/gitter-adapter.js +++ b/lib/gitter-adapter.js @@ -5,7 +5,6 @@ var debug = require('debug')('irc-gitter-adapter'); var irc = require('./protocol'); var Gitter = require('node-gitter'); var manifest = require('../package.json'); -var config = require('./config'); var VERSION = manifest.version; var DATE = Date(); @@ -50,7 +49,7 @@ Adapter.prototype.listenForOneToOnes = function() { .then(function(room) { if (!room.oneToOne) return; var nick = room.user.username; - var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; + var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; msg.text.split('\n').forEach(function(line) { c.send(mask, 'PRIVMSG', c.nick, ':' + line); }); @@ -65,8 +64,11 @@ Adapter.prototype.listenForOneToOnes = function() { }; Adapter.prototype.setup = function(token) { - var c = this.client; - var opts= config.gitter; + var c = this.client; + + // TODO move this to a config file + var opts = {}; + if (process.env.DEV) opts = {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}}; this.gitterClient = new Gitter(token, opts); this.gitterClient.currentUser() @@ -78,8 +80,8 @@ Adapter.prototype.setup = function(token) { }.bind(this)) .catch(function(err) { log('Authentication failed for token ', token); - var mask = ':'+config.irc.user+'!'+config.irc.user+'@'+config.irc.hostname; - c.send(mask, 'PRIVMSG', config.irc.user, ': Authentication failed. Get a valid token from https://irc.gitter.im'); + var mask = ':gitter!gitter@irc.gitter.im'; + c.send(mask, 'PRIVMSG', 'gitter', ': Authentication failed. Get a valid token from https://irc.gitter.im'); this.quit(); }.bind(this)); }; @@ -102,7 +104,7 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick = message.fromUser.username; if (nick === c.nick) return; // User's own message - var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; + var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; var text; message.text.split('\n').forEach(function(line) { @@ -116,7 +118,7 @@ Adapter.prototype.subscribeToRoom = function(room) { room.on('events', function(evt) { if (evt.operation !== 'create') return; var message = evt.model; - var mask = ':'+config.irc.user+'!'+config.irc.user+'@' + config.irc.hostname; + var mask = ':gitter!gitter@irc.gitter.im'; c.send(mask, 'PRIVMSG', '#' + room.uri, ':' + message.text); }.bind(this)); @@ -125,12 +127,12 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick, mask; if (evt.operation === 'create') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; + mask = ':' + nick + '!' + nick + '@irc.gitter.im'; c.send(mask, 'JOIN', '#' + room.uri); } if (evt.operation === 'remove') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; + mask = ':' + nick + '!' + nick + '@irc.gitter.im'; c.send(mask, 'PART', '#' + room.uri); } }); @@ -188,10 +190,10 @@ Adapter.prototype.joinRoom = function(channel) { }) .spread(function(room, users) { var _channel = '#' + room.uri; - var channelType = '='; + var channelType = '*'; // TODO set right type -> * private, @ secret, = public var usernames = users.map(function(u) { return u.username; }); - usernames.push('gitter'); // Fake gitter user for Events + usernames.push( config.irc.user ); // Fake gitter user for Events c.send(c.mask(), 'JOIN', _channel); c.send(c.host, irc.reply.topic, c.nick, _channel, ':' + room.topic); @@ -287,4 +289,4 @@ Adapter.prototype._teardown = function() { if (this.gitterClient) this.gitterClient.faye.client.disconnect(); }; -module.exports = Adapter; \ No newline at end of file +module.exports = Adapter; From 317d4f53f3bb91031bb617425f2ee2f370fd1dc4 Mon Sep 17 00:00:00 2001 From: Boris Shabanov Date: Wed, 20 May 2015 10:22:05 +0300 Subject: [PATCH 3/3] Fix gitter-adapter add cfg file, update cfg file - add user --- .gitignore | 2 +- lib/config.js | 7 ++++--- lib/gitter-adapter.js | 24 +++++++++++------------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 93bcbfd..e41e04d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ *.swp node_modules -npm-debug.log +npm-debug.log \ No newline at end of file diff --git a/lib/config.js b/lib/config.js index 48b51f9..29b6ce0 100644 --- a/lib/config.js +++ b/lib/config.js @@ -3,10 +3,11 @@ var config = {} -config.hostname = process.env.DEBUG ? "localhost" : "irc.gitter.im"; +config.hostname = process.env.DEV ? "localhost" : "irc.gitter.im"; +config.user = 'gitter'; // '&& false' because of no 'faye' -config.gitter = process.env.DEBUG && false ? {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}} : {}; +config.gitter = process.env.DEV && false ? {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}} : {}; -config.irc = { hostname : 'irc.gitter.im', user : 'gitti' }; +config.irc = { hostname : config.hostname, user : config.user }; module.exports = config; \ No newline at end of file diff --git a/lib/gitter-adapter.js b/lib/gitter-adapter.js index a3116e6..fce4dc5 100644 --- a/lib/gitter-adapter.js +++ b/lib/gitter-adapter.js @@ -5,6 +5,7 @@ var debug = require('debug')('irc-gitter-adapter'); var irc = require('./protocol'); var Gitter = require('node-gitter'); var manifest = require('../package.json'); +var config = require('./config'); var VERSION = manifest.version; var DATE = Date(); @@ -49,7 +50,7 @@ Adapter.prototype.listenForOneToOnes = function() { .then(function(room) { if (!room.oneToOne) return; var nick = room.user.username; - var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; msg.text.split('\n').forEach(function(line) { c.send(mask, 'PRIVMSG', c.nick, ':' + line); }); @@ -64,11 +65,8 @@ Adapter.prototype.listenForOneToOnes = function() { }; Adapter.prototype.setup = function(token) { - var c = this.client; - - // TODO move this to a config file - var opts = {}; - if (process.env.DEV) opts = {client: {host: "localhost", port: 5000, prefix: true}, faye: {host: 'http://localhost:5000/faye'}}; + var c = this.client; + var opts= config.gitter; this.gitterClient = new Gitter(token, opts); this.gitterClient.currentUser() @@ -80,8 +78,8 @@ Adapter.prototype.setup = function(token) { }.bind(this)) .catch(function(err) { log('Authentication failed for token ', token); - var mask = ':gitter!gitter@irc.gitter.im'; - c.send(mask, 'PRIVMSG', 'gitter', ': Authentication failed. Get a valid token from https://irc.gitter.im'); + var mask = ':'+config.irc.user+'!'+config.irc.user+'@'+config.irc.hostname; + c.send(mask, 'PRIVMSG', config.irc.user, ': Authentication failed. Get a valid token from https://irc.gitter.im'); this.quit(); }.bind(this)); }; @@ -104,7 +102,7 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick = message.fromUser.username; if (nick === c.nick) return; // User's own message - var mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + var mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; var text; message.text.split('\n').forEach(function(line) { @@ -118,7 +116,7 @@ Adapter.prototype.subscribeToRoom = function(room) { room.on('events', function(evt) { if (evt.operation !== 'create') return; var message = evt.model; - var mask = ':gitter!gitter@irc.gitter.im'; + var mask = ':'+config.irc.user+'!'+config.irc.user+'@' + config.irc.hostname; c.send(mask, 'PRIVMSG', '#' + room.uri, ':' + message.text); }.bind(this)); @@ -127,12 +125,12 @@ Adapter.prototype.subscribeToRoom = function(room) { var nick, mask; if (evt.operation === 'create') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; c.send(mask, 'JOIN', '#' + room.uri); } if (evt.operation === 'remove') { nick = evt.model.username; - mask = ':' + nick + '!' + nick + '@irc.gitter.im'; + mask = ':' + nick + '!' + nick + '@' + config.irc.hostname; c.send(mask, 'PART', '#' + room.uri); } }); @@ -190,7 +188,7 @@ Adapter.prototype.joinRoom = function(channel) { }) .spread(function(room, users) { var _channel = '#' + room.uri; - var channelType = '*'; // TODO set right type -> * private, @ secret, = public + var channelType = '='; var usernames = users.map(function(u) { return u.username; }); usernames.push( config.irc.user ); // Fake gitter user for Events