# Конфигурирование приложения

## Введение

Механизм конфигурирования lexema 8.4  представлен отдельным пакетом с названием ecosoft-lexema8-config.

## Настройка сервисов

### db

Раздел содержит описание профилей подключения к базам данных, которые используются в приложении:

- **main** - профиль подключения к основной базе данных по умолчанию.
    - `host` - имя хоста.
    - `database` - имя базы данных.
    - `dialect` - диалект СУБД.
    - `instanceName` - имя экземпляра.
    - `port` - порт сервера БД.
    - `user` - логин.
    - `password` - пароль.
    - `encrypt` - позволяет установить зашифрованное соединение с SQL-сервером (по умолчанию false - шифрование выключено). Настройка доступна, если свойство `dialect` равно 'mssql'.
    - `isolationLevel` - уровень изоляции транзакций. Доступные значения: 'READ_UNCOMMITTED', 'READ_COMMITTED', 'REPEATABLE_READ', 'SERIALIZABLE'. По умолчанию 'READ_UNCOMMITTED'.
    - `requestTimeout` - время таймаута запросов в миллисекундах. По умолчанию 15000.
    - `applicationName` - значение строки подключения для ведения журнала сервера БД. По умолчанию ara.
    - `pool` - настройки пула соединений:
        - `max` - максимальное количество соединений в пуле. По умолчанию 20.
        - `min` - минимальное количество соединений в пуле. По умолчанию 0.
        - `idleTimeoutMillis` - максимальное время в миллисекундах, которое будет простаивать соединение в пуле, прежде чем будет освобождено. По умолчанию 10000.
- **radio** - "in-memory" режим локальной базы данных SQLite с отключенным логированием, используется персистором для хранения недоставленных сообщений.
- **session** - настройки подключения к локальному экземпляру Redis для хранения сессии.
    - `host` - имя хоста (по умолчанию 'localhost').
    - `port` - порт для запуска (по умолчанию 6389).
    - `db` - идентификатор базы для Redis (по умолчанию 0).

При заполнении дополнительных профилей подключения необходимо заполнять все перечисленные настройки, поскольку значения по умолчанию устанавливаются только для профиля с именем `main`.

### common

"Общие" настройки, описывающие пути и шаблоны расположения объектов бизнес-логики.

- **context** - путь к каталогу, который является "контекстом" для разрешения относительных путей (по умолчанию 'source'). Если путь является относительным, то будет добавлен к текущему рабочему каталогу.
- **external** - объект, задающий пути к файлам с описанием внешних зависимостей.
  - `manual` - файл, заполняемый вручную (по умолчанию - `external-manual.json`).
  - `auto` - файл, заполняемый автоматически при сборке (по умолчанию - `external-auto.json`).
- **logging** - настройки логирования.
  - `allowSilent` - включить/выключить логирование (по умолчанию `false`).
  - `level` - задает минимальный уровень логируемых событий. Доступные значения в порядке возрастания значимости: `silly`, `debug`, `verbose`, `info`, `warn`, `error`.
- **models** - glob, описывающий расположение моделей (по умолчанию - `models/**/*.js`).
- **output** - может быть как строкой, так и объектом.
  - Если строка: путь к каталогу для размещения сборок документации, а также клиентской и серверной части (по умолчанию - `build`). Если путь является относительным, то будет добавлен к каталогу, в котором расположен каталог `context`.
  - Если объект: может содержать свойства `client`, `server` и `docs`, представляющие собой пути к расположению каталогов для вывода файлов клиента, сервера и документации. Если пути относительные - то будут добавлены к каталогу, в котором расположен каталог `context`.
- **queries** - glob, описывающий расположение запросов (по умолчанию - `queries/**/*.js`).
- **reportsDir** - glob, описывающий расположение отчетов в контексте каталога отчетов (по умолчанию - `*.report`).
- **externalReportsDir** - Название папки внешних отчетов проекта jsreport. По умолчанию `external`.
- **internalReportsDir** - Название папки внутренних отчетов проекта jsreport. По умолчанию `internal`.
- **jsreports** - glob, описывающий расположение отчетов (jsreport) (по умолчанию - `**/!(*.*)`).
- **reportsDir** - путь к каталогу с отчетами (по умолчанию - `reports`).
- **sqlObjects** - glob, описывающий расположение sql-объектов в контексте каталога sql-объектов (по умолчанию - `*.sql`).
- **sqlObjectsDir** - путь к каталогу с объектами sql-сервера (по умолчанию - `sqlObjects`).
- **units** - путь к файлу с описанием юнитов (по умолчанию - `units.json`).
- **dashboardTemplates** - путь к каталогу с шаблонами дашборда (по умолчанию - `dashboardTemplates`).

### bus

Настройки "Шины" для взаимодействия между сервисами.

