Skip to content

Releases: RasEcosystem/ras-gate

RasGate 0.2.1

Choose a tag to compare

@zmaxb zmaxb released this 17 Aug 17:02

Главное

RasGate 0.2.1 усиливает надёжность выполнения RAC-команд и добавляет средства
установки приложения в качестве службы Windows или systemd.

Релиз включает изменения промежуточной версии 0.2.0.

Надёжность выполнения RAC

  • добавлена явная семантика результатов succeeded, failed и unknown;
  • усилена обработка таймаутов, отмены и завершения дерева процессов;
  • добавлены ограничения на количество и размер аргументов;
  • ограничен размер stdout и stderr;
  • выполнение ограничено числом параллельных процессов;
  • результат с неопределённым внешним состоянием явно помечается как небезопасный
    для автоматического повтора;
  • проверка rac --version использует кэширование и single-flight.

API и диагностика

  • унифицированы успешные и ошибочные JSON-ответы;
  • добавлен X-Trace-Id;
  • добавлено безопасное структурированное журналирование HTTP, RAC и событий жизненного цикла;
  • сырые аргументы RAC, API-ключи и содержимое вывода не записываются в журнал;
  • расширена проверка конфигурации при запуске.

Установка в качестве службы

  • добавлена команда --validate-config, не открывающая HTTP-порт и не
    запускающая RAC;
  • добавлены скрипты установки и удаления Windows Service;
  • добавлены unit-файл и скрипты установки systemd;
  • Linux-служба работает от отдельного непривилегированного пользователя
    rasgate;
  • конфигурация теперь загружается относительно каталога приложения, независимо
    от текущего рабочего каталога процесса.

Важно для клиентов API

Поле success описывает обработку HTTP-запроса. Результат RAC-команды необходимо
определять по outcome, exitCode и timedOut.

Результат unknown нельзя автоматически повторять: команда могла изменить
состояние кластера до таймаута, отмены или ошибки очистки ресурсов.

Артефакты

  • rasgate-0.2.1-linux-x64.tar.gz — self-contained сборка для Linux x64;
  • rasgate-0.2.1-win-x64.zip — self-contained сборка для Windows x64;
  • SHA256SUMS — контрольные суммы архивов.

Установка отдельного .NET Runtime не требуется.

RasGate 0.1.0

Choose a tag to compare

@zmaxb zmaxb released this 31 Jul 18:33

Главное в этом релизе

RasGate 0.1.0 — крупное обновление HTTP-шлюза для выполнения команд RAC платформы 1С:Предприятие.

Этот релиз подготавливает RasGate к переходу в режим сопровождения: основной функциональный контур стабилизирован, а дальнейший фокус смещается на развёртывание, безопасность, ограничения ресурсов, диагностику, тестирование и эксплуатационную надёжность.

В релизе усилена безопасность выполнения команд, добавлены ограничения ресурсов, диагностика экземпляра, готовое контейнерное развёртывание и полный набор нагрузочных сценариев.

Безопасность и API

  • выполнение POST /rac/execute защищено API-ключом через заголовок X-Api-Key;
  • API-ключи сравниваются с помощью криптографической операции с постоянным временем выполнения;
  • добавлены структурированные ответы 401 Unauthorized;
  • добавлен метод GET /rasgate/status с именем экземпляра и версией сборки;
  • схема авторизации отражена в OpenAPI и коллекции Postman;
  • журналирование тела и строки запроса удалено для снижения риска утечки чувствительных данных.

Контроль выполнения RAC

  • добавлен независимый лимит размера stdout и stderr;
  • процесс RAC завершается при превышении Rac:MaxOutputBytes;
  • превышение лимита возвращает структурированную ошибку 502 rac_output_limit_exceeded;
  • сохранены ограничения параллельных процессов, таймауты и отмена выполнения;
  • ответы 429 rac_capacity_exceeded обеспечивают контролируемую защиту от перегрузки.

Развёртывание в Docker

  • добавлены многоэтапный Dockerfile и готовая production-конфигурация Docker Compose;
  • контейнер работает от непривилегированного пользователя с файловой системой только для чтения;
  • отключены Linux capabilities и включён режим no-new-privileges;
  • файловые логи сохраняются в отдельном Docker volume;
  • Linux-версия RAC подключается с хоста в режиме только для чтения;
  • порт по умолчанию публикуется только на 127.0.0.1.

Исполняемый файл RAC не входит в Docker-образ и должен быть установлен на хосте.

Тестирование

  • добавлены k6-сценарии smoke, load, stress и soak;
  • поддержаны контейнерное тестирование и запуск локального k6 против удалённого RasGate;
  • добавлены цели Makefile load-run и load-remote;
  • обновлены коллекция Postman, документация и примеры конфигурации;
  • расширено покрытие модульными и интеграционными тестами;
  • успешно пройдены все 36 автоматических тестов.

RasGate прошёл smoke-, load-, stress- и soak-тестирование без критических ошибок.
Отчёт о результатах тестирования

Несовместимые изменения

  • POST /rac/execute теперь требует корректный заголовок X-Api-Key;
  • API-ключ задаётся через RasGate:ApiKey или переменную окружения RasGate__ApiKey;
  • адрес по умолчанию изменён с 0.0.0.0:5050 на 127.0.0.1:5050;
  • для удалённого доступа необходимо явно изменить Urls и настроить сетевой экран;
  • Swagger UI удалён; в окружении Development доступен OpenAPI-документ ASP.NET Core.

Перед запуском обязательно замените пример API-ключа собственным секретным значением.

Артефакты

  • rasgate-0.1.0-linux-x64.tar.gz — self-contained сборка для Linux x64;
  • rasgate-0.1.0-win-x64.zip — self-contained сборка для Windows x64;
  • SHA256SUMS — контрольные суммы релизных архивов.

Установка отдельного .NET Runtime не требуется.

RasGate 0.0.1

RasGate 0.0.1 Pre-release
Pre-release

Choose a tag to compare

@zmaxb zmaxb released this 26 Jul 09:05

🚀 RasGate 0.0.1

Первый публичный релиз RasGate — HTTP-шлюза для выполнения команд 1C:Enterprise Remote Administrative Client (rac).

Статус релиза

Версия опубликована как предварительная.

Проверены:

  • запуск RasGate под Windows;
  • получение статуса RAC;
  • выполнение команд управления кластером;
  • обработка успешных и ошибочных результатов RAC.

Остальные группы команд RAC используют тот же механизм выполнения, но пока не прошли систематическое интеграционное тестирование.

Не рекомендуется использовать эту версию в критичных производственных сценариях без предварительной проверки необходимых команд в тестовой среде.