# Настройка конфигурации CSP3

Стандартная установка разместит csp сервер в директории `/opt/csp3`

## global-config.json
Этот файл обязателен для запуска сервера, должен находится в корне приложения, рядом с `start.sh`. Эта конфигурация влияет на первоначальный запуск всех компонентов, при ее изменении необходимо перезапустить весь CSP.
Пример:
```
{
  "common":{
    "postgresUri": "postgresql://postgres:123@127.0.0.1:5432/csp3",
    "ghostScriptPath": "gs",
    "timeZone": "Europe/Moscow",
    "baseUrl": "http://127.0.0.1",
    "database": "postgres"
  },
  "Logger" : {
    "disable" : false
  },
  "NatsConnection" : {
    "server": "127.0.0.1:4222",
    "prefix": "main.",
    "timeout": 60000,
    "format": "msgpack",
    "requestMode": "long"
  },
  "Auth": {
    "admin": {
      "login" : "admin",
      "password" : "123"
    }
  },
  "HttpProxy": {
    "host" : "0.0.0.0",
    "port" : 80
  },
  "PkgUpdater" : {
    "updateServerUrl": "https://carabi.csp.carabisol.ru"
  }
}
```
#### Секция `common` – общие настройки

- `postgresUri` – Строка подключения к PostgreSQL. Формат: `postgresql://[user]:[password]@[host]:[port]/[database]`
- `ghostScriptPath` – (опционально) Путь к исполняемому файлу GhostScript (`gs`). GhostScript используется для обработки PDF. Значение `"gs"` означает, что программа находится в `PATH` системы
- `timeZone` – Временная зона, в которой работает приложение
- `baseUrl` – Базовый URL, по которому доступен сервис (используется для формирования ссылок, редиректов, CORS и т.п.) При использовании https reverse proxy указывать его адрес, напр `https://demo.csp.carabisol.ru`
- `database` – Указывает имя используемой СУБД – всегда `postgres`

#### Секция `Logger` – настройки логирования

- `disable` – Флаг отключения логирования. При `true` системя логирования полностью отключается, увеличивает производительность приложения

#### Секция `NatsConnection` – подключение к NATS (message broker)

- `server` – Адрес сервера NATS в формате `хост:порт`. `127.0.0.1:4222` – стандартный адрес локального NATS‑сервера (порт по умолчанию 4222)
- `prefix` – Префикс, добавляемый ко всем темам (subject) NATS. Необходим для запуска нескольких CSP на одном nats-server
- `timeout` – Должен быть всегда 60000, реальный таймаут реализован на более высоком уровне
- `format` – Формат сериализации данных сообщений (json/msgpack). `msgpack` предпочтительнее
- `requestMode` – Должен быть всегда `long`.

#### Секция `Auth` – аутентификация и учётные записи

Администратор – виртуальная учетная запись. Позволяет входить в систему, даже при отказе стандартной системы авторизции (или первоначальной настройки)

- `admin.login` – Логин администратора
- `admin.password` – Пароль администратора

#### Секция `HttpProxy` – настройки встроенного Reverse HTTP‑прокси

HttpProxy - является единой точкой подключения к системе, которая направляет трафик до нужного сервиса.
- `host` – IP‑адрес или имя хоста, на котором будет слушать HTTP‑сервер. `0.0.0.0` открывает доступ с любого адреса. `127.0.0.1` - только для локальных приложений, если доступ к серверу осуществляется доступ через локальный внешний reverse proxy (напр. nginx)
- `port` – Номер порта для HTTP‑сервера

#### Секция `PkgUpdater` – настройки системы обновления
- `updateServerUrl` - (опционально) URL внешнего сервера, с которого приложение будет получать обновления.

## Настройка реестра CSP
Реестр, в отличии от `global-config.json`, можно изменять в процессе работы приложения, через специальный раздел в панели администратора. Также можно изменить файл `./data/common-registry-data.json` напрямую, но это нужно делать при остановленном сервере. При добавлении новых компонентов приложения, реестр может расширятся.

Пример, с параметрами, необхоимыми для запуска:
```
{
  "main": {
    "name": "CSP3",
    "description": "Тестовый сервер"
  },
  "logger": {
    "minLevel": 50,
    "minRecords": 1000,
    "maxRecords": 5000
  },
  "PkgUpdater": {
    "token": null,
    "timer": 300000
  },
  "queries": {
    "type": "ora"
  },
  "pgQueryPool": {
    "connectionCount": 25
  }
}
```
- `main.name` - системное имя программы, используется для получения обновлений  
- `main.description` - текстовое описание сервера, отображается в интерфейсах
- `logger.minLevel` - минимальный уровень логирования (числовое значение, например, 50 — предупреждения и выше)  
- `logger.minRecords` - минимальное количество записей в логе, при котором начинается их обработка или ротация  
- `logger.maxRecords` - максимальное количество записей в логе, после превышения которого старые записи удаляются
- `PkgUpdater.token` - токен для авторизации при доступе к репозиторию обновлений пакетов (значение `null` - обновление отключено)
- `PkgUpdater.timer` - интервал проверки наличия обновлений в миллисекундах (300000 = 5 минут)  
- `queries.type` - всегда `ora`, система использует встроенный "ora" адаптер, для отправки запросов в PostgreSQL
- `pgQueryPool.connectionCount` - количество одновременно поддерживаемых соединений в пуле подключений к PostgreSQL

## Лицензия
Файл лицензии хранится в `./data/license.json`. Его можно разместить напрямую или измениь в панели администратора (Нажать на красную панель вверху экрана).

После изменения лицензии, реккомендуется перезагрузить сервер: `systemctl restart csp3`