From 020b636b1f6ffecfd6cf5563e0867ce4c401aebe Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 18 Nov 2014 14:08:44 +0000 Subject: [PATCH 01/23] template of a semi-fix --- src/node/hooks/express/adminplugins.js | 6 +++--- src/static/js/admin/plugins.js | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/node/hooks/express/adminplugins.js b/src/node/hooks/express/adminplugins.js index d8f19bba9..b348c0233 100644 --- a/src/node/hooks/express/adminplugins.js +++ b/src/node/hooks/express/adminplugins.js @@ -14,7 +14,6 @@ exports.expressCreateServer = function (hook_name, args, cb) { search_results: {}, errors: [], }; - res.send( eejs.require("ep_etherpad-lite/templates/admin/plugins.html", render_args) ); }); args.app.get('/admin/plugins/info', function(req, res) { @@ -25,7 +24,8 @@ exports.expressCreateServer = function (hook_name, args, cb) { exports.socketio = function (hook_name, args, cb) { var io = args.io.of("/pluginfw/installer"); io.on('connection', function (socket) { - if (!socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; + console.warn("THIS IS BROKEN", socket.handshake); + if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; socket.on("getInstalled", function (query) { // send currently installed plugins @@ -107,4 +107,4 @@ function sortPluginList(plugins, property, /*ASC?*/dir) { // a must be equal to b return 0; }) -} \ No newline at end of file +} diff --git a/src/static/js/admin/plugins.js b/src/static/js/admin/plugins.js index e6c7a1224..8a4c732e5 100644 --- a/src/static/js/admin/plugins.js +++ b/src/static/js/admin/plugins.js @@ -10,7 +10,8 @@ $(document).ready(function () { resource = baseURL.substring(1) + "socket.io"; //connect - socket = io.connect(url, {resource : resource}).of("/pluginfw/installer"); + var room = url + "pluginfw/installer"; + socket = io.connect(room, {resource : resource}); function search(searchTerm, limit) { if(search.searchTerm != searchTerm) { From d10013c1590594303397476f125354aa945ac483 Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 18 Nov 2014 14:10:38 +0000 Subject: [PATCH 02/23] client side code now fixed --- src/static/js/admin/settings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/static/js/admin/settings.js b/src/static/js/admin/settings.js index fb3f2e973..8a4473d6a 100644 --- a/src/static/js/admin/settings.js +++ b/src/static/js/admin/settings.js @@ -9,7 +9,8 @@ $(document).ready(function () { resource = baseURL.substring(1) + "socket.io"; //connect - socket = io.connect(url, {resource : resource}).of("/settings"); + var room = url + "settings"; + socket = io.connect(room, {resource : resource}); socket.on('settings', function (settings) { From ff603d7b586f4a8d675e30d8ff659f5c189afd5a Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 18 Nov 2014 14:12:02 +0000 Subject: [PATCH 03/23] stability restored now to handle the auth issues --- src/node/hooks/express/adminsettings.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/node/hooks/express/adminsettings.js b/src/node/hooks/express/adminsettings.js index 2a48d2899..ba3009cd9 100644 --- a/src/node/hooks/express/adminsettings.js +++ b/src/node/hooks/express/adminsettings.js @@ -22,7 +22,9 @@ exports.expressCreateServer = function (hook_name, args, cb) { exports.socketio = function (hook_name, args, cb) { var io = args.io.of("/settings"); io.on('connection', function (socket) { - if (!socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; + console.warn ("THIS IS BROKEN"); + + if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; socket.on("load", function (query) { fs.readFile('settings.json', 'utf8', function (err,data) { From 3e8f3cd938995a75e5146a149bf339dd5603416f Mon Sep 17 00:00:00 2001 From: John McLear Date: Tue, 18 Nov 2014 14:56:40 +0000 Subject: [PATCH 04/23] hrm I dont trust this security --- src/node/hooks/express/adminplugins.js | 5 +++-- src/node/hooks/express/adminsettings.js | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/node/hooks/express/adminplugins.js b/src/node/hooks/express/adminplugins.js index b348c0233..ccc100dcc 100644 --- a/src/node/hooks/express/adminplugins.js +++ b/src/node/hooks/express/adminplugins.js @@ -24,8 +24,9 @@ exports.expressCreateServer = function (hook_name, args, cb) { exports.socketio = function (hook_name, args, cb) { var io = args.io.of("/pluginfw/installer"); io.on('connection', function (socket) { - console.warn("THIS IS BROKEN", socket.handshake); - if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; + + console.warn ("The middleware now handles auth but I'm not convinced SocketIO is being responsible enough here so this needs reviewing before hitting master"); + // if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; socket.on("getInstalled", function (query) { // send currently installed plugins diff --git a/src/node/hooks/express/adminsettings.js b/src/node/hooks/express/adminsettings.js index ba3009cd9..3529e2059 100644 --- a/src/node/hooks/express/adminsettings.js +++ b/src/node/hooks/express/adminsettings.js @@ -22,9 +22,9 @@ exports.expressCreateServer = function (hook_name, args, cb) { exports.socketio = function (hook_name, args, cb) { var io = args.io.of("/settings"); io.on('connection', function (socket) { - console.warn ("THIS IS BROKEN"); - if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; + console.warn ("The middleware now handles auth but I'm not convinced SocketIO is being responsible enough here so this needs reviewing before hitting master"); + // if (!socket.handshake.session || !socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; socket.on("load", function (query) { fs.readFile('settings.json', 'utf8', function (err,data) { From 703440acd78692fd92a6036e177c1a118d439c45 Mon Sep 17 00:00:00 2001 From: John McLear Date: Fri, 21 Nov 2014 00:11:50 +0000 Subject: [PATCH 05/23] missing socketio fix --- src/node/handler/PadMessageHandler.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 36da4842b..fcf951f5b 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -496,14 +496,19 @@ function handleSuggestUserName(client, message) return; } - var padId = sessioninfos[client.id].padId, - clients = socketio.sockets.clients(padId); + var padId = sessioninfos[client.id].padId; + var roomClients = [], room = socketio.sockets.adapter.rooms[padId]; + if (room) { + for (var id in room) { + roomClients.push(socketio.sockets.adapter.nsp.connected[id]); + } + } //search the author and send him this message - for(var i = 0; i < clients.length; i++) { - var session = sessioninfos[clients[i].id]; + for(var i = 0; i < roomClients.length; i++) { + var session = sessioninfos[roomClients[i].id]; if(session && session.author == message.data.payload.unnamedId) { - clients[i].json.send(message); + roomClients[i].json.send(message); break; } } From 488d6890f9170eb9f731c8b86d763a3ad0e5ead1 Mon Sep 17 00:00:00 2001 From: John McLear Date: Fri, 21 Nov 2014 00:15:55 +0000 Subject: [PATCH 06/23] minor styling --- src/static/css/pad.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/static/css/pad.css b/src/static/css/pad.css index fd99cf456..5045f2995 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -698,9 +698,6 @@ table#otheruserstable { margin-top: 12px; padding:2px 4px 2px 4px; } -#importstatusball { - height: 50px -} #chatthrob { display: none; position: absolute; From 4e31ec8ab9c41f95c2cf8690458afe93ecb7d810 Mon Sep 17 00:00:00 2001 From: l-y-n-x Date: Sat, 22 Nov 2014 10:24:30 +0100 Subject: [PATCH 07/23] Changed relative path to Etherpad main page in admin settings. There was one '../' too much. --- src/templates/admin/index.html | 2 +- src/templates/admin/plugins-info.html | 2 +- src/templates/admin/plugins.html | 2 +- src/templates/admin/settings.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/templates/admin/index.html b/src/templates/admin/index.html index 750a4b52e..f6e9e29ef 100644 --- a/src/templates/admin/index.html +++ b/src/templates/admin/index.html @@ -10,7 +10,7 @@