← На главную | Справка по агенту

Конфигурация сервера

Обзор

Конфигурация сервера хранится в файле server_config.json в корневой директории сервера. Файл загружается при запуске сервера.

Быстрые ссылки

Основные настройки

Параметр Тип По умолчанию Описание
listen string 0.0.0.0:8001 Адрес и порт для прослушивания
data_dir string ./data Директория для хранения данных (agents.json, commands.json и т.д.)
preset_servers string[] [] Список предустановленных серверов host:port для быстрого выбора в UI
{
  "listen": "0.0.0.0:8001",
  "data_dir": "./data",
  "preset_servers": [
    "192.168.14.55:9443",
    "192.168.14.71:9443"
  ]
}

Управляемые программы

Массив programs описывает приложения, конфигурациями которых управляет система.

Параметр Тип Описание
program_name string Отображаемое имя программы в интерфейсе
service_name string Имя службы Windows для управления (start/stop/restart)
required_capability string Необязательная возможность агента, без которой сервер не публикует эту программу
service_variants object[] Упорядоченные взаимоисключающие варианты службы; агент выбирает первый установленный вариант
managed_service_names string[] Службы одной подсистемы в порядке запуска; остановка выполняется в обратном порядке
components object[] Компоненты логической программы: имя, служба или процесс, путь к файлу и команда версии
ini object Настройки INI-файла для изменения host:port
json_hostport_sources object[] Упорядоченные JSON-источники адреса: json_filename и корневой строковый key. Запись выполняется атомарно с сохранением остальных ключей. Необязательные last_good_filename и pending_marker_filename всегда задаются парой и включают штатный откат приложения
terminal_id_sources object[] Источники для чтения Terminal ID
version_command string Команда для получения версии программы. Плейсхолдер {exe} заменяется на полный путь к исполняемому файлу службы

Пример подсистемы Raven

Raven задаётся одной программой с двумя взаимоисключающими семействами служб. Agent и Runner проверяются как службы, VServer — как процесс. Все версии читаются из JSON команды --build-info. Возможность managed_programs_v2 скрывает программу от старых агентов, которые ещё не понимают варианты и компоненты.

{
  "program_name": "Raven",
  "required_capability": "managed_programs_v2",
  "service_variants": [
    {
      "variant_name": "windows",
      "service_name": "connection-hub-agent",
      "managed_service_names": ["runner-vserver", "connection-hub-agent"],
      "components": [
        { "component_name": "Agent", "service_name": "connection-hub-agent", "version_command": "{exe} --build-info", "version_format": "build_info_json" },
        { "component_name": "Runner", "service_name": "runner-vserver", "version_command": "{exe} --build-info", "version_format": "build_info_json" },
        { "component_name": "VServer", "process_name": "vserver.exe", "executable_path": "vserver.exe", "version_command": "{exe} --build-info", "version_format": "build_info_json" }
      ]
    }
  ],
  "json_hostport_sources": [
    { "json_filename": "agent.config.json", "key": "server", "last_good_filename": "agent.config.json.lastgood", "pending_marker_filename": "agent.config.json.pending" }
  ]
}

Настройки INI-файла

Параметр Описание
ini_filename Имя INI-файла (ищется рядом с исполняемым файлом службы)
section Секция в INI-файле
key_hostport Ключ, содержащий значение host:port
{
  "programs": [
    {
      "program_name": "MyApp",
      "service_name": "MyAppService",
      "ini": {
        "ini_filename": "config.ini",
        "section": "Network",
        "key_hostport": "server"
      },
      "version_command": "myapp --version"
    }
  ]
}
Как это работает: Агент находит путь к исполняемому файлу службы через реестр Windows, затем ищет INI-файл в той же директории.

Источники Terminal ID

Terminal ID используется для идентификации терминала в интерфейсе. Можно указать несколько источников - агент проверяет их по порядку до первого найденного значения.

Параметр Описание
file_path Полный путь к INI-файлу
section Секция в INI-файле
key Ключ с Terminal ID
{
  "terminal_id_sources": [
    {
      "file_path": "C:\\Program Files\\MyApp\\config.ini",
      "section": "Agent",
      "key": "terminal_id"
    },
    {
      "file_path": "C:\\ProgramData\\MyApp\\settings.ini",
      "section": "Main",
      "key": "login"
    }
  ]
}
Примечание: В путях Windows используйте двойные обратные слеши (\\) или одинарные прямые слеши (/).
Косвенный Terminal ID: Windows-агент распознаёт значение {путь} как каноническую ссылку SSTXCH и читает [ATM] Machinenum из указанного INI-файла. Сам путь не отправляется как номер терминала.

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

