2020-03-03 16:33:13 -05:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
const meta = require('../../meta');
|
|
|
|
|
const plugins = require('../../plugins');
|
|
|
|
|
const logger = require('../../logger');
|
|
|
|
|
const events = require('../../events');
|
|
|
|
|
const index = require('../index');
|
|
|
|
|
|
|
|
|
|
const Config = module.exports;
|
|
|
|
|
|
|
|
|
|
Config.set = async function (socket, data) {
|
|
|
|
|
if (!data) {
|
|
|
|
|
throw new Error('[[error:invalid-data]]');
|
|
|
|
|
}
|
|
|
|
|
const _data = {};
|
|
|
|
|
_data[data.key] = data.value;
|
|
|
|
|
await Config.setMultiple(socket, _data);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Config.setMultiple = async function (socket, data) {
|
|
|
|
|
if (!data) {
|
|
|
|
|
throw new Error('[[error:invalid-data]]');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const changes = {};
|
|
|
|
|
const newData = meta.configs.serialize(data);
|
|
|
|
|
const oldData = meta.configs.serialize(meta.config);
|
2021-02-04 00:01:39 -07:00
|
|
|
Object.keys(newData).forEach((key) => {
|
2020-03-03 16:33:13 -05:00
|
|
|
if (newData[key] !== oldData[key]) {
|
|
|
|
|
changes[key] = newData[key];
|
2021-02-03 23:59:08 -07:00
|
|
|
changes[`${key}_old`] = meta.config[key];
|
2020-03-03 16:33:13 -05:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
await meta.configs.setMultiple(data);
|
2021-02-04 01:34:30 -07:00
|
|
|
for (const [key, value] of Object.entries(data)) {
|
|
|
|
|
const setting = { key, value };
|
|
|
|
|
plugins.hooks.fire('action:config.set', setting);
|
|
|
|
|
logger.monitorConfig({ io: index.server }, setting);
|
2020-03-03 16:33:13 -05:00
|
|
|
}
|
|
|
|
|
if (Object.keys(changes).length) {
|
|
|
|
|
changes.type = 'config-change';
|
|
|
|
|
changes.uid = socket.uid;
|
|
|
|
|
changes.ip = socket.ip;
|
|
|
|
|
await events.log(changes);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Config.remove = function (socket, key, callback) {
|
|
|
|
|
meta.configs.remove(key, callback);
|
|
|
|
|
};
|