- **`protocol`** - используемый протокол (по умолчанию 'amqp').
- **`hostname`** - имя хоста (по умолчанию 'localhost').
- **`port`** - порт для запуска (по умолчанию 5682).
- **`username`** - логин.
- **`password`** - пароль.
- **`requestTimeout`** - время ожидания ответа от слушателя.

### front

Настройки клиентской части приложения.

- **theme** - имя пакета, содержащего тему оформления (по умолчанию - 'ecosoft-lexema8-main-theme').
- **controls** - перечень наборов контролов (по умолчанию - 'ecosoft-lexema8' ).
    - Если элемент массива - строка, то она будет использована как путь для импорта конструктора контрола, относящемуся к данному набору. Манифест набора будет загружен по пути `{module_path}/lib/controls.manifest.json`.
    - Если элемент массива - объект, то в качестве пути для импорта конструктора контрола будет использовано значение свойства `modulePath`, а в качестве пути для загрузки манифеста будет использовано значение свойства `manifestPath`.
- **publicPath** - настройка "публичного пути" для производственной сборки клиента (по умолчанию - '/client/' ).
- **sourcemap** - флаг, обозначающий необходимость генерации карт кода (по умолчанию - true ).
- **es** - настройки используемой версии ECMAScript (по умолчанию - 'legacy' ). Перекрывается опцией "ie" интерфейса командной строки.
    - `legacy` - с поддержкой IE11.
    - `modern` - без поддержки IE11.
- **helpUrl** - "базовая" ссылка для кнопки "Справка".
- **autoLogin** - если значение true, то клиент автоматически авторизуется под аккаунтом, который указан в сервисе gate (по умолчанию false ).
- **enableSSO** - флаг, обозначающий доступность sso аутентификации на клиенте (автоматический вход на странице логина).
- **adfsAuthType** - Устанавливает тип авторизации через портал сервера федерации. Доступные значения: `saml`, `openid`. (по умолчанию отключено).
- **pingOneAuthType** - Устанавливает тип авторизации через портал PingOne. Доступные значения: `openid`. (по умолчанию отключено).
- **disableMiddleNameValidation** - позволяет отключить проверку заполнения отчества при создании нового пользователя и в личном кабинете (по умолчанию false).
- **browserTabTitle** - заголовок вкладки браузера (по умолчанию - 'lexema' ).
- **disabledPersonalDataFields** - массив, который содержит список атрибутов пользователя, которые необходимо запретить для редактирования в личном кабинете (По умолчанию - [] ). Доступные атрибуты: `LastName` - фамилия, `FirstName` - имя, `MiddleName` - отчество, `PhoneNumber` - номер телефона.
- **googleMaps** - настройки контрола GoogleMaps (по умолчанию undefined).
    - `key` - ключ для работы с Google Maps API, способ получения описан в статье.
    - `version` - версия Google Maps, рекомендуется ставить квартальное обновление "quarterly".
    - `language` - язык интерфейса. Для русского языка необходимо указать "ru". Поддерживаемые языки.
    - `region` - регион использования. Для России необходимо указать "RU".
- **allowRegistration** - задает отображение кнопки регистрации на странице входа (используется для внешней регистрации пользователей).
- **registration** - настройки для внешней регистрации.
    - `url` - хост регистрационного сайта.
    - `urlPath` - дополнение к url с путем к форме заявки на регистрацию (по умолчанию пустая строка).
    - `login` - логин пользователя с доступом к форме заявки на регистрационном сайте.
    - `password` - пароль пользователя с доступом к форме заявки на регистрационном сайте.

### lib

Настройки разработки прикладных библиотек

- **_aliases_** - словарь дополнительных псевдонимов. По умолчанию перед тестированием демо приложения необходимо выполнить предварительную сборку библиотеки. Чтобы избежать этого, можно прописать псевдоним, который позволит использовать исходные файлы. Пропишите в качестве ключа имя библиотеки, в качестве значения укажите путь к папке, где находятся исходные файлы относительно конфигурационного файла.
- **_copying_** - настройки [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) для публикации дополнительных файлов.
- **_externals_** - список внешних зависимостей, которые будут исключены из бэндла библиотеки (по умолчанию - `[]`)
- **_name_** - имя библиотеки (в качестве него выступает название пакета; использование имён, отличных от названий пакета в данный момент не поддерживатеся).
- **_source_** - путь к каталогу с исходниками библиотеки относительно корня проекта (по умолчанию - `'source'`).
- **_manifests_** - используемые файлы манифеста из различных библиотек (по умолчанию `['ecosoft-lexema8']`).

### moxie

Настройки сервера разработки.

- **_port_** - порт для запуска (по умолчанию - `3333`).

### jsreportEditor

- **_port_** - порт для запуска (по умолчанию - `3069`).
- **_protocol_** - протокол (по умолчанию - `http`).

## Конфигурирование веб-сервисов приложения

