Об этом проекте

# EndlessNet Client EndlessNet Client обеспечивает базовую инфраструктуру для сети EndlessNet, функционируя как долгоработающий агент, интерфейс командной строки (CLI) и интеграция сервисов в Linux, macOS и Windows. Он обрабатывает критически важные сетевые операции, включая потребление подписанного каталога сервисов, управление маршрутами приложений L3, обнаружение коннекторов и применение пакетов. ## Ключевые возможности - **Кроссплатформенная поддержка**: Нативная работа в Linux (Ubuntu/Debian), Windows Server и macOS. - **Безопасные сети**: Реализует подписанные wire-контракты и HTTP-взаимодействия control-plane для обеспечения целостности данных и авторизованного доступа. - **Интеграция сервисов**: Управляет локальным межпроцессным взаимодействием (IPC) через публичную границу `ipc/v2`, предоставляя строгие транспортные клиенты, сохраняя внутреннее состояние, идентичность и реализации STUN приватными. - **CLI и автоматизация**: Предлагает CLI для взаимодействия с пользователем, при этом определённые команды ограничены политиками безопасности (например, утверждение маршрутов требует административной консоли). - **Надёжное тестирование**: Включает комплексные CI-конвейеры, охватывающие тесты установки, базовую приёмку сервиса, сохранение при отключении и сценарии контрактов с реальным клиентом против изолированных тестовых серверов. ## Архитектура и зависимости Клиент полагается на внешние модули для своих API-контрактов: - **Control-Plane API**: Потребляет версионированные DTO и клиенты из `github.com/endless-net/client-api/clientapi`. Это включает HTTP/recovery-контракты (v1), protobuf-сообщения и Connect-биндинги. - **Публичная граница**: Единственный экспортируемый Go-пакет — `ipc/v2`, который обрабатывает контракты локального сервисного IPC v2. ## Сборка и релиз Разработчики могут собрать клиент с помощью стандартных инструментов Go: ```bash go build ./cmd/endlessnet-client ./cmd/endlessnet-client-recovery-helper go test -short ./... ``` Релизы публикуются через GitHub Releases для Windows amd64 и Linux amd64, а также APT-пакеты для Debian/Ubuntu (amd64/arm64). CI-матрица обеспечивает совместимость с Ubuntu 22.04/24.04, Windows 2022/2025 и macOS 15. ## Документация Подробные операционные руководства и технические спецификации доступны в каталоге `docs` репозитория: - [`docs/ru/client-and-network.md`](docs/ru/client-and-network.md): Руководство по архитектуре и операциям на русском языке. - [`docs/service-discovery.md`](docs/service-discovery.md): Детали потребления подписанного каталога сервисов. - [`docs/application-runtime.md`](docs/application-runtime.md): Маршруты L3 и применение пакетов. - [`docs/installation-tests.md`](docs/installation-tests.md): Критерии установки и приёмки. - [`docs/testing-control-plane.md`](docs/testing-control-plane.md): Тестирование сценариев control-plane. - [`docs/client-ipc-v2.openapi.yaml`](docs/client-ipc-v2.openapi.yaml): Контракт локального сервисного IPC. - [`docs/client-ownership-recovery.md`](docs/client-ownership-recovery.md): Процессы восстановления владения.