443 lines
26 KiB
JavaScript
443 lines
26 KiB
JavaScript
/*
|
||
Сервис интеграции ПП Парус 8 с WEB API
|
||
Модели данных: описатель объекта конфигурации приложения
|
||
*/
|
||
|
||
//----------------------
|
||
// Подключение библиотек
|
||
//----------------------
|
||
|
||
const Schema = require("validate"); //Схемы валидации
|
||
|
||
//-------------
|
||
// Тело модуля
|
||
//-------------
|
||
|
||
//Функция проверки значения таймаута останова сервера
|
||
const validateTerminateTimeout = val => val >= 1000 && val <= 120000 && Number.isInteger(val);
|
||
|
||
//Функция проверки значения размера блока одновременно обрабатываемых исходящих сообщений
|
||
const validateMaxWorkers = val => val >= 1 && val <= 100 && Number.isInteger(val);
|
||
|
||
//Функция проверки значения интервала проверки наличия исходящих сообщений
|
||
const validateCheckTimeout = val => val >= 1 && val <= 60000 && Number.isInteger(val);
|
||
|
||
//Функция проверки значения порта сервера обслуживания входящих сообщений
|
||
const validateInComingPort = val => val >= 0 && val <= 65535 && Number.isInteger(val);
|
||
|
||
//Функция проверки значения порта сервера обслуживания входящих сообщений
|
||
const validateMsgMaxSize = val => val >= 1 && val <= 1000 && Number.isInteger(val);
|
||
|
||
//Функция проверки значения минимального размера пула подключений к БД для обработчика исходящих сообщений
|
||
const validatePoolMinOutGoing = val => val >= 0 && val <= 10;
|
||
|
||
//Функция проверки значения максимального размера пула подключений к БД для обработчика исходящих сообщений
|
||
const validatePoolMaxOutGoing = val => val >= 1 && val <= 10;
|
||
|
||
//Функция проверки значения шага инкремента подключений к БД в пуле обработчика исходящих сообщений
|
||
const validatePoolIncrementOutGoing = val => val >= 0 && val <= 10;
|
||
|
||
//Функция проверки значения минимального размера пула подключений к БД для обработчика входящих сообщений
|
||
const validatePoolMinInComing = val => val >= 0 && val <= 1000;
|
||
|
||
//Функция проверки значения максимального размера пула подключений к БД для обработчика входящих сообщений
|
||
const validatePoolMaxInComing = val => val >= 1 && val <= 1000;
|
||
|
||
//Функция проверки значения шага инкремента подключений к БД в пуле обработчика входящих сообщений
|
||
const validatePoolIncrementInComing = val => val >= 0 && val <= 1000;
|
||
|
||
//Схема валидации общих параметров сервера приложений
|
||
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,
|
||
required: true,
|
||
use: { validateTerminateTimeout },
|
||
message: {
|
||
type: path => `Таймаут останова сервера (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан таймаут останова сервера (${path})`,
|
||
validateTerminateTimeout: path => `Таймаут останова сервера (${path}) должен быть целым числом в диапазоне от 1000 до 120000`
|
||
}
|
||
},
|
||
//Контроль версии Системы
|
||
bControlSystemVersion: {
|
||
type: Boolean,
|
||
required: true,
|
||
message: {
|
||
type: path => `Признак контроля версии Системы (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||
required: path => `Не указан признак контроля версии Системы (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации параметров подключения к БД
|
||
const dbConnect = new Schema({
|
||
//Пользователь БД
|
||
sUser: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Имя пользователя БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано имя пользователя БД (${path})`
|
||
}
|
||
},
|
||
//Пароль пользователя БД
|
||
sPassword: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Пароль пользователя БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан пароль пользователя БД (${path})`
|
||
}
|
||
},
|
||
//Схема размещения используемых объектов БД
|
||
sSchema: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Схема размещения используемых объектов БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указана схема размещения используемых объектов БД (${path})`
|
||
}
|
||
},
|
||
//Строка подключения к БД
|
||
sConnectString: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Строка подключения к БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указана строка подключения к БД (${path})`
|
||
}
|
||
},
|
||
//Наименование сервера приложений в сессии БД
|
||
sSessionAppName: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Наименование сервера приложений в сессии БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано наименование сервера приложений в сессии БД (${path})`
|
||
}
|
||
},
|
||
//Наименование подключаемого модуля обслуживания БД
|
||
sConnectorModule: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Наименование подключаемого модуля обслуживания БД (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано наименование подключаемого модуля обслуживания БД (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации параметров обработки очереди исходящих сообщений
|
||
const outGoing = new Schema({
|
||
//Проверять SSL-сертификаты адресов отправки сообщений (самоподписанные сертификаты будут отвергнуты)
|
||
bValidateSSL: {
|
||
type: Boolean,
|
||
required: true,
|
||
message: {
|
||
type: path => `Признак проверки SSL-сертификатов адресов отправки сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан признак проверки SSL-сертификатов адресов отправки сообщений (${path})`
|
||
}
|
||
},
|
||
//Количество одновременно обрабатываемых исходящих сообщений
|
||
nMaxWorkers: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validateMaxWorkers },
|
||
message: {
|
||
type: path => `Количество одновременно обрабатываемых исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указано количество одновременно обрабатываемых исходящих сообщений (${path})`,
|
||
validateMaxWorkers: path =>
|
||
`Количество одновременно обрабатываемых исходящих сообщений (${path}) должно быть целым числом в диапазоне от 1 до 100`
|
||
}
|
||
},
|
||
//Интервал проверки наличия исходящих сообщений (мс)
|
||
nCheckTimeout: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validateCheckTimeout },
|
||
message: {
|
||
type: path => `Интервал проверки наличия исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан интервал проверки наличия исходящих сообщений (${path})`,
|
||
validateCheckTimeout: path =>
|
||
`Значение интервала проверки наличия исходящих сообщений (${path}) должно быть целым числом в диапазоне от 100 до 60000`
|
||
}
|
||
},
|
||
//Минимальный размер пула подключений к БД для обработчика исходящих сообщений
|
||
nPoolMin: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolMinOutGoing },
|
||
message: {
|
||
type: path =>
|
||
`Минимальный размер пула подключений к БД для обработчика исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан минимальный размер пула подключений к БД для обработчика исходящих сообщений (${path})`,
|
||
validatePoolMinOutGoing: path =>
|
||
`Значение минимального размера пула подключений к БД для обработчика исходящих сообщений (${path}) должно быть целым числом в диапазоне от 0 до 10`
|
||
}
|
||
},
|
||
//Максимальный размер пула подключений к БД для обработчика исходящих сообщений
|
||
nPoolMax: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolMaxOutGoing },
|
||
message: {
|
||
type: path =>
|
||
`Максимальный размер пула подключений к БД для обработчика исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан максимальный размер пула подключений к БД для обработчика исходящих сообщений (${path})`,
|
||
validatePoolMaxOutGoing: path =>
|
||
`Значение максимального размера пула подключений к БД для обработчика исходящих сообщений (${path}) должно быть целым числом в диапазоне от 1 до 10`
|
||
}
|
||
},
|
||
//Шаг инкремента подключений к БД в пуле обработчика исходящих сообщений
|
||
nPoolIncrement: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolIncrementOutGoing },
|
||
message: {
|
||
type: path =>
|
||
`Шаг инкремента подключений к БД в пуле обработчика исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан шаг инкремента подключений к БД в пуле обработчика исходящих сообщений (${path})`,
|
||
validatePoolIncrementOutGoing: path =>
|
||
`Значение шага инкремента подключений к БД в пуле обработчика исходящих сообщений (${path}) должно быть целым числом в диапазоне от 0 до 10`
|
||
}
|
||
},
|
||
//Глобальный адрес прокси-сервера
|
||
sProxy: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path => `Адрес прокси-сервера приложения (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан глобальный адрес прокси-сервера (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации параметров обработки очереди входящих сообщений
|
||
const inComing = new Schema({
|
||
//Порт сервера входящих сообщений
|
||
nPort: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validateInComingPort },
|
||
message: {
|
||
type: path => `Порт сервера входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан порт сервера входящих сообщений (${path})`,
|
||
validateInComingPort: path => `Порт сервера входящих сообщений (${path}) должен быть целым числом в диапазоне от 0 до 65535`
|
||
}
|
||
},
|
||
sHost: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `IP-адрес сервера приложений (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан IP-адрес сервера приложений (${path})`
|
||
}
|
||
},
|
||
//Максимальный размер входящего сообщения (мб)
|
||
nMsgMaxSize: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validateMsgMaxSize },
|
||
message: {
|
||
type: path => `Максимальный размер входящего сообщения (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан максимальный размер входящего сообщения (${path})`,
|
||
validateMsgMaxSize: path => `Максимальный размер входящего сообщения (${path}) должен быть целым числом в диапазоне от 1 до 1000`
|
||
}
|
||
},
|
||
//Каталог размещения статических ресурсов
|
||
sStaticDir: {
|
||
type: String,
|
||
required: true,
|
||
message: {
|
||
type: path => `Каталог размещения статических ресурсов (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан каталог размещения статических ресурсов (${path})`
|
||
}
|
||
},
|
||
//Минимальный размер пула подключений к БД для обработчика входящих сообщений
|
||
nPoolMin: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolMinInComing },
|
||
message: {
|
||
type: path =>
|
||
`Минимальный размер пула подключений к БД для обработчика входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан минимальный размер пула подключений к БД для обработчика входящих сообщений (${path})`,
|
||
validatePoolMinInComing: path =>
|
||
`Значение минимального размера пула подключений к БД для обработчика входящих сообщений (${path}) должно быть целым числом в диапазоне от 0 до 1000`
|
||
}
|
||
},
|
||
//Максимальный размер пула подключений к БД для обработчика входящих сообщений
|
||
nPoolMax: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolMaxInComing },
|
||
message: {
|
||
type: path =>
|
||
`Максимальный размер пула подключений к БД для обработчика входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан максимальный размер пула подключений к БД для обработчика входящих сообщений (${path})`,
|
||
validatePoolMaxInComing: path =>
|
||
`Значение максимального размера пула подключений к БД для обработчика входящих сообщений (${path}) должно быть целым числом в диапазоне от 1 до 1000`
|
||
}
|
||
},
|
||
//Шаг инкремента подключений к БД в пуле обработчика входящих сообщений
|
||
nPoolIncrement: {
|
||
type: Number,
|
||
required: true,
|
||
use: { validatePoolIncrementInComing },
|
||
message: {
|
||
type: path =>
|
||
`Шаг инкремента подключений к БД в пуле обработчика входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан шаг инкремента подключений к БД в пуле обработчика входящих сообщений (${path})`,
|
||
validatePoolIncrementInComing: path =>
|
||
`Значение шага инкремента подключений к БД в пуле обработчика входящих сообщений (${path}) должно быть целым числом в диапазоне от 0 до 1000`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации параметров отправки E-Mail уведомлений
|
||
const mail = new Schema({
|
||
//Адреc сервера SMTP
|
||
sHost: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path => `Адреc сервера SMTP (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан aдреc сервера SMTP (${path})`
|
||
}
|
||
},
|
||
//Порт сервера SMTP
|
||
nPort: {
|
||
type: Number,
|
||
required: false,
|
||
message: {
|
||
type: path => `Порт сервера SMTP (${path}) имеет некорректный тип данных (ожидалось - Number)`,
|
||
required: path => `Не указан порт сервера SMTP (${path})`
|
||
}
|
||
},
|
||
//Использовать безопасное соединение STMP
|
||
bSecure: {
|
||
type: Boolean,
|
||
required: true,
|
||
message: {
|
||
type: path => `Признак использования безопасного соединения SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||
required: path => `Не указан признак использования безопасного соединения SMTP (${path})`
|
||
}
|
||
},
|
||
//Имя пользователя SMTP-сервера
|
||
sUser: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path => `Имя пользователя SMTP-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано имя пользователя SMTP-сервера (${path})`
|
||
}
|
||
},
|
||
//Пароль пользователя SMTP-сервера
|
||
sPass: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path => `Пароль пользователя SMTP-сервера (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указан пароль пользователя SMTP-сервера (${path})`
|
||
}
|
||
},
|
||
//Поддерживать самоподписанные сертификаты при проверке безопасности
|
||
bRejectUnauthorized: {
|
||
type: Boolean,
|
||
required: true,
|
||
message: {
|
||
type: path => `Признак поддержки самоподписанных сертификатов SMTP (${path}) имеет некорректный тип данных (ожидалось - Boolean)`,
|
||
required: path => `Не указан признак поддержки самоподписанных сертификатов SMTP (${path})`
|
||
}
|
||
},
|
||
//Наименование отправителя для исходящих сообщений
|
||
sFrom: {
|
||
type: String,
|
||
required: false,
|
||
message: {
|
||
type: path => `Наименование отправителя для исходящих сообщений (${path}) имеет некорректный тип данных (ожидалось - String)`,
|
||
required: path => `Не указано наименование отправителя для исходящих сообщений (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//Схема валидации файла конфигурации
|
||
const config = new Schema({
|
||
//Общие параметры
|
||
common: {
|
||
schema: common,
|
||
required: true,
|
||
message: {
|
||
required: path => `Не указаны общие параметры конфигурации сервера приложений (${path})`
|
||
}
|
||
},
|
||
//Параметры подключения к БД
|
||
dbConnect: {
|
||
schema: dbConnect,
|
||
required: true,
|
||
message: {
|
||
required: path => `Не указаны параметры подключения к БД (${path})`
|
||
}
|
||
},
|
||
//Параметры обработки очереди исходящих сообщений
|
||
outGoing: {
|
||
schema: outGoing,
|
||
required: true,
|
||
message: {
|
||
required: path => `Не указаны параметры обработки очереди исходящих сообщений (${path})`
|
||
}
|
||
},
|
||
//Параметры обработки очереди входящих сообщений
|
||
inComing: {
|
||
schema: inComing,
|
||
required: true,
|
||
message: {
|
||
required: path => `Не указаны параметры обработки очереди входящих сообщений (${path})`
|
||
}
|
||
},
|
||
//Параметры отправки E-Mail уведомлений
|
||
mail: {
|
||
schema: mail,
|
||
required: true,
|
||
message: {
|
||
required: path => `Не указаны параметры отправки E-Mail уведомлений (${path})`
|
||
}
|
||
}
|
||
});
|
||
|
||
//------------------
|
||
// Интерфейс модуля
|
||
//------------------
|
||
|
||
//Схема валидации общих параметров сервера приложений
|
||
exports.common = common;
|
||
//Схема валидации записи журнала работы сервиса обмена
|
||
exports.dbConnect = dbConnect;
|
||
//Схема валидации параметров обработки очереди исходящих сообщений
|
||
exports.outGoing = outGoing;
|
||
//Схема валидации параметров обработки очереди входящих сообщений
|
||
exports.inComing = inComing;
|
||
//Схема валидации параметров отправки E-Mail уведомлений
|
||
exports.mail = mail;
|
||
//Схема валидации файла конфигурации
|
||
exports.config = config;
|