/* Сервис интеграции ПП Парус 8 с WEB API Модели данных: описатель объекта конфигурации приложения */ //---------------------- // Подключение библиотек //---------------------- const Schema = require("validate"); //Схемы валидации //------------- // Тело модуля //------------- //Функция проверки длины значения наименование сервера приложений const validateServerName = val => val.length <= 40; //Функция проверки значения таймаута останова сервера 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({ //Наименование сервера приложений sServerName: { type: String, required: false, use: { validateServerName }, message: { type: path => `Наименование сервера приложений (${path}) имеет некорректный тип данных (ожидалось - String)`, validateServerName: path => `Длина наименования сервера приложений (${path}) не может превышать 40 символов` } }, //Версия сервера приложений 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;