Раздел описывает конфигурирование веб-сервисов приложения

### config

Настройки сервиса конфигурации.

- `protocol` - используемый веб-протокол (по умолчанию 'http').
- `host` - имя хоста (по умолчанию 'localhost').
- `port` - порт для запуска (по умолчанию 3081).
- `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8-configuration-service').
- `noProxify` - настройка проксирования сервиса (по умолчанию true).
- `useCredentialVault` - флаг использования хранилища учетных записей Windows (по умолчанию false).
- `keys` - используемые ключи хранилища учетных записей Windows (по умолчанию []).

### logic

Настройки сервиса логики.

- `protocol` - используемый веб-протокол (по умолчанию 'http').
- `host` - имя хоста (по умолчанию 'localhost').
- `port` - порт для запуска (по умолчанию 3061).
- `route` - используемый маршрут (по умолчанию '/api/v2.0/gate').
- `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8/gate').
- `sessionLifeTime` - время жизни сессии в минутах (по умолчанию 10).
- `refreshTokenLifeTime` - срок действия токена обновления в днях (по умолчанию 15).
- `userTokenLifeTime` - устанавливает время действия токена восстановления пароля или кода входа при двухфакторной аутентификации в часах (по умолчанию 1). Можно задавать дробные числа, чтобы указать минуты и/или секунды.
- `failedPasswordAttemptsInterval` - время в секундах, через которое пользователь может повторить вход в приложение при неудачной попытке ввода пароля (по умолчанию 0 - без ограничений по времени).
- `attemptsLimitForConfirmCode` - количество попыток ввода токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию 0). Если значение равно 0, то количество попыток не ограничено.
- `timeLimitForResendingConfirmCode` - лимит времени (в секундах) для возможности повторной отправки токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию 0 - без ограничений по времени). Настройка влияет на доступность кнопки отправки кода. На сервере проверка не осуществляется.
- `userTokenProvider` - имя провайдера восстановления пароля (по умолчанию 'Email'). Доступные значения: Email, Phone.
- `secret` - уникальный секретный ключ, на основе которого шифруется сессия.
- `validation` - настройки валидации пароля и логина пользователя.
  - `passwordRegularExpression` - регулярное выражение для проверки пароля (по умолчанию /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,}$/).
  - `invalidPasswordMessage` - сообщение, отображаемое пользователю при вводе невалидного пароля (по умолчанию 'Пароль должен содержать строчные и прописные буквы, а также цифры. Минимальная длина 8 символов').
  - `userNameRegularExpression` - регулярное выражение для проверки логина (по умолчанию /^(?=.{8,20}$)[a-zA-Z0-9]+(?:[._][a-zA-Z0-9]+)*$/).
  - `invalidUserNameMessage` - сообщение, отображаемое пользователю при вводе невалидного логина (по умолчанию 'Логин должен содержать только латинские буквы или цифры. Минимальная длина 8 символов').
- `cookieName` - задает имя cookie для хранения идентификатора сессии (по умолчанию 'ara-session').
- `passwordExpiration` - задает срок действия пароля пользователя в днях, значение 0 отключает проверку (по умолчанию 0).
- `externalRegistrationHost` - указывается адрес основного сайта, если текущий сайт используется для регистрации пользователей.
- `autoLogin` - настройки для автоматической авторизации клиента.
- `userName` - логин пользователя, под которым произойдет вход в приложение.

### LDAP

Yастройки доменной авторизации

- `url` - адрес контроллера домена. Пример: ldap(s)://domain:port.
- `bindDN` - логин администратора домена. В случае пустой строки будет произведена попытка анонимного подключения.
- `bindCredentials` - пароль администратора домена.
- `searchBase` - описание базового имени, откуда начинается поиск пользователей. Пример: ou=users,dc=example,dc=org.
- `searchFilter` - описание фильтра LDAP для поиска пользователей.
- `searchAttributes` - список атрибутов, возвращаемых контроллером домена при удачном поиске.
- `updateUserAttributes` - включает/выключает автоматическое обновление атрибутов пользователя (которые получены из контроллера домена) в системной таблице (по умолчанию true).
- `ldapSchemeDictionary` - словарь сопоставления атрибутов пользователя лексемы с полями, которые возвращаются контроллером домена после поиска пользователя. Используются для обновления данных в таблице пользователей при получении списка пользователей из контроллера домена. Доступные атрибуты для сопоставления: firstName, lastName, middleName, email, phoneNumber. Пример: ldapSchemeDictionary: { email: 'mail', phoneNumber: 'mobile' }.

### ADFS

Настройки авторизации через портал ADFS:

