Техническое задание: Клиент-серверная система удаленного USB-доступа
Цель проекта
Разработка программного комплекса, позволяющего безопасно подключаться и работать с USB-устройствами, физически расположенными на удаленном сервере, по сети.
Основные требования к функционалу
Клиентская часть (мульти-ОС)
- Графический интерфейс пользователя (GUI) с основной панелью, разделенной на две части:
- Слева - древовидный список (TreeView) для отображения подключенных серверов и их доступных USB-портов.
- Справа - текстовое поле для вывода системной информации и логов от USBIP.
- Модальное диалоговое окно для добавления нового сервера с полями: "Имя сервера / IP-адрес", "Логин", "Пароль", а также флажком "Использовать единую систему аутентификации (SSO)".
- Контекстное меню в TreeView с командами: "Новое подключение", "Удалить подключение", "Обновить список".
- Архитектура, заложенная под будущее шифрование трафика (на первом этапе - передача данных в открытом виде).
Серверная часть (Astra Linux)
- Управление доступом к USB-портам в зависимости от пользователя.
- Поддержка двух методов авторизации: локальная (логин/пароль) и через единую систему (SSO).
- Возможность скрывать от пользователя порты, к которым у него нет прав доступа.
- Реализация REST API для управления сервером и интеграции с другими системами.
- Предоставление документации по REST API.
Технические и инфраструктурные требования
- Язык программирования: C++ (стандарт 17/20).
- Предпочтительные среды разработки (IDE): Embercadero C++ Builder 10.3.3 или Microsoft Visual C++ 2022/2026.
- В основе работы с USB должен лежать протокол USBIP.
- Исходный код должен быть передан в виде полного проекта для выбранной IDE.
- Код должен быть хорошо структурирован и содержать необходимые комментарии.
- Необходимо предоставить краткую инструкцию по сборке и компиляции проекта.