diff --git a/config.js b/config.js index 1614ba2..e88df5d 100644 --- a/config.js +++ b/config.js @@ -9,6 +9,10 @@ //Общие параметры let common = { + //Версия сервера приложений + sVersion: "8.5.6.1", + //Релиз сервера приложений + sRelease: "2020.04.02", //Таймаут останова сервера (мс) nTerminateTimeout: 60000 }; diff --git a/config_default.js b/config_default.js index fa3d29b..417f5ae 100644 --- a/config_default.js +++ b/config_default.js @@ -9,6 +9,10 @@ //Общие параметры let common = { + //Версия сервера приложений + sVersion: "8.5.6.1", + //Релиз сервера приложений + sRelease: "2020.04.02", //Таймаут останова сервера (мс) nTerminateTimeout: 60000 }; diff --git a/core/app.js b/core/app.js index d9c878b..9eeddc3 100644 --- a/core/app.js +++ b/core/app.js @@ -194,6 +194,10 @@ class ParusAppServer { let sCheckResult = validateObject(prms, prmsAppSchema.init, "Параметры инициализации"); //Если настройки верны - будем стартовать if (!sCheckResult) { + //Протоколируем версию и релиз + await this.logger.info( + `Версия сервера приложений: ${prms.config.common.sVersion}, релиз: ${prms.config.common.sRelease}` + ); //Создаём подключение к БД this.dbConn = new db.DBConnector({ connectSettings: prms.config.dbConnect }); //Создаём модуль рассылки уведомлений @@ -207,6 +211,7 @@ class ParusAppServer { }); //Создаём обработчик очереди входящих this.inQ = new iq.InQueue({ + common: prms.config.common, inComing: prms.config.inComing, dbConn: this.dbConn, logger: this.logger, diff --git a/core/in_queue.js b/core/in_queue.js index 9062813..56df07b 100644 --- a/core/in_queue.js +++ b/core/in_queue.js @@ -59,6 +59,8 @@ class InQueue extends EventEmitter { let sCheckResult = validateObject(prms, prmsInQueueSchema.InQueue, "Параметры конструктора класса InQueue"); //Если структура объекта в норме if (!sCheckResult) { + //Общие параметры сервера приложений + this.common = _.cloneDeep(prms.common); //Список обслуживаемых сервисов this.services = null; //Признак функционирования обработчика @@ -381,7 +383,7 @@ class InQueue extends EventEmitter { //Для любых запросов к корневому адресу сервиса - ответ о том, что это за сервис, и что он работает this.webApp.all(srvs.sSrvRoot, (req, res) => { res.status(200).send( - `

Сервер приложений ПП Парус 8

Сервис: ${srvs.sName}

` + `

Сервер приложений ПП Парус 8
(${this.common.sVersion} релиз ${this.common.sRelease})

Сервис: ${srvs.sName}

` ); }); //Для всех статических функций сервиса... @@ -435,7 +437,7 @@ class InQueue extends EventEmitter { //Запросы на адреса, не входящие в состав объявленных сервисов - 404 NOT FOUND this.webApp.use("*", (req, res) => { res.status(404).send( - "

Сервер приложений ПП Парус 8

Запрошенный адрес не найден

" + `

Сервер приложений ПП Парус 8
(${this.common.sVersion} релиз ${this.common.sRelease})

Запрошенный адрес не найден

` ); }); //Ошибки, не отработанные индивидуальными обработчиками - 500 SERVER ERROR diff --git a/models/obj_config.js b/models/obj_config.js index 18f42bd..65f02a2 100644 --- a/models/obj_config.js +++ b/models/obj_config.js @@ -30,6 +30,24 @@ const validateMsgMaxSize = val => val >= 1 && val <= 1000 && Number.isInteger(va //Схема валидации общих параметров сервера приложений const common = new Schema({ + //Версия сервера приложений + sVersion: { + type: String, + required: true, + message: { + type: path => `Версия сервера приложений (${path}) имеет некорректный тип данных (ожидалось - String)`, + required: path => `Не указана версия сервера приложений (${path})` + } + }, + //Релиз сервера приложений + sRelease: { + type: String, + required: true, + message: { + type: path => `Релиз сервера приложений (${path}) имеет некорректный тип данных (ожидалось - String)`, + required: path => `Не указан релиз сервера приложений (${path})` + } + }, //Таймаут останова сервера (мс) nTerminateTimeout: { type: Number, diff --git a/models/prms_in_queue.js b/models/prms_in_queue.js index e6d72c5..d57a703 100644 --- a/models/prms_in_queue.js +++ b/models/prms_in_queue.js @@ -9,7 +9,7 @@ const Schema = require("validate"); //Схемы валидации const { IncomingMessage, ServerResponse } = require("http"); //Работа с HTTP протоколом -const { inComing } = require("./obj_config"); //Схемы валидации конфигурации сервера приложений +const { common, inComing } = require("./obj_config"); //Схемы валидации конфигурации сервера приложений const { defServices } = require("./obj_services"); //Схема валидации списка сервисов const { DBConnector } = require("../core/db_connector"); //Класс взаимодействия в БД const { Logger } = require("../core/logger"); //Класс для протоколирования работы @@ -23,6 +23,14 @@ const { Notifier } = require("../core/notifier"); //Класс рассылки //Схема валидации параметров конструктора exports.InQueue = new Schema({ + //Общие параметры сервера приложений + common: { + schema: common, + required: true, + message: { + required: path => `Не указаны общие параметры сервера приложений (${path})` + } + }, //Параметры обработки очереди входящих сообщений inComing: { schema: inComing,