- `openid` - раздел, содержащий настройки для авторизации по схеме OpenID:
  - `configurationURL` - URL с OpenID конфигурацией федерации (чаще всего выглядит так https://fs.lex.lan/adfs/.well-known/openid-configuration).
  - `clientID` - уникальный идентификатор клиентского приложения, зарегистрированного в федерации.
  - `callbackURL` - URL возврата приложения после авторизации на портале. Для приложения на 8.4 должно выглядеть так: http(s)://[адрес сайта]/api/v2.0/gate/adfs/openid/callback (вводится при регистрации приложения в федерации).
  - `strictSSL` - устанавливает, необходимо ли валидировать SSL-сертификат при запросах к адресам федерации (по умолчанию true).
  - `userNameField` - поле, по которому будет проводится аутентификация пользователя. Зависит от схемы, используемой в доменах федерации (по умолчанию upn).
- `ssoAuthDC` - адрес контроллера домена. Пример: `ldap(s)://domain:port`.
- `enableChangePasswordOnFirstLogin` - включение необходимости смены пароля при первом входе пользователя после регистрации.
- `twoFactorProvider` - провайдер двухфакторной аутентификации. Доступные значения: `none`, `email`, `phone`. В случае установки значения `none` считается выключенной. (по умолчанию 'none').
- `oauth2` - настройки oauth2-сервера.
- `multipleSessions` - включает/выключает поддержку множественных сессий для пользователя (по умолчанию `true`).
- `pingOne` - раздел, содержащий настройки авторизации через портал PingOne.
- `openid` - раздел, содержащий настройки для авторизации по схеме openid.
   - `clientId` - уникальный идентификатор клиентского приложения.
   - `clientSecret` - `client_secret` клиентского приложения.
   - `scope` - список передаваемых scope (пример: `'openid profile email'`).
   - `callbackUrl` - url возврата приложения после авторизации на портале. Для приложения на 8.4 должно выглядеть так: `http(s)://[адрес сайта]/api/v2.0/gate/pingone/openid/callback`.
   - `authorizationUrl` - адрес, на который перенаправляется пользователь для ввода логина и пароля.
   - `jwksEndPoint` - адрес JWKS endpoint.
   - `tokenEndpoint` - адрес token endpoint.
   - `prompt` - указывает, будет ли сервер авторизации запрашивать у конечного пользователя повторную аутентификацию (по умолчанию `none`). Доступные значения: `none`, `login`.

### gate

Настройки сервиса входа (авторизации)

- **_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию `'localhost'`).
- **_port_** - порт для запуска (по умолчанию `3061`).
- **_route_** - используемый маршрут (по умолчанию `'/api/v2.0/gate'`).
- **_script_** - путь к модулю, запускающему сервис (по умолчанию `'ecosoft-lexema8/gate'`).
- **_sessionLifeTime_** - время жизни сессии в минутах (по умолчанию `10`).
- **_refreshTokenLifeTime_** - cрок действия токена обновления в днях (по умолчанию `15`).
- **_userTokenLifeTime_** - устанавливает время действия токена восстановления пароля или кода входа при двухфакторной аутентификации в часах (по умолчанию `1`). Можно задавать дробные числа, чтобы указать минуты и/или секунды.
- **_failedPasswordAttemptsInterval_** - Время в секундах, через которое пользователь может повторить вход в приложение при неудачной попытке ввода пароля (по умолчанию `0` - без ограничений по времени).
- **_attemptsLimitForConfirmCode_** - количество попыток ввода токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию `0`). Если значение равно `0`, то количество попыток не ограничено.
- **_timeLimitForResendingConfirmCode_** - лимит времени (в секундах) для возможности повторной отправки токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию `0` - без ограничений по времени). Настройка влияет на доступность кнопки отправки кода. На сервере проверка не осуществляется.
- **_userTokenProvider_** - имя провайдера восстановления пароля (по умолчанию `'Email'`). Доступные значения: _Email, Phone._
- **_secret_** - уникальный секретный ключ, на основе которого шифруется сессия.
- **_validation_** - настройки валидации пароля и логина пользователя.
   - **_passwordRegularExpression_** - регулярное выражения для проверки пароля (по умолчанию `/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,}$/`).
   - **_invalidPasswordMessage_** - сообщение отображаемое пользователю при вводе невалидного пароля (по умолчанию `'Пароль должен содержать строчные и прописные буквы, а также цифры. Минимальная длина 8 символов'`).
   - **_userNameRegularExpression_** - регулярное выражения для проверки логина (по умолчанию `/^(?=.{8,20}$)[a-zA-Z0-9]+(?:[._][a-zA-Z0-9]+)*$/`).
   - **_invalidUserNameMessage_** - сообщение отображаемое пользователю при вводе невалидного логина (по умолчанию `'Логин должен содержать только латинские буквы или цифры. Минимальная длина 8 символов'`).
