# порт и контекст http сервера
server:
  port: 8080
  servlet:
    context-path: /sem-restservices
  tomcat:
    accesslog:
      enabled: false
      directory: "/opt/sem-restservices/logs/"
      buffered: true
    max-swallow-size: 100MB

spring:
  codec:
    # ограничение размера данных в памяти кодека (по умолчанию 262 144 байта).
    max-in-memory-size: 10MB
  # профили логирования, console - вывод в консоль, file - вывод в файл
  profiles:
    active: file
  datasource:
    # подключение к БД (урл, пользователь, пароль)
    url: jdbc:postgresql://localhost:5432/semdb?currentSchema=sem
    username: user_postgres
    password: pwd_postgres
    driver-class-name: org.postgresql.Driver
    hikari:
      maximum-pool-size: 20
      connection-timeout: 120000
      idle-timeout: 600000
      max-lifetime: 600000
  jpa:
    database: DEFAULT
    hibernate:
      ddl-auto: validate
    generate-ddl: false
    show-sql: false
    # отключаем транзакции во вьюхах
    open-in-view: false
  flyway:
    table: schema_version
  servlet:
    # разрешаем довольно большие файлы для загрузки (они могут быть большими в экспорте импорте)
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB

# уровни логирования модулей
logging:
  level:
    root: INFO
    ru.infsys.sem.restservices: INFO

# хранилище sem-next
store:
  # тип хранилища (POSTGRES, CASSANDRA)
  type: CASSANDRA
  # настройки, специфичнае для хранилища CASSANDRA
  cassandra:
    # Ноды кассандры для подключения, одна или более. Формат host1:port1,host2:port2,.... Пример 192.168.1.14:9042.
    nodes: 192.168.2.106:9042, 192.168.2.107:9042,192.168.2.108:9042
    # Имя датацентра кассандры (см nodetool status)
    datacenter: datacenter1
    # имя пользователя для авторизованного доступа
    username: user_cassandra
    # пароль пользователя для авторизованного доступа
    password: pwd_cassandra



# настройки подключения redis (для подключения к БД с номером 3 используется суффикс с номером, пример redis://192.168.1.13:6379/3)
redis:
  url: redis://localhost:6379
  minIdle: 0
  maxIdle: 1
  maxTotal: 20

artemis:
  # параметры подключения к артемис
  url: tcp://localhost:61616
  user: artemis
  password: <password>
  # количество потоков в пуле для отправки JMS-сообщений
  senderThreads: 32
  # настройки очередей
  queue:
    event:
      destination: jms.queue.Event
      concurrency: 8-8
    eventexport:
      destination: jms.topic.EventExport
      concurrency: 1-8
    measure:
      destination: jms.queue.Measure
      concurrency: 16-16
    calcparam:
      destination: jms.queue.CalcParam
      concurrency: 8-8
    paramchange:
      # несмотря на то что в artemis он может быть описан с именем jms.queue.ParamChange здесь мы указываем как топик
      destination: jms.topic.ParamChange
      concurrency: 8-8
    ruleexec:
      destination: jms.queue.RuleExec
      concurrency: 16-16
    ruleaction:
      destination: jms.queue.RuleAction
      concurrency: 16-16
    actioncondition:
      destination: jms.queue.ActionCondition
      concurrency: 16-16
    globalruleexec:
      destination: jms.queue.GlobalRuleExec
      concurrency: 8-8
    widgetevent:
      destination: jms.topic.WidgetEvent
      concurrency: 8-8
    nbiotcommand:
      destination: jms.queue.NbiotCommand
      concurrency: 2-2
    command:
      destination: jms.queue.Command
      concurrency: 4-4
    collector:
      destination: jms.queue.Collector
      concurrency: 4-4
    setvalue:
      destination: jms.queue.SetValue
      concurrency: 4-4
    notify:
      destination: jms.queue.Notify
      concurrency: 4-4
    aggregation:
      destination: jms.queue.Aggregation
      concurrency: 8-8
    hierarchymetadata:
      destination: jms.topic.HierarchyMetaData
      concurrency: 1-8
    hierarchymeasure:
      destination: jms.topic.HierarchyMeasure
      concurrency: 1-8
    hierarchyevent:
      destination: jms.topic.HierarchyEvent
      concurrency: 1-8
    hierarchycommand:
      destination: jms.topic.HierarchyCommand
      concurrency: 1-8
    periodic:
      destination: jms.queue.Periodic

# Настройки REST-сервисов.
SEMRestServices:
  # Максимальное количество измерений, возвращаемое рестами.
  maxNumberMeasure: 5000
  # Максимум сигналов для виджетов
  maxNumberSignalForWidget: 1500

