From 28056d678e1971cd69cf2e0d7119f80394ba0930 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Sun, 20 Nov 2016 15:23:35 +0200 Subject: [PATCH] Correctly remove closed sockets from oident file, remove unused functions --- .eslintrc.yml | 4 +- src/oidentd.js | 56 ++++++++-------------------- src/plugins/irc-events/connection.js | 8 ++-- 3 files changed, 20 insertions(+), 48 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index bb29017c..1f4469f2 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,13 +3,11 @@ root: true env: + es6: true browser: true mocha: true node: true -parserOptions: - ecmaVersion: 6 - rules: block-scoped-var: 2 block-spacing: [2, always] diff --git a/src/oidentd.js b/src/oidentd.js index 80c42161..541b9772 100644 --- a/src/oidentd.js +++ b/src/oidentd.js @@ -1,68 +1,42 @@ "use strict"; -var fs = require("fs"); -var Helper = require("./helper"); +const fs = require("fs"); +const Helper = require("./helper"); function OidentdFile(file) { this.file = Helper.expandHome(file); this.connectionId = 0; - this.connections = {}; + this.connections = new Map(); this.refresh(); } OidentdFile.prototype = { - hookSocket: function(socket, user) { - var that = this; - var id = null; - - socket.on("connect", function() { - id = that.addSocket(socket, user); - that.refresh(); - }); - socket.on("close", function() { - that.removeConnection(id); - that.refresh(); - }); - }, - addSocket: function(socket, user) { - var id = this.connectionId++; - this.connections[id] = {socket: socket, user: user}; + const id = this.connectionId++; + + this.connections.set(id, {socket: socket, user: user}); + this.refresh(); + return id; }, - removeSocket: function(socket) { - for (var id in this.connections) { - if (this.connections[id] === socket) { - delete this.connections[id]; - break; - } - } - }, + removeSocket: function(id) { + this.connections.delete(id); - removeConnection: function(id) { - delete this.connections[id]; - }, - - getSockets: function() { - return this.connections; + this.refresh(); }, refresh: function() { - var file = "# Warning: file generated by The Lounge: changes will be overwritten!\n"; + let file = "# Warning: file generated by The Lounge: changes will be overwritten!\n"; - function makeRule(connection) { - return "to " + connection.socket.remoteAddress + this.connections.forEach((connection) => { + file += "to " + connection.socket.remoteAddress + " lport " + connection.socket.localPort + " from " + connection.socket.localAddress + " fport " + connection.socket.remotePort + " { reply \"" + connection.user + "\" }\n"; - } - - for (var id in this.connections) { - file += makeRule(this.connections[id]); - } + }); fs.writeFile(this.file, file, {flag: "w+"}, function(err) { if (err) { diff --git a/src/plugins/irc-events/connection.js b/src/plugins/irc-events/connection.js index 2d843086..d47c4cfe 100644 --- a/src/plugins/irc-events/connection.js +++ b/src/plugins/irc-events/connection.js @@ -70,14 +70,14 @@ module.exports = function(irc, network) { } if (identHandler) { + let identSocketId; + irc.on("socket connected", function() { - identHandler.addSocket(irc.connection.socket, client.name || network.username); - identHandler.refresh(); + identSocketId = identHandler.addSocket(irc.connection.socket, client.name || network.username); }); irc.on("socket close", function() { - identHandler.removeSocket(irc.connection.socket); - identHandler.refresh(); + identHandler.removeSocket(identSocketId); }); }