- **_cookieName_** - задает имя cookie для хранения идентификатора сессии (по умолчанию `'ara-session'`).
- **_passwordExpiration_** - задает срок действия пароля пользователя в днях, значение 0 отключает проверку (по умолчанию значение 0).
- **_externalRegistrationHost_** - указывается адрес основного сайта, елси текущий сайт используется для регистрации пользователей.
- **_autoLogin_** - настройки для автоматической авторизации клиента.
  - **_userName_** - login пользователя, под которым произойдет вход в приложение.

### radio

Настройки сервиса взаимодействия реального времени.

 - `host` - используемый веб-протокол (по умолчанию 'localhost').
   - `ws` - поддержка проксирования по веб-сокетам (по умолчанию `true`).
   - `port` - порт для запуска (по умолчанию 3062).
   - `route` - используемый маршрут (по умолчанию '/api/v2.0/radio').
   - `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8/radio').
   - `channels` - словарь используемых каналов. (по умолчанию 'ecosoft-lexema8': ['legacy']). Ключом является идентификатор канала, значением - массив имен типов сообщений.
   - `persistance` - параметры хранения отложенных сообщений.
   - `provider` - класс, обеспечивающий хранение отложенных сообщений.
   - `options` - опции.
     - `db` - имя профиля подключения к базе данных (по умолчанию 'radio').
     - `ttl` - время хранения недоставленных сообщений в минутах. (по умолчанию используется значение `applications.gate.sessionLifeTime`).

### data

Настройки сервиса данных.

- `protocol` - используемый веб-протокол (по умолчанию 'http').
   - `host` - имя хоста (по умолчанию - 'localhost').
   - `db` - имя профиля подключения к базе данных (по умолчанию - 'main').
   - `port` - порт для запуска (по умолчанию 3063).
   - `route` - используемый маршрут (по умолчанию '/api/v2.0/data').
   - `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8/data').
   - `dataSizeLimit` - максимальный размер передаваемых данных в теле запроса.

### lock

Настройки сервиса блокировок.

- **_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию `'localhost'`).
- **_port_** - порт для запуска (по умолчанию - `3064`).
- **_route_** - используемый маршрут (по умолчанию `'/api/v2.0/lock'`).
- **_script_** - путь к модулю, запускающему сервис (по умолчанию `'ecosoft-lexema8/lock'`).

### file

Настройки сервиса файлов.

- `protocol` - используемый веб-протокол (по умолчанию 'http').
   - `host` - веб-протокол (по умолчанию по умолчанию 'localhost').
   - `port` - запуска (по умолчанию 3065).
   - `route` - используемый маршрут (по умолчанию '/api/v2.0/content').
   - `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8/file').
   - `maxSize` - максимальный размер загружаемого файла на сервер (по умолчанию - '30mb').
   - `timeout` - таймаут ожидания ответа от сервиса. В режиме продакшена может потребоваться дополнительно настроить таймаут для веб-сервера (nginx).
   - `storage` - Настройка для выбора хранилища файлов. Доступные значения: `db` - хранение файлов в базе, `ftp` - хранение файлов на ftp-сервере, `smb` - хранение файлов на smb-сервере. По умолчанию `db`.
- `preview` – настройки сервиса превью (предпросмотр файлов).
   - `protocol` - используемый веб-протокол (по умолчанию 'http').
   - `host` - имя хоста (по умолчанию 'localhost').
   - `port` - порт для запуска (по умолчанию - 3084).
   - `script` - путь к модулю, запускающему сервис (рекомендуемое 'ecosoft-lexema8-preview-creator-service').
   - `fileSizeLimit` - максимальный размер конвертируемого файла (по умолчанию '30mb').
   - `maxRetry` - кол-во попыток сконвертировать файл, после которых возникнет ошибка (по умолчанию - 3).
   - `resultTTL` - время хранения готового результата (файла или ошибки) в миллисекундах, в случае отсутствия соединения для ответа (socket) (по умолчанию - 10 * 60 * 1000).
- `Post` – настройки сервиса электронной почты и смс сообщений.
   - `protocol` - используемый веб-протокол (по умолчанию 'http').
   - `host` - имя хоста (по умолчанию 'localhost').
   - `port` – порт для запуска (по умолчанию - 3066).
   - `route` - используемый маршрут (по умолчанию '/api/v2.0/post').
   - `script` - путь к модулю, запускающему сервис (по умолчанию 'ecosoft-lexema8/post').
   - `attachmentRequestTimeout` - максимальное время ожидания загрузки файла в миллисекундах (по умолчанию 1000).
   - `defaultEmailId` - идентификатор почтового ящика, который используется по умолчанию.
   - `emails` - словарь с описанием используемых почтовых ящиков. Ключом является уникальный идентификатор почтового ящика, а значением - объект со свойствами:
     - `host` - имя хоста smtp-сервера.
     - `port` - порт smtp-сервера.
     - `secure` - включить/выключить доставку по электронной почте с использованием TLS/STARTTLS (по умолчанию `false`). Доступные значение `true`, `false`. (Для 'smtp.yandex.ru' значение должно быть `true`)
     - `rejectUnauthorized` - включает/выключает проверку сертификата. По умолчанию `true`.
     - `user` - логин.
     - `pass` - пароль.
     - `userName` – имя, отображаемое при отправке почты.
   - `sms` - настройки сервиса для отправки смс (можно не описывать, если код для восстановления пароля не отправляется через смс).
     - `provider` - имя провайдера, реализующий отправку смс сообщений (по умолчанию `undefined`). Доступные значения: `proctor`, `mts`, либо путь к собственному классу.
     - `login` - логин.
     - `password` - пароль.
     - `token` - токен доступа к api (используется у провайдера "мтс коммуникатор").
     - `sender` - имя отправителя.
- `pushNotification` - настройки для интеграции с сервисом Firebase для отправки push-уведомлений. Настройки необходимо получить в личном кабинете Firebase. Перейдите в настройки вашего приложения (Project settings). В разделе Service accounts нажмите кнопку Generate new private key. Содержимое файла необходимо добавить в этот раздел.

### preview

Настройки сервиса превью (предпросмотр файлов).

- **_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию `'localhost'`).
- **_port_** - порт для запуска (по умолчанию - `3074`).
- **_script_** - путь к модулю, запускающему сервис (рекомендуемое `'ecosoft-lexema8-preview-creator-service'`).
- **_fileSizeLimit_** - максимальный размер конвертируемого файла (по умолчанию `'30mb'`).
- **_maxRetry_** - кол-во попыток сконвертировать файл, после которых возникнет ошибка (по умолчанию - `3`).
- **_resultTTL_** - время хранения готового результата (файла или ошибки) в миллисекундах, в случае отсутствия соединения для ответа (socket) (по умолчанию - `10 * 60 * 1000`).

### post

Настройки сервиса электронной почты и смс сообщений.

- **_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию `'localhost'`).
- **_port_** - порт для запуска (по умолчанию - `3066`).
- **_route_** - используемый маршрут (по умолчанию `'/api/v2.0/post'`).
- **_script_** - путь к модулю, запускающему сервис (по умолчанию `'ecosoft-lexema8/post'`).
- **_attachmentRequestTimeout_** - максимальное время ожидания загрузки файла в миллисекундах (по умолчанию `1000`).
- **_defaultEmailId_** - идентификатор почтового ящика, который используется по умолчанию.
- **_emails_** - словарь с описанием используемых почтовых ящиков. Ключом является уникальный идентификатор почтового ящика, а значением - объект со свойствами:
   - **_host_** - имя хоста smtp-сервера.
   - **_port_** - порт smtp-сервера.
   - **_secure_** - включить/выключить доставку по электронной почте с использованием TLS/STARTTLS (по умолчанию false). Доступные значение true, false. (Для 'smtp.yandex.ru' значение должно быть true)
   - **_rejectUnauthorized_** - включает/выключает проверку сертификата. По умолчанию `true`.
   - **_user_** - логин.
   - **_pass_** - пароль.
   - **_userName_** - имя отображаемое при отправке почты.
- **_sms_** - настройки сервиса для отправки смс (можно не описывать, если код для восстановления пароля не отправляется через смс).
  - provider - имя провайдера, реализующий отправку смс сообщений (по умолчанию _undefined_). Доступные значения:
     - prostor
     - mts
     - либо путь к своему собственному классу
  - **_login_** - логин.
  - **_password_** - пароль.
  - **_token_** - токен доступа к api (используется у провайдера "мтс коммуникатор").
  - **_sender_** - имя отправителя.
- **_pushNotification_** - настройки для интеграции с сервисом firebase для отправки push-уведомлений. Насройки необходимо получить в личном кабинете firebase. Перейдите в настройки вашего приложения (Project settings). В разделе Service accounts нажмите кнопку Generate new private key. Содержимое файла необходимо добавить в этот раздел.

### dxreport-iis-application

Настройки web-приложения для работы с devexpress-отчетами.

**_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
**_host_** - имя хоста (по умолчанию `'localhost'`).
**_port_** - порт для запуска (по умолчанию - `3067`).
**_route_** - используемый маршрут (по умолчанию `'/api/v2.0/report'`).
**_xtraReport_** - использование DevExpress отчетов (по умолчанию `true`).

### jsreport

Настройки сервиса отчетов jsreport.

- `protocol` - используемый веб-протокол (по умолчанию 'http').
- **`host`** - имя хоста (по умолчанию 'localhost').
- `port` - порт для запуска (рекомендуемое - 3080).
- `route` - используемый маршрут (по умолчанию '/api/v2.0/jsreport').
- `script` - путь к модулю, запускающему сервис (рекомендуемое 'ecosoft-lexema8-jsreport-service').
- `editor` - настройки редактора отчета.
  - **`port`** - порт для запуска (по умолчанию 3069).
  - **`protocol`** - протокол (по умолчанию http).
- `core` - настройки библиотеки jsreport-core для сервиса отчетов. Редактор отчетов использует только настройки раздела extensions.
- `store` - настройки для хранения отчетов.
  - `provider` - задает один из возможных вариантов для хранения отчетов. Доступно только значение 'fs' (хранение в файловой системе).
- `templatingEngines` - настройки компоненты, выполняющей задачи рендеринга.
  - `strategy` - стратегия для рендеринга отчетов. Доступные значения: 'dedicated-process', 'http-server', 'in-process' (по умолчанию 'in-process').
- `extensions` - словарь используемых модулей для сервиса отчетов и редактора (редактор некоторые модули может подключать со своими настройками).
- `fs-store` - хранение отчетов в файловой системе.
  - `syncModifications` - сброс кэша при изменении отчета (по умолчанию false). В редакторе отчетов эта настройка всегда передается со значением false.
- `chrome-pdf` - создание pdf-отчетов с использованием headless chrome.
  - `launchOptions` - настройки запуска.
  - `args` - массив аргументов (по умолчанию ['--no-sandbox']).
- `handlebars` - движок для описания макета шаблона (по умолчанию {}).
- `text` - создание текстовых отчетов (по умолчанию {}).
- `xlsx` - создание excel-отчетов (по умолчанию {}).
- `html-to-xlsx` - создание excel-отчетов из html (по умолчанию {}).
- `templates` - хранение и поиск шаблонов (по умолчанию {}).
- `child-templates` - использование вложенных шаблонов (по умолчанию {}).
- `assets` - встраивание статических ресурсов, таких как стили, шрифты или HTML (по умолчанию {}).
- `data` - возможность привязки данных к шаблону (по умолчанию {}).

### scheduler
Настройки сервиса планировщика задач
- `protocol` - используемый веб-протокол (по умолчанию 'http').
- `host` - имя хоста (по умолчанию 'localhost').
- `port` - порт для запуска (рекомендуемое - 3085).
- `clientInfo` – Объект, содержащий данные для получения токенов для работы с приложением.
  - `clientId` - id стороннего приложения. Указанный id не рекомендуется использовать для других сторонних приложений.
  - `clientSecret` - секретный ключ стороннего приложения.
  - `defaultUser` - ключ пользователя из объекта users для работы с приложением.
- `users` – объект, содержащий данные о пользователях для работы с приложением. Пример:
```bash
default: { _// default - ключ пользователя_
  userName: %Имя пользователя%,
  password: %Пароль пользователя%
```
- `functions` - массив названий подключаемых к сервису пакетов функций.
- `attemptsLimit` - количество попыток инициализации сервиса (по умолчанию 6).
- `beginTimeout` - таймаут между попытками инициализации сервиса (по умолчанию 1000).

### dss

Настройки сервиса работы с электронными подписями

- **_protocol_** - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию `'localhost'`).
- **_port_** - порт для запуска (по умолчанию - `3076`).
- **_route_** - используемый маршрут (по умолчанию `'/api/v2.0/dss'`).
- **_script_** - путь к модулю, запускающему сервис (рекомендуемое `'ecosoft-lexema8-dss-service'`).
- **_kontur_** - настройки для интеграции с СКБ Контур.
  - **_key_** - ключ для доступа к тестовой площадке контура.
  - **_cryptoApiUrl_** - адрес, по которому доступно Crypto API контура. При работе с тестовой площадкой по http указывается `'http://cloudtest.kontur-ca.ru/v3'`. При работе с тестовой или боевой площадками по https указывается адрес, по которому доступен stunnel-msspi.
  - **_certificateReleasingUrl_** - адрес, по которому доступно Certificate Releasing API контура. При работе с тестовой площадкой по http указывается `'http://test.kontur-ca.ru/CC'`. При работе с боевой площадкой по https указывается адрес, по которому доступен stunnel-msspi.
  - **_cryptoApiHost_** - добавляет http-заголовок host для запросов, которые обращаются к Crypto API. Свойство задается, если сервис работает в связке с stunnel-msspi. При работе с тестовой площадкой указывается `'cloudtest.kontur-ca.ru:443'`, при работе с боевой площадкой `'cloud.kontur-ca.ru:443'`.
  - **_certificateReleasingHost_** - добавляет http-заголовок host для запросов, которые обращаются к Сertificate Releasing API. Свойство задается, если сервис работает в связке с stunnel-msspi. При работе с боевой площадкой указывается `'reg.kontur-ca.ru:443'`.
  - **_callbackUrl_** - полный адрес к маршруту, на который придет POST-запрос с результатом операции от СКБ Контур. Шаблон адреса: `[protocol]://[domain]/api/v2.0/kontur/dss/response`.
  - **_taskId_** - идентификатор задачи, который выполнится сервисом shceduler после обработки POST-запроса от СКБ Контур маршрутом callbackUrl (по умолчанию `null`).
  - **_disableConfirmOperation_** - отключает подтверждение операции по смс для сертификатов НЭП по умолчанию `false`. Если настройка включена, то работа с сертификатами КЭП становится невозможной.
- **_lexema_** - Настройки для подключения ОЭП от Лексемы. Для подключения достаточно указать пустой объект `{}`, если не используются дополнительные настройки.
  - **_certificateValidityPeriod_** - Задает срок действия сертификата в днях (по умолчанию `1825`).
  - **_loadUserAttributesQuery_** - путь к запросу, который возвращает атрибуты, используемые для заполнения поля Subject (информация о владельце) сертификата.
  - **_confirmCodeLifeTime_** - время действия кода для подтверждения операции в секундах (по умолчанию `60`).
  - **_attemptsLimitForConfirmCode_** - лимит попыток ввода кода для подтверждения операции (по умолчанию `3`). Если указано 0, то количество попыток неограничено.
  - **_disableConfirmOperation_** - отключает подтверждение операции по коду (по умолчанию `false`).
  - **_containerStorage_** - тип хранилища данных для контейнера закрытого ключа (по умолчанию `REGISTRY`). Настройка используется для ОС Windows. Доступные значения: REGISTRY, HDIMAGE.
  - **_rootCertificate_** - Задает настройки корневых сертификов, которые используются для выпуска пользовательских сертификатов. В режиме разработки сертификаты рекомендуется устанавливать в корневые доверенные сертификаты пользователя, а в режиме производства в корневые доверенные сертификаты компьютера. Если корневые сертификаты не используются, то это свойство не нужно задавать.
    - **_thumbprint_** - отпечаток корневого сертификата, который будет использоваться по умолчанию. Имеет меньший приоритет, чем сертификат, который привязан к организации. Можно не задавать.
    - **_store_** - хранилище для корневых сертификатов (рекомендуемое значение в режиме разработки `'uRoot'` - поиск в корневых доверенных сертификах пользователя, рекомендуемое значение в режиме производства `'mRoot'` - поиск в корневых доверенных сертификах компьютера).

### collector

Настройки сервиса сбора информации о системе.

- _**protocol**_ - используемый веб-протокол (по умолчанию `'http'`).
- **_host_** - имя хоста (по умолчанию - `'localhost'`).
- **_port_** - порт для запуска (по умолчанию `3077`).
- **_route_** - используемый маршрут (по умолчанию `'/api/v2.0/collector'`).
- **_script_** - путь к модулю, запускающему сервис (рекомендуемое `'ecosoft-lexema8-collector-service'`).
- **_model_** - модель, используемая для записи информации (по умолчанию `'ecosoft-lexema8/lib/models/collector.model.json'`).
- **_enable_** - включить/выключить сбор информации о системе(по умолчанию `false`).
- **_authentication_** - настройки сбора информации о сессиях пользователей.
  - **_enable_** - включить/выключить сбор информации об сессиях(по умолчанию `false`).
- **_reports_** - настройки сбора информации об отчетах.
  - **_enable_** - включить/выключить сбор информации об отчетах(по умолчанию `false`).
  - **_exceptions_** - массив отчетов, игнорирующих параметр enable раздела **_reports_** (по умолчанию `[]`).
- **_forms_** - настройки сбора информации об открытии/закрытии форм приложения.
  - **_enable_** - включить/выключить сбор информации об открытии/закрытии форм(по умолчанию `false`).
  - **_exceptions_** - массив ключей форм из units.json, игнорирующих параметр enable раздела forms (по умолчанию `[]`).
- **_data_** - настройки сбора информации о работе с данными.
  - **_enable_** - включить/выключить сбор информации о работе с данными(по умолчанию `false`).
  - **_exceptions_** - массив идентификаторов моделей и запросов (путей к файлам относительно "контекста"), игнорирующих параметр enable раздела **_data_** (по умолчанию `[]`).

### dev

Настройки сервиса, предоставляющего интерфейс разработчика.

  - `protocol` - используемый веб-протокол (по умолчанию `http`).
  - `host` - имя хоста (по умолчанию `localhost`).
  - `port` - порт для запуска (по умолчанию `3088`).
  - `route` - используемый маршрут (по умолчанию `/dev`).
  - `script` - путь к модулю, запускающему сервис (по умолчанию `ecosoft-lexema8-dev-service`).

### excel

Настройки сервиса экспотра данных в excel (используется для серверного грида).

  - `protocol` - используемый веб-протокол (по умолчанию `http`).
  - `host` - имя хоста (по умолчанию `localhost`).
  - `port` - порт для запуска (по умолчанию `3089`).
  - `route` - используемый маршрут (по умолчанию `/api/v2.0/excel`).