P8-ExchangeService/models/obj_config.js

419 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 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`
}
}
});
//Схема валидации параметров подключения к БД
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`
}
}
});
//Схема валидации параметров обработки очереди входящих сообщений
const inComing = new Schema({
//Порт сервера входящих сообщений
nPort: {
type: Number,
required: true,
use: { validateInComingPort },
message: {
type: path =>
`Порт сервера входящих сообщений (${path}) имеет некорректный тип данных (ожидалось - Number)`,
required: path => `Не указан порт сервера входящих сообщений (${path})`,
validateInComingPort: path =>
`Порт сервера входящих сообщений (${path}) должен быть целым числом в диапазоне от 0 до 65535`
}
},
//Максимальный размер входящего сообщения (мб)
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})`
}
},
//Имя пользователя 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})`
}
},
//Наименование отправителя для исходящих сообщений
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;