ostp/CONTRIBUTING.ru.md

6.5 KiB
Raw Blame History

Участие в разработке OSTP

Спасибо за интерес к участию в разработке OSTP (Ospab Stealth Transport Protocol)! Мы рады любой помощи: от написания кода и тестирования до работы над документацией и проведения аудита безопасности.

Присылая изменения в проект, вы соглашаетесь соблюдать правила нашего сообщества и условия лицензии.


Содержание

  1. Подготовка окружения
  2. Структура проекта
  3. Процесс разработки
  4. Правила оформления кода
  5. Создание Pull Request
  6. Уязвимости безопасности

Подготовка окружения

Для локальной сборки и тестирования OSTP вам понадобятся:

  • Rust Toolchain: Установите через rustup (stable канал).
  • Node.js (18+) и npm: Необходимы для сборки интерфейса Tauri.
  • Git: Для контроля версий.

Сборка проекта

  1. Клонируйте репозиторий:

    git clone https://github.com/ospab/ostp.git
    cd ostp
    
  2. Соберите весь Cargo-workspace:

    cargo build
    
  3. Запустите тесты:

    cargo test --workspace
    

Структура проекта

Репозиторий представляет собой единый Cargo-workspace со следующими компонентами:

  • ostp-core/: Базовая логика протокола: форматирование пакетов, сериализация, конечный автомат выборочного подтверждения (ARQ/ACK/NACK) и рукопожатие Noise (Noise_NNpsk0_25519_ChaChaPoly_BLAKE2s).
  • ostp-client/: Клиентская часть: локальные SOCKS5/HTTP прокси-серверы, интеграция с драйвером wintun / tun2socks и реализация раздельного туннелирования для прямого обхода трафика.
  • ostp-server/: Логика сервера, диспетчер сессий, защита от пробинга, база данных ключей и REST API.
  • ostp-gui/: Настольное приложение-клиент для Windows и Linux на платформе Tauri.
  • ostp-flutter/: Мобильный клиент для платформы Android.

Процесс разработки

  1. Проверьте существующие задачи или откройте новую тему (Issue) для обсуждения предлагаемых изменений.
  2. Сделайте fork репозитория и создайте новую ветку от master:
    git checkout -b feat/имя-вашей-фичи
    
  3. Внесите необходимые изменения и добавьте соответствующие модульные или интеграционные тесты.
  4. Выровняйте форматирование кода:
    cargo fmt --all
    
  5. Запустите статический анализатор:
    cargo clippy --workspace --all-targets -- -D warnings
    
  6. Убедитесь, что все тесты проходят:
    cargo test --workspace
    

Правила оформления кода

  • Безопасность (Safety): Избегайте использования блоков unsafe везде, где это возможно. Допускается их использование только для низкоуровневых системных вызовов (например, FFI-настройки сокетов setsockopt). Любой блок unsafe должен сопровождаться комментарием // SAFETY: ....
  • Документация: Пишите документацию для публичных модулей, структур и методов. Сохраняйте целостность комментариев при рефакторинге.
  • Логирование: Используйте фреймворк tracing для структурированного логирования. Не используйте println! в рабочем коде.
  • Дизайн: При изменении веб-интерфейсов или GUI следуйте современным визуальным трендам (плавные анимации, сбалансированная цветовая гамма, адаптивная верстка).

Создание Pull Request

  1. Отправьте ветку в ваш fork-репозиторий:
    git push origin feat/имя-вашей-фичи
    
  2. Создайте Pull Request (PR) в ветку master основного репозитория.
  3. Подробно опишите внесенные изменения: какая проблема решается, как проводилось тестирование и на каких платформах проверялась сборка.
  4. Убедитесь, что автоматическое тестирование (GitHub Actions CI) завершилось успешно.

Уязвимости безопасности

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