Версия и релиз сервера приложений указываются в настройках, протоколируются при старте, выводятся при доступе к WEB-Серверу

This commit is contained in:
Mikhail Chechnev 2020-04-07 17:48:45 +03:00
parent 72cbe53eda
commit e93115509a
6 changed files with 44 additions and 3 deletions

View File

@ -9,6 +9,10 @@
//Общие параметры
let common = {
//Версия сервера приложений
sVersion: "8.5.6.1",
//Релиз сервера приложений
sRelease: "2020.04.02",
//Таймаут останова сервера (мс)
nTerminateTimeout: 60000
};

View File

@ -9,6 +9,10 @@
//Общие параметры
let common = {
//Версия сервера приложений
sVersion: "8.5.6.1",
//Релиз сервера приложений
sRelease: "2020.04.02",
//Таймаут останова сервера (мс)
nTerminateTimeout: 60000
};

View File

@ -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,

View File

@ -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(
`<html><body><center><br><h1>Сервер приложений ПП Парус 8</h1><h3>Сервис: ${srvs.sName}</h3></center></body></html>`
`<html><body><center><br><h1>Сервер приложений ПП Парус 8<br>(${this.common.sVersion} релиз ${this.common.sRelease})</h1><h3>Сервис: ${srvs.sName}</h3></center></body></html>`
);
});
//Для всех статических функций сервиса...
@ -435,7 +437,7 @@ class InQueue extends EventEmitter {
//Запросы на адреса, не входящие в состав объявленных сервисов - 404 NOT FOUND
this.webApp.use("*", (req, res) => {
res.status(404).send(
"<html><body><center><br><h1>Сервер приложений ПП Парус 8</h1><h3>Запрошенный адрес не найден</h3></center></body></html>"
`<html><body><center><br><h1>Сервер приложений ПП Парус 8<br>(${this.common.sVersion} релиз ${this.common.sRelease})</h1><h3>Запрошенный адрес не найден</h3></center></body></html>`
);
});
//Ошибки, не отработанные индивидуальными обработчиками - 500 SERVER ERROR

View File

@ -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,

View File

@ -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,