Re-connect XMPP when disconnected #2

Merged
raucao merged 4 commits from feature/1-reconnect_xmpp into master 2020-11-27 11:22:32 +00:00
2 changed files with 29 additions and 11 deletions

11
run.sh
View File

@ -1,14 +1,15 @@
#!/bin/bash #!/bin/bash
HUBOT_LOG_LEVEL="debug" \ HUBOT_LOG_LEVEL="debug" \
HUBOT_IRC_SERVER="irc.freenode.net" \ HUBOT_IRC_SERVER="irc.freenode.net" \
HUBOT_IRC_ROOMS="#kosmos-random,#kosmos-dev" \ HUBOT_IRC_ROOMS="#kosmos-random" \
HUBOT_IRC_NICK="wormhole" \ HUBOT_IRC_NICK="wormholedev" \
HUBOT_IRC_UNFLOOD="300" \ HUBOT_IRC_UNFLOOD="300" \
HUBOT_IRC_NICKSERV_USERNAME="wormhole" \ HUBOT_IRC_NICKSERV_USERNAME="wormholedev" \
HUBOT_IRC_NICKSERV_PASSWORD="" \ HUBOT_IRC_NICKSERV_PASSWORD="" \
HUBOT_WORMHOLE_XMPP_JID="wormhole@kosmos.org" \ HUBOT_WORMHOLE_XMPP_JID="jimmy@kosmos.org" \
HUBOT_WORMHOLE_XMPP_PASSWORD="" \ HUBOT_WORMHOLE_XMPP_PASSWORD="" \
HUBOT_WORMHOLE_XMPP_NICKNAME="wormhole" \
HUBOT_WORMHOLE_XMPP_HOST="xmpp.kosmos.org" \ HUBOT_WORMHOLE_XMPP_HOST="xmpp.kosmos.org" \
HUBOT_WORMHOLE_XMPP_PORT="5222" \ HUBOT_WORMHOLE_XMPP_PORT="5222" \
HUBOT_WORMHOLE_XMPP_ROOMS="kosmos-random@chat.kosmos.org,kosmos-dev@chat.kosmos.org" \ HUBOT_WORMHOLE_XMPP_ROOMS="kosmos-random@kosmos.chat" \
bin/hubot -a irc --name wormhole bin/hubot -a irc --name wormhole

View File

@ -3,9 +3,29 @@ const xmpp = require('simple-xmpp');
const hubotRooms = process.env.HUBOT_IRC_ROOMS.split(','); const hubotRooms = process.env.HUBOT_IRC_ROOMS.split(',');
const xmppRooms = process.env.HUBOT_WORMHOLE_XMPP_ROOMS.split(','); const xmppRooms = process.env.HUBOT_WORMHOLE_XMPP_ROOMS.split(',');
const xmppNickname = process.env.HUBOT_WORMHOLE_XMPP_NICKNAME;
const xmppConfig = {
jid: process.env.HUBOT_WORMHOLE_XMPP_JID,
password: process.env.HUBOT_WORMHOLE_XMPP_PASSWORD,
host: process.env.HUBOT_WORMHOLE_XMPP_HOST,
port: parseInt(process.env.HUBOT_WORMHOLE_XMPP_PORT)
};
module.exports = function (robot) { module.exports = function (robot) {
xmpp.on('online', function(data) {
robot.logger.info('XMPP connected with JID: ' + data.jid.toString());
raucao marked this conversation as resolved
Review

Is this supposed to use the hardcoded name "wormholedev"?

Is this supposed to use the hardcoded name "wormholedev"?
Review

Good catch. Thanks!

Good catch. Thanks!
xmppRooms.forEach(room => xmpp.join(`${room}/${xmppNickname}`));
});
xmpp.on('close', function() {
robot.logger.info('XMPP connection has been closed. Re-connecting...');
xmpp.connect(xmppConfig);
});
xmpp.on('groupchat', function(conference, from, message, whatevs, meta) { xmpp.on('groupchat', function(conference, from, message, whatevs, meta) {
if (meta || (from === 'wormhole')) return; if (meta || (from === 'wormhole')) return;
if (!xmppRooms.includes(conference)) return; if (!xmppRooms.includes(conference)) return;
@ -16,14 +36,11 @@ module.exports = function (robot) {
robot.messageRoom(room, msg); robot.messageRoom(room, msg);
}); });
xmpp.connect({ xmpp.on('error', function(err) {
jid: process.env.HUBOT_WORMHOLE_XMPP_JID, robot.logger.error(err);
password: process.env.HUBOT_WORMHOLE_XMPP_PASSWORD,
host: process.env.HUBOT_WORMHOLE_XMPP_HOST,
port: parseInt(process.env.HUBOT_WORMHOLE_XMPP_PORT)
}); });
xmppRooms.forEach(room => xmpp.join(`${room}/wormhole`)); xmpp.connect(xmppConfig);
function messageMUC(res) { function messageMUC(res) {
const message = res.message; const message = res.message;