Секция agent_settings содержит настройки, которые сервер передаёт агентам. Агенты периодически запрашивают эти настройки и применяют их.

Параметр Тип По умолчанию Описание
auto_update_enabled boolean true Включить автоматическое обновление агентов
auto_update_check_interval_minutes integer 1 Интервал проверки обновлений в минутах
command_stdout_fallback_encoding string cp866 OEM fallback для stdout, если байты не являются строгим UTF-8
command_stderr_fallback_encoding string windows-1251 ANSI fallback для stderr, если байты не являются строгим UTF-8
{
  "agent_settings": {
    "auto_update_enabled": true,
    "auto_update_check_interval_minutes": 1,
    "command_stdout_fallback_encoding": "cp866",
    "command_stderr_fallback_encoding": "windows-1251"
  }
}
Применение изменений: После изменения agent_settings нажмите кнопку «Обновить конфиг агентов» в веб-интерфейсе для немедленного применения настроек.

Контроль доступа

Параметр allowed_networks ограничивает доступ к операциям изменения конфигурации по IP-адресам.

Формат Пример Описание
Подсеть CIDR 192.168.0.0/24 Все адреса 192.168.0.0 - 192.168.0.255
Один адрес CIDR 10.0.0.100/32 Только адрес 10.0.0.100
Простой IP 10.0.0.100 Эквивалентно /32
{
  "allowed_networks": [
    "192.168.0.0/24",
    "10.0.0.100"
  ],
  "trusted_proxy_networks": [
    "192.0.2.10/32"
  ]
}

trusted_proxy_networks задаётся только для известного непосредственного reverse proxy. Он обязан передавать один проверяемый IP в X-Forwarded-For.

Защищённые операции

Примечание: Если allowed_networks не указан или пуст, доступ разрешён с любых IP-адресов.

Полный пример конфигурации

{
  "listen": "0.0.0.0:8001",
  "data_dir": "./data",
  "preset_servers": [
    "192.168.14.55:9443",
    "192.168.14.71:9443",
    "192.168.14.72:9443"
  ],
  "allowed_networks": [
    "192.168.0.0/24",
    "10.0.0.0/8"
  ],
  "agent_settings": {
    "auto_update_enabled": true,
    "auto_update_check_interval_minutes": 1,
    "command_stdout_fallback_encoding": "cp866",
    "command_stderr_fallback_encoding": "windows-1251"
  },
  "programs": [
    {
      "program_name": "SST Agent",
      "service_name": "SSTAgent",
      "ini": {
        "ini_filename": "sst.ini",
        "section": "Agent",
        "key_hostport": "server"
      },
      "terminal_id_sources": [
        {
          "file_path": "C:\\Program Files\\RDS Commander\\sst.ini",
          "section": "Agent",
          "key": "login"
        },
        {
          "file_path": "C:\\ProgramData\\RDS Commander\\sst.ini",
          "section": "Agent",
          "key": "login"
        },
        {
          "file_path": "C:\\Program Files\\RDS Commander\\sst.ini",
          "section": "Agent",
          "key": "terminal"
        }
      ],
      "version_command": "sstagent version"
    },
    {
      "program_name": "SSTXCH Bridge",
      "service_name": "sstxch",
      "ini": {
        "ini_filename": "sstxch.ini",
        "section": "agent",
        "key_hostport": "host"
      },
      "hostport_sources": [
        {
          "ini_filename": "C:\\sstxch\\sstxch.local.ini",
          "section": "agent",
          "key_hostport": "host"
        },
        {
          "ini_filename": "C:\\sstxch\\sstxch.ini",
          "section": "agent",
          "key_hostport": "host"
        }
      ],
      "terminal_id_sources": [
        {
          "file_path": "C:\\sstxch\\sstxch.local.ini",
          "section": "agent",
          "key": "terminal"
        },
        {
          "file_path": "C:\\sstxch\\sstxch.ini",
          "section": "agent",
          "key": "terminal"
        }
      ],
      "version_command": "{exe} -version"
    }
  ]
}

Структура данных сервера

Сервер хранит данные в JSON-файлах в директории data_dir:

Файл Описание
agents.json Информация о подключенных агентах и их статусе
commands.json Очередь команд для агентов
preset_servers.json Список пресетов серверов (добавленных через UI)
packages.json Метаданные загруженных пакетов для разворачивания
deployment_results.json Результаты выполнения разворачивания
Атомарная запись: Файлы записываются атомарно (запись во временный файл + переименование) для предотвращения повреждения данных.