From e93115509a6fe486be9d1f697c70136a2da0cdff Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Tue, 7 Apr 2020 17:48:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D0=B8?= =?UTF-8?q?=20=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=83=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20=D0=B2=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=D1=85,=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=BE=D0=BB=D0=B8=D1=80=D1=83=D1=8E=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BF=D1=80=D0=B8=20=D1=81=D1=82=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D0=B5,=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D1=8F=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BF=D1=80=D0=B8=20=D0=B4=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=83=D0=BF=D0=B5=20=D0=BA=20WEB-=D0=A1=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.js | 4 ++++ config_default.js | 4 ++++ core/app.js | 5 +++++ core/in_queue.js | 6 ++++-- models/obj_config.js | 18 ++++++++++++++++++ models/prms_in_queue.js | 10 +++++++++- 6 files changed, 44 insertions(+), 3 deletions(-) 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,