# настройки хранения файлов
files:
  # Директорию хранения файлов, доступных для отдачи через сервер приложений.
  dir: "/files"
  # Урл медиа-сервера, хранящего медиа-данные.
  server:
    url: "http://192.168.2.103/webdav/"

lorain:
  # URL подключения к lorain.
  uri: "http://192.168.0.1:8089/lorain/api"
  # Токен безопасности для взаимодействия с сервером LORAIN.
  token: 63ad9302-9b1d-4056-abb8-52dcfd31682e

# параметры взаимодействия с REST API магазина виджетов
wist:
  # урл магазина
  uri: "http://192.168.2.177/wist/api/"
  # логин для авторизации в магазине
  username: "semnext"
  # пароль для авторизации в магазине
  password: <password>
  # параметры для получения 3D моделей из Forge OSS
  forge:
    enabled: false
    # Идентификатор Semnext для которого представляются зарегистрированные 3D модели
    # если атрибут не задан, будут выданы только общедоступные модели
    forInstance: ""

# Создание SSO токена semona для доверительной авторизации пользователей semona в своих системах
SSOToken:
  # Если true - токен sso создается
  enabled: true
  # Наименование алгоритма шифрования
  algorithm: Blowfish
  # Описание представления токена, например login=root;expire=20190327130000;company=INFSYS
  token:
    name: issToken
    separator: ";"
    login: user
    expire: expire
    # Атрибут в токене который должен содержать компанию пользователя
    company: "company"
    expireFormat: yyyyMMddHHmmss
  # Время от текущего, которое добавляется для установки времени жизни токена (в миллисек)
  lifetime: 3600000
  key: "qwerty"

# Включает/отключает аудит действий пользователя (true/false)
audit:
  enabled: false

# Определяет параметры подключения к Microsoft Active Directory
ActiveDirectory:
  # Разрешена авторизация в MS AD
  enabled: true
  # 0 - авторизации в MS AD, при неуспехе в SEM или 1 - авторизации в SEM, при неуспехе в MS AD
  order: 1
  # адрес подключения к MS AD
  url: "ldap://192.168.2.158:389"
  # Вершина каталога от которой искать пользователей
  searchBase: dc=example,dc=company,dc=ru
  # Пользователь для подключения к MS AD
  user: cn=admin,cn=Users,dc=example,dc=company,dc=ru
  # Пароль пользователя
  password: XXXXXX
  # Суффикс домена пользователя, не задавать если для входа будет использоваться полное
  # имя входа (userPrincipalName ), в противном случаи задавать домен или его часть учетной записи пользователей.
  # Например, для аутентификации пользователей из домена infsys.ru, чтобы пользователи вводили только имя входа, необходимо задать @infsys.ru.
  # Например, для аутентификации пользователя в лесу Active Directiry из portal.cbr.ru и vip.cbr.ru, если searchBase задать dc=cbr,dc=ru
  # и порт 3268, данный параметр необходимо задать .cbr.ru, тогда в качестве логина пользователя можно использовать часть userPrincipalName
  # - semuser@portal, общая часть домена пользователя будет подставлена из параметра.
  principalSuffix: "@example.company.ru"

# Определяет параметры генерации проверочных кодов
RecoveryCodeGenerator:
  # Длина проверочного кода
  length: 8
  # Время валидности проверочного кода (в минутах)
  interval: 5

auth:
  # таймаут сеансов пользователей, минут
  sessionTimeout: 1440
  oauth2:
    # секретный код, который сэм подписывает JWT токены в формате Base64
    jwtSecretKeyBase64: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    # url на форму авторизации, форма должна принимать параметр ?client_id= с идентификатором OAuth клиента,
    # и в случаи успешной авторизации вернуть его в GET запросе oauth2/authorize,
    # по умолчанию используется форма  ../#!/login?client_id=
    loginUrl: /#!/login
    # описание клиентов (список)
    client:
      -
        # идентификатор клиента, для Superset представляющую аналитическую систему Semnext
        # должен соответствовать названию и идентификатору клиента в файле superset_config.py
        #  OAUTH_PROVIDERS = [
        #        'name':<>
        #        ...
        #          'remote_app': {
        #              'client_id':<>,  # Client Id (Identify Superset application)
        id: inspark-superset
        # секретный ключ клиента
        secret: XXXXXXXXXXXXXXXXXXXXXXXXX
        # url клиента
        url: http://192.168..2.103
        # устанавливается только для Superset который является аналитической подсистемой Semnext
        analytic: true

# параметры лицензирования Inspark
license:
  # Алгоритм хэширования ключа лицензии (если использовалась версия openssl < 1.1.0 - MD5, >= 1.1.0
  # по умолчанию SHA-256, но можно и задать и другой алгоритм в ключе -md даже старый MD5)
  hash-algorithm: SHA-256
  # Пароль лицензии
  key: XXXXXXXXXXXXXX
