mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 17:16:14 +01:00
refactor: remove sockets.reqFromSocket
This commit is contained in:
30
src/api/helpers.js
Normal file
30
src/api/helpers.js
Normal file
@@ -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,
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -7,7 +7,7 @@ const meta = require('../meta');
|
|||||||
const events = require('../events');
|
const events = require('../events');
|
||||||
const privileges = require('../privileges');
|
const privileges = require('../privileges');
|
||||||
|
|
||||||
const controllerHelpers = require('../controllers/helpers');
|
const apiHelpers = require('./helpers');
|
||||||
const socketHelpers = require('../socket.io/helpers');
|
const socketHelpers = require('../socket.io/helpers');
|
||||||
|
|
||||||
const topicsAPI = module.exports;
|
const topicsAPI = module.exports;
|
||||||
@@ -21,7 +21,7 @@ topicsAPI.create = async function (caller, data) {
|
|||||||
payload.tags = payload.tags || [];
|
payload.tags = payload.tags || [];
|
||||||
payload.uid = caller.uid;
|
payload.uid = caller.uid;
|
||||||
payload.uid = caller.uid;
|
payload.uid = caller.uid;
|
||||||
payload.req = controllerHelpers.buildReqObject(caller);
|
payload.req = apiHelpers.buildReqObject(caller);
|
||||||
payload.timestamp = Date.now();
|
payload.timestamp = Date.now();
|
||||||
payload.fromQueue = false;
|
payload.fromQueue = false;
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ topicsAPI.reply = async function (caller, data) {
|
|||||||
var payload = {
|
var payload = {
|
||||||
tid: data.tid,
|
tid: data.tid,
|
||||||
uid: caller.uid,
|
uid: caller.uid,
|
||||||
req: controllerHelpers.buildReqObject(caller), // For IP recording
|
req: apiHelpers.buildReqObject(caller), // For IP recording
|
||||||
content: data.content,
|
content: data.content,
|
||||||
timestamp: data.timestamp,
|
timestamp: data.timestamp,
|
||||||
fromQueue: false,
|
fromQueue: false,
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
const nconf = require('nconf');
|
const nconf = require('nconf');
|
||||||
const validator = require('validator');
|
const validator = require('validator');
|
||||||
const querystring = require('querystring');
|
const querystring = require('querystring');
|
||||||
const url = require('url');
|
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
@@ -14,8 +13,6 @@ const meta = require('../meta');
|
|||||||
const middleware = require('../middleware');
|
const middleware = require('../middleware');
|
||||||
const translator = require('../translator');
|
const translator = require('../translator');
|
||||||
|
|
||||||
const websockets = require('../socket.io');
|
|
||||||
|
|
||||||
const isLanguageKey = /^\[\[[\w.\-_:]+]]$/;
|
const isLanguageKey = /^\[\[[\w.\-_:]+]]$/;
|
||||||
const helpers = module.exports;
|
const helpers = module.exports;
|
||||||
|
|
||||||
@@ -427,33 +424,4 @@ helpers.generateError = (statusCode, message) => {
|
|||||||
return payload;
|
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);
|
require('../promisify')(helpers);
|
||||||
|
|||||||
@@ -13,12 +13,13 @@ const notifications = require('../notifications');
|
|||||||
const plugins = require('../plugins');
|
const plugins = require('../plugins');
|
||||||
const utils = require('../utils');
|
const utils = require('../utils');
|
||||||
const batch = require('../batch');
|
const batch = require('../batch');
|
||||||
|
const apiHelpers = require('../api/helpers');
|
||||||
|
|
||||||
const SocketHelpers = module.exports;
|
const SocketHelpers = module.exports;
|
||||||
|
|
||||||
SocketHelpers.setDefaultPostData = function (data, socket) {
|
SocketHelpers.setDefaultPostData = function (data, socket) {
|
||||||
data.uid = socket.uid;
|
data.uid = socket.uid;
|
||||||
data.req = websockets.reqFromSocket(socket);
|
data.req = apiHelpers.buildReqObject(socket);
|
||||||
data.timestamp = Date.now();
|
data.timestamp = Date.now();
|
||||||
data.fromQueue = false;
|
data.fromQueue = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ Sockets.init = function (server) {
|
|||||||
|
|
||||||
function onConnection(socket) {
|
function onConnection(socket) {
|
||||||
socket.ip = (socket.request.headers['x-forwarded-for'] || socket.request.connection.remoteAddress || '').split(',')[0];
|
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);
|
logger.io_one(socket, socket.uid);
|
||||||
|
|
||||||
onConnect(socket);
|
onConnect(socket);
|
||||||
@@ -214,7 +214,7 @@ async function authorize(socket, callback) {
|
|||||||
} else {
|
} else {
|
||||||
socket.uid = 0;
|
socket.uid = 0;
|
||||||
}
|
}
|
||||||
|
request.uid = socket.uid;
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,33 +231,6 @@ Sockets.getUserSocketCount = function (uid) {
|
|||||||
return room ? room.length : 0;
|
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) => {
|
Sockets.warnDeprecated = (socket, replacement) => {
|
||||||
if (socket.previousEvents) {
|
if (socket.previousEvents) {
|
||||||
socket.emit('event:deprecated_call', {
|
socket.emit('event:deprecated_call', {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
const posts = require('../../posts');
|
const posts = require('../../posts');
|
||||||
const user = require('../../user');
|
const user = require('../../user');
|
||||||
const privileges = require('../../privileges');
|
const privileges = require('../../privileges');
|
||||||
|
const apiHelpers = require('../../api/helpers');
|
||||||
const websockets = require('..');
|
const websockets = require('..');
|
||||||
|
|
||||||
module.exports = function (SocketPosts) {
|
module.exports = function (SocketPosts) {
|
||||||
@@ -55,7 +56,7 @@ module.exports = function (SocketPosts) {
|
|||||||
throw new Error('[[error:no-privileges]]');
|
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);
|
websockets.in('topic_' + edit.topic.tid).emit('event:post_edited', edit);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const groups = require('../../groups');
|
|||||||
const events = require('../../events');
|
const events = require('../../events');
|
||||||
const meta = require('../../meta');
|
const meta = require('../../meta');
|
||||||
const utils = require('../../utils');
|
const utils = require('../../utils');
|
||||||
|
const apiHelpers = require('../../api/helpers');
|
||||||
const websockets = require('../index');
|
const websockets = require('../index');
|
||||||
|
|
||||||
module.exports = function (SocketPosts) {
|
module.exports = function (SocketPosts) {
|
||||||
@@ -34,7 +35,7 @@ module.exports = function (SocketPosts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data.uid = socket.uid;
|
data.uid = socket.uid;
|
||||||
data.req = websockets.reqFromSocket(socket);
|
data.req = apiHelpers.buildReqObject(socket);
|
||||||
|
|
||||||
const editResult = await posts.edit(data);
|
const editResult = await posts.edit(data);
|
||||||
if (editResult.topic.renamed) {
|
if (editResult.topic.renamed) {
|
||||||
|
|||||||
Reference in New Issue
Block a user