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,