thelounge/src/plugins/irc-events/connection.js

82 lines
2 KiB
JavaScript
Raw Normal View History

var _ = require("lodash");
var identd = require("../../identd");
var Msg = require("../../models/msg");
module.exports = function(irc, network) {
var client = this;
2016-04-26 22:41:08 +02:00
var identHandler = this.manager.identHandler;
network.channels[0].pushMessage(client, new Msg({
text: "Network created, connecting to " + network.host + ":" + network.port + "..."
}));
irc.on("socket connected", function() {
network.channels[0].pushMessage(client, new Msg({
text: "Connected to the network."
}));
});
2016-04-13 09:10:44 +02:00
irc.on("close", function() {
network.channels[0].pushMessage(client, new Msg({
2016-04-13 09:10:44 +02:00
text: "Disconnected from the network, and will not reconnect."
}));
});
2016-04-26 22:40:27 +02:00
if (identd.isEnabled()) {
irc.on("socket connected", function() {
identd.hook(irc.connection.socket, client.name || network.username);
});
}
2016-04-26 22:41:08 +02:00
if (identHandler) {
irc.on("socket connected", function() {
identHandler.addSocket(irc.connection.socket, client.name || network.username);
identHandler.refresh();
});
irc.on("socket close", function() {
identHandler.removeSocket(irc.connection.socket);
identHandler.refresh();
});
}
irc.on("socket error", function(err) {
2016-04-16 13:32:38 +02:00
log.debug("IRC socket error", err);
network.channels[0].pushMessage(client, new Msg({
type: Msg.Type.ERROR,
text: "Socket error: " + err
}));
});
irc.on("reconnecting", function() {
network.channels[0].pushMessage(client, new Msg({
2016-04-13 09:10:44 +02:00
text: "Disconnected from the network. Reconnecting..."
}));
});
irc.on("ping timeout", function() {
network.channels[0].pushMessage(client, new Msg({
text: "Ping timeout, disconnecting..."
}));
});
irc.on("server options", function(data) {
if (network.serverOptions.PREFIX === data.options.PREFIX) {
return;
}
network.prefixLookup = {};
_.each(data.options.PREFIX, function(mode) {
network.prefixLookup[mode.mode] = mode.symbol;
});
network.serverOptions.PREFIX = data.options.PREFIX;
client.emit("network_changed", {
network: network.id,
serverOptions: network.serverOptions
});
});
};