From bc880ee0cafe225a4dcbaee3d3c317df0ea41eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 16 Oct 2020 21:05:00 -0400 Subject: [PATCH] refactor: remove sockets.reqFromSocket --- src/api/helpers.js | 30 ++++++++++++++++++++++++++++++ src/api/topics.js | 6 +++--- src/controllers/helpers.js | 32 -------------------------------- src/socket.io/helpers.js | 3 ++- src/socket.io/index.js | 31 ++----------------------------- src/socket.io/posts/diffs.js | 3 ++- src/socket.io/posts/edit.js | 3 ++- 7 files changed, 41 insertions(+), 67 deletions(-) create mode 100644 src/api/helpers.js diff --git a/src/api/helpers.js b/src/api/helpers.js new file mode 100644 index 0000000000..47c1426735 --- /dev/null +++ b/src/api/helpers.js @@ -0,0 +1,30 @@ +'use strict'; + +const url = require('url'); + +// creates a slimmed down version of the request object +exports.buildReqObject = (req, payload) => { + req = req || {}; + const headers = req.headers || {}; + const encrypted = req.connection ? !!req.connection.encrypted : false; + let host = headers.host; + const referer = headers.referer || ''; + + if (!host) { + host = url.parse(referer).host || ''; + } + + return { + uid: req.uid, + params: req.params, + method: req.method, + body: payload || req.body, + ip: req.ip, + host: host, + protocol: encrypted ? 'https' : 'http', + secure: encrypted, + url: referer, + path: referer.substr(referer.indexOf(host) + host.length), + headers: headers, + }; +}; diff --git a/src/api/topics.js b/src/api/topics.js index b3115f3a40..d2aee0d85e 100644 --- a/src/api/topics.js +++ b/src/api/topics.js @@ -7,7 +7,7 @@ const meta = require('../meta'); const events = require('../events'); const privileges = require('../privileges'); -const controllerHelpers = require('../controllers/helpers'); +const apiHelpers = require('./helpers'); const socketHelpers = require('../socket.io/helpers'); const topicsAPI = module.exports; @@ -21,7 +21,7 @@ topicsAPI.create = async function (caller, data) { payload.tags = payload.tags || []; payload.uid = caller.uid; payload.uid = caller.uid; - payload.req = controllerHelpers.buildReqObject(caller); + payload.req = apiHelpers.buildReqObject(caller); payload.timestamp = Date.now(); payload.fromQueue = false; @@ -46,7 +46,7 @@ topicsAPI.reply = async function (caller, data) { var payload = { tid: data.tid, uid: caller.uid, - req: controllerHelpers.buildReqObject(caller), // For IP recording + req: apiHelpers.buildReqObject(caller), // For IP recording content: data.content, timestamp: data.timestamp, fromQueue: false, diff --git a/src/controllers/helpers.js b/src/controllers/helpers.js index 5305e746f4..1712e48eac 100644 --- a/src/controllers/helpers.js +++ b/src/controllers/helpers.js @@ -3,7 +3,6 @@ const nconf = require('nconf'); const validator = require('validator'); const querystring = require('querystring'); -const url = require('url'); const _ = require('lodash'); const user = require('../user'); @@ -14,8 +13,6 @@ const meta = require('../meta'); const middleware = require('../middleware'); const translator = require('../translator'); -const websockets = require('../socket.io'); - const isLanguageKey = /^\[\[[\w.\-_:]+]]$/; const helpers = module.exports; @@ -427,33 +424,4 @@ helpers.generateError = (statusCode, message) => { return payload; }; -helpers.buildReqObject = (req) => { - // If a socket object is received instead, handle accordingly - if (req.id) { - return websockets.reqFromSocket(req); - } - - var headers = req.headers; - var encrypted = !!req.connection.encrypted; - var host = headers.host; - var referer = headers.referer || ''; - if (!host) { - host = url.parse(referer).host || ''; - } - - return { - uid: req.uid, - params: req.params, - method: req.method, - body: req.body, - ip: req.ip, - host: host, - protocol: encrypted ? 'https' : 'http', - secure: encrypted, - url: referer, - path: referer.substr(referer.indexOf(host) + host.length), - headers: headers, - }; -}; - require('../promisify')(helpers); diff --git a/src/socket.io/helpers.js b/src/socket.io/helpers.js index 76f09420cd..c5262fe210 100644 --- a/src/socket.io/helpers.js +++ b/src/socket.io/helpers.js @@ -13,12 +13,13 @@ const notifications = require('../notifications'); const plugins = require('../plugins'); const utils = require('../utils'); const batch = require('../batch'); +const apiHelpers = require('../api/helpers'); const SocketHelpers = module.exports; SocketHelpers.setDefaultPostData = function (data, socket) { data.uid = socket.uid; - data.req = websockets.reqFromSocket(socket); + data.req = apiHelpers.buildReqObject(socket); data.timestamp = Date.now(); data.fromQueue = false; }; diff --git a/src/socket.io/index.js b/src/socket.io/index.js index 5215c5957d..c3814d9f6c 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -69,7 +69,7 @@ Sockets.init = function (server) { function onConnection(socket) { socket.ip = (socket.request.headers['x-forwarded-for'] || socket.request.connection.remoteAddress || '').split(',')[0]; - + socket.request.ip = socket.ip; logger.io_one(socket, socket.uid); onConnect(socket); @@ -214,7 +214,7 @@ async function authorize(socket, callback) { } else { socket.uid = 0; } - + request.uid = socket.uid; callback(); } @@ -231,33 +231,6 @@ Sockets.getUserSocketCount = function (uid) { return room ? room.length : 0; }; - -Sockets.reqFromSocket = function (socket, payload, event) { - var headers = socket.request ? socket.request.headers : {}; - var encrypted = socket.request ? !!socket.request.connection.encrypted : false; - var host = headers.host; - var referer = headers.referer || ''; - var data = ((payload || {}).data || []); - - if (!host) { - host = url.parse(referer).host || ''; - } - - return { - uid: socket.uid, - params: data[1], - method: event || data[0], - body: payload, - ip: socket.ip, - host: host, - protocol: encrypted ? 'https' : 'http', - secure: encrypted, - url: referer, - path: referer.substr(referer.indexOf(host) + host.length), - headers: headers, - }; -}; - Sockets.warnDeprecated = (socket, replacement) => { if (socket.previousEvents) { socket.emit('event:deprecated_call', { diff --git a/src/socket.io/posts/diffs.js b/src/socket.io/posts/diffs.js index 8cfa3648c9..0c0d930e6d 100644 --- a/src/socket.io/posts/diffs.js +++ b/src/socket.io/posts/diffs.js @@ -3,6 +3,7 @@ const posts = require('../../posts'); const user = require('../../user'); const privileges = require('../../privileges'); +const apiHelpers = require('../../api/helpers'); const websockets = require('..'); module.exports = function (SocketPosts) { @@ -55,7 +56,7 @@ module.exports = function (SocketPosts) { throw new Error('[[error:no-privileges]]'); } - const edit = await posts.diffs.restore(data.pid, data.since, socket.uid, websockets.reqFromSocket(socket)); + const edit = await posts.diffs.restore(data.pid, data.since, socket.uid, apiHelpers.buildReqObject(socket)); websockets.in('topic_' + edit.topic.tid).emit('event:post_edited', edit); }; }; diff --git a/src/socket.io/posts/edit.js b/src/socket.io/posts/edit.js index 87c48b021c..0b2a08ff17 100644 --- a/src/socket.io/posts/edit.js +++ b/src/socket.io/posts/edit.js @@ -8,6 +8,7 @@ const groups = require('../../groups'); const events = require('../../events'); const meta = require('../../meta'); const utils = require('../../utils'); +const apiHelpers = require('../../api/helpers'); const websockets = require('../index'); module.exports = function (SocketPosts) { @@ -34,7 +35,7 @@ module.exports = function (SocketPosts) { } data.uid = socket.uid; - data.req = websockets.reqFromSocket(socket); + data.req = apiHelpers.buildReqObject(socket); const editResult = await posts.edit(data); if (editResult.topic.renamed) {