1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/middlewares/admin/SettingsMWs.ts

432 lines
19 KiB
TypeScript
Raw Normal View History

/**/
2018-03-31 03:30:30 +08:00
import {NextFunction, Request, Response} from 'express';
import {ErrorCodes, ErrorDTO} from '../../../common/entities/Error';
import {ObjectManagers} from '../../model/ObjectManagers';
import {Logger} from '../../Logger';
import {SQLConnection} from '../../model/sql/SQLConnection';
import {Config} from '../../../common/config/private/Config';
import {ConfigDiagnostics} from '../../model/diagnostics/ConfigDiagnostics';
import {ClientConfig} from '../../../common/config/public/ConfigClass';
import {BasicConfigDTO} from '../../../common/entities/settings/BasicConfigDTO';
import {OtherConfigDTO} from '../../../common/entities/settings/OtherConfigDTO';
import {ProjectPath} from '../../ProjectPath';
import {PrivateConfigClass} from '../../../common/config/private/PrivateConfigClass';
import {ServerConfig} from '../../../common/config/private/IPrivateConfig';
const LOG_TAG = '[SettingsMWs]';
export class SettingsMWs {
2019-01-18 03:17:17 +08:00
2017-07-08 18:43:42 +08:00
public static async updateDatabaseSettings(req: Request, res: Response, next: NextFunction) {
2017-07-14 05:39:09 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-08 18:43:42 +08:00
}
const databaseSettings = <ServerConfig.DataBaseConfig>req.body.settings;
2017-07-08 18:43:42 +08:00
try {
if (databaseSettings.type !== ServerConfig.DatabaseType.memory) {
await SQLConnection.tryConnection(databaseSettings);
2017-07-08 18:43:42 +08:00
}
Config.Server.Database = databaseSettings;
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-14 05:39:09 +08:00
const original = Config.original();
original.Server.Database = databaseSettings;
if (databaseSettings.type === ServerConfig.DatabaseType.memory) {
2017-07-15 23:29:40 +08:00
original.Client.Sharing.enabled = false;
original.Client.Search.enabled = false;
}
2017-07-14 05:39:09 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-08 18:43:42 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
await ObjectManagers.reset();
if (Config.Server.Database.type !== ServerConfig.DatabaseType.memory) {
await ObjectManagers.InitSQLManagers();
2017-07-08 18:43:42 +08:00
} else {
await ObjectManagers.InitMemoryManagers();
2017-07-08 18:43:42 +08:00
}
return next();
} catch (err) {
2017-07-15 23:29:40 +08:00
if (err instanceof Error) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Error while saving database settings: ' + err.toString(), err));
2017-07-15 23:29:40 +08:00
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Error while saving database settings', err));
2017-07-08 18:43:42 +08:00
}
}
2017-07-15 18:47:11 +08:00
public static async updateMapSettings(req: Request, res: Response, next: NextFunction) {
2017-07-14 05:39:09 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-08 18:43:42 +08:00
}
try {
2017-07-15 18:47:11 +08:00
await ConfigDiagnostics.testMapConfig(<ClientConfig.MapConfig>req.body.settings);
Config.Client.Map = <ClientConfig.MapConfig>req.body.settings;
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-15 18:47:11 +08:00
const original = Config.original();
original.Client.Map = <ClientConfig.MapConfig>req.body.settings;
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 18:47:11 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
2017-07-08 18:43:42 +08:00
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-08 18:43:42 +08:00
}
}
2018-11-21 23:07:37 +08:00
2018-11-19 03:26:29 +08:00
public static async updateVideoSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
}
try {
const settings: {
server: ServerConfig.VideoConfig,
client: ClientConfig.VideoConfig
} = req.body.settings;
2018-11-19 03:26:29 +08:00
const original = Config.original();
await ConfigDiagnostics.testClientVideoConfig(settings.client);
await ConfigDiagnostics.testServerVideoConfig(settings.server, original);
Config.Server.Video = settings.server;
Config.Client.Video = settings.client;
// only updating explicitly set config (not saving config set by the diagnostics)
original.Server.Video = settings.server;
original.Client.Video = settings.client;
2018-11-19 03:26:29 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
Logger.info(LOG_TAG, 'new config:');
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2018-11-19 03:26:29 +08:00
}
}
2017-07-14 05:39:09 +08:00
2018-12-02 06:53:35 +08:00
public static async updateMetaFileSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
}
try {
const original = Config.original();
await ConfigDiagnostics.testMetaFileConfig(<ClientConfig.MetaFileConfig>req.body.settings, original);
Config.Client.MetaFile = <ClientConfig.MetaFileConfig>req.body.settings;
// only updating explicitly set config (not saving config set by the diagnostics)
original.Client.MetaFile = <ClientConfig.MetaFileConfig>req.body.settings;
original.save();
await ConfigDiagnostics.runDiagnostics();
Logger.info(LOG_TAG, 'new config:');
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2018-12-02 06:53:35 +08:00
}
}
2017-07-15 21:29:04 +08:00
public static async updateShareSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-15 21:29:04 +08:00
}
try {
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-15 21:29:04 +08:00
const original = Config.original();
await ConfigDiagnostics.testSharingConfig(<ClientConfig.SharingConfig>req.body.settings, original);
Config.Client.Sharing = <ClientConfig.SharingConfig>req.body.settings;
original.Client.Sharing = <ClientConfig.SharingConfig>req.body.settings;
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 21:29:04 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-15 21:29:04 +08:00
}
}
public static async updateRandomPhotoSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
}
try {
// only updating explicitly set config (not saving config set by the diagnostics)
const original = Config.original();
await ConfigDiagnostics.testRandomPhotoConfig(<ClientConfig.RandomPhotoConfig>req.body.settings, original);
Config.Client.RandomPhoto = <ClientConfig.RandomPhotoConfig>req.body.settings;
original.Client.RandomPhoto = <ClientConfig.RandomPhotoConfig>req.body.settings;
original.save();
await ConfigDiagnostics.runDiagnostics();
Logger.info(LOG_TAG, 'new config:');
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
}
}
2017-07-15 20:27:12 +08:00
public static async updateSearchSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-15 20:27:12 +08:00
}
try {
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-15 20:27:12 +08:00
const original = Config.original();
await ConfigDiagnostics.testSearchConfig(<ClientConfig.SearchConfig>req.body.settings, original);
Config.Client.Search = <ClientConfig.SearchConfig>req.body.settings;
original.Client.Search = <ClientConfig.SearchConfig>req.body.settings;
2019-07-21 22:39:52 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
Logger.info(LOG_TAG, 'new config:');
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
}
}
2019-07-28 04:56:12 +08:00
2019-07-21 22:39:52 +08:00
public static async updateFacesSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
}
try {
// only updating explicitly set config (not saving config set by the diagnostics)
const original = Config.original();
await ConfigDiagnostics.testFacesConfig(<ClientConfig.FacesConfig>req.body.settings, original);
Config.Client.Faces = <ClientConfig.FacesConfig>req.body.settings;
original.Client.Faces = <ClientConfig.FacesConfig>req.body.settings;
2017-07-15 20:27:12 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 20:27:12 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-15 20:27:12 +08:00
}
}
2017-07-26 03:09:37 +08:00
public static async updateAuthenticationSettings(req: Request, res: Response, next: NextFunction) {
2017-07-14 05:39:09 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-14 05:39:09 +08:00
}
try {
2017-07-15 18:47:11 +08:00
Config.Client.authenticationRequired = <boolean>req.body.settings;
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-14 05:39:09 +08:00
const original = Config.original();
2017-07-15 18:47:11 +08:00
original.Client.authenticationRequired = <boolean>req.body.settings;
2018-05-25 09:29:05 +08:00
if (original.Client.authenticationRequired === false) {
original.Client.Sharing.enabled = false;
}
2017-07-14 05:39:09 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-14 05:39:09 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-14 05:39:09 +08:00
}
}
2017-07-26 03:09:37 +08:00
public static async updateThumbnailSettings(req: Request, res: Response, next: NextFunction) {
2017-07-14 05:39:09 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-14 05:39:09 +08:00
}
try {
2017-07-15 18:47:11 +08:00
const settings: {
server: ServerConfig.ThumbnailConfig,
2017-07-15 18:47:11 +08:00
client: ClientConfig.ThumbnailConfig
} = req.body.settings;
await ConfigDiagnostics.testServerThumbnailConfig(settings.server);
await ConfigDiagnostics.testClientThumbnailConfig(settings.client);
Config.Server.Thumbnail = settings.server;
2017-07-15 18:47:11 +08:00
Config.Client.Thumbnail = settings.client;
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-15 18:47:11 +08:00
const original = Config.original();
original.Server.Thumbnail = settings.server;
2017-07-15 18:47:11 +08:00
original.Client.Thumbnail = settings.client;
original.save();
2017-07-19 16:21:52 +08:00
ProjectPath.reset();
2017-07-15 18:47:11 +08:00
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 18:47:11 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
2017-07-14 05:39:09 +08:00
return next();
} catch (err) {
2017-07-15 18:47:11 +08:00
if (err instanceof Error) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
2017-07-15 18:47:11 +08:00
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-14 05:39:09 +08:00
}
}
2017-07-15 18:47:11 +08:00
2017-07-26 03:09:37 +08:00
public static async updateBasicSettings(req: Request, res: Response, next: NextFunction) {
2017-07-15 22:09:48 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-15 22:09:48 +08:00
}
try {
const settings: BasicConfigDTO = req.body.settings;
2017-07-15 23:44:33 +08:00
await ConfigDiagnostics.testImageFolder(settings.imagesFolder);
2017-07-15 22:09:48 +08:00
Config.Server.port = settings.port;
Config.Server.host = settings.host;
2017-07-15 22:09:48 +08:00
Config.Server.imagesFolder = settings.imagesFolder;
Config.Client.publicUrl = settings.publicUrl;
Config.Client.urlBase = settings.urlBase;
2017-07-15 22:09:48 +08:00
Config.Client.applicationTitle = settings.applicationTitle;
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-15 22:09:48 +08:00
const original = Config.original();
original.Server.port = settings.port;
original.Server.host = settings.host;
2017-07-15 22:09:48 +08:00
original.Server.imagesFolder = settings.imagesFolder;
original.Client.publicUrl = settings.publicUrl;
original.Client.urlBase = settings.urlBase;
2017-07-15 22:09:48 +08:00
original.Client.applicationTitle = settings.applicationTitle;
original.save();
2017-07-19 16:21:52 +08:00
ProjectPath.reset();
2017-07-15 22:09:48 +08:00
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 22:09:48 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-15 22:09:48 +08:00
}
}
2017-07-26 03:09:37 +08:00
public static async updateOtherSettings(req: Request, res: Response, next: NextFunction) {
2017-07-15 22:31:43 +08:00
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-15 22:31:43 +08:00
}
try {
const settings: OtherConfigDTO = req.body.settings;
Config.Client.Other.enableCache = settings.Client.enableCache;
Config.Client.Other.captionFirstNaming = settings.Client.captionFirstNaming;
Config.Client.Other.enableOnScrollRendering = settings.Client.enableOnScrollRendering;
Config.Client.Other.enableOnScrollThumbnailPrioritising = settings.Client.enableOnScrollThumbnailPrioritising;
Config.Client.Other.defaultPhotoSortingMethod = settings.Client.defaultPhotoSortingMethod;
Config.Client.Other.NavBar.showItemCount = settings.Client.NavBar.showItemCount;
2017-07-15 22:31:43 +08:00
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
const original: PrivateConfigClass = Config.original();
original.Client.Other.enableCache = settings.Client.enableCache;
original.Client.Other.captionFirstNaming = settings.Client.captionFirstNaming;
original.Client.Other.enableOnScrollRendering = settings.Client.enableOnScrollRendering;
original.Client.Other.enableOnScrollThumbnailPrioritising = settings.Client.enableOnScrollThumbnailPrioritising;
original.Client.Other.defaultPhotoSortingMethod = settings.Client.defaultPhotoSortingMethod;
original.Client.Other.NavBar.showItemCount = settings.Client.NavBar.showItemCount;
original.Server.Threading.enable = settings.Server.enable;
original.Server.Threading.thumbnailThreads = settings.Server.thumbnailThreads;
2017-07-15 22:31:43 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-15 22:31:43 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-15 22:31:43 +08:00
}
}
2017-07-28 05:10:16 +08:00
public static async updateIndexingSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
2017-07-28 05:10:16 +08:00
}
try {
const settings: ServerConfig.IndexingConfig = req.body.settings;
Config.Server.Indexing = settings;
2017-07-28 05:10:16 +08:00
2018-03-31 03:30:30 +08:00
// only updating explicitly set config (not saving config set by the diagnostics)
2017-07-28 05:10:16 +08:00
const original = Config.original();
original.Server.Indexing = settings;
2017-07-28 05:10:16 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
2018-03-31 03:30:30 +08:00
Logger.info(LOG_TAG, 'new config:');
2017-07-28 05:10:16 +08:00
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
2018-12-02 19:22:05 +08:00
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
2018-03-31 03:30:30 +08:00
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
2017-07-28 05:10:16 +08:00
}
}
2019-08-20 18:54:45 +08:00
public static async updateTasksSettings(req: Request, res: Response, next: NextFunction) {
if ((typeof req.body === 'undefined') || (typeof req.body.settings === 'undefined')) {
return next(new ErrorDTO(ErrorCodes.INPUT_ERROR, 'settings is needed'));
}
try {
// only updating explicitly set config (not saving config set by the diagnostics)
const settings: ServerConfig.TaskConfig = req.body.settings;
2019-08-20 18:54:45 +08:00
const original = Config.original();
await ConfigDiagnostics.testTasksConfig(settings, original);
Config.Server.Tasks = settings;
original.Server.Tasks = settings;
2019-08-20 18:54:45 +08:00
original.save();
await ConfigDiagnostics.runDiagnostics();
ObjectManagers.getInstance().TaskManager.runSchedules();
2019-08-20 18:54:45 +08:00
Logger.info(LOG_TAG, 'new config:');
Logger.info(LOG_TAG, JSON.stringify(Config, null, '\t'));
return next();
} catch (err) {
if (err instanceof Error) {
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + err.toString(), err));
}
return next(new ErrorDTO(ErrorCodes.SETTINGS_ERROR, 'Settings error: ' + JSON.stringify(err, null, ' '), err));
}
}
2017-07-08 18:43:42 +08:00
}