Разработка приложения на C++ с использованием Qt

1 500 руб.за час
06 мая 2024, 08:05 • 17 откликов • 94 просмотра
##Техническое задание для разработки приложения на C++ с использованием Qt

### 1. Описание проекта:
Техническое задание для разработки кроссплатформенного приложения на C++ с использованием Qt для создания SSH прокси

### 2. Цель проекта:
Разработка кроссплатформенного приложения, которое будет работать в системном трее и предоставлять пользователю возможность управлять SSH соединением.

### 3. Описание функциональности:
#### 3.1. Интерфейс:

- Приложение должно располагаться в системном трее и предоставлять контекстное меню со следующими опциями:

- "Установить соединение"
- "Завершить работу соединения"
- "Выход"
- Состояние приложения визуально отображается посредством изменения иконки приложения и пунктов контекстного меню:
- Соединение не установлено - `gray.ico`, все пункты меню enable
- Соединение установлено - `green.ico`, "Установить соединение" -> disable
- Состояние также отображается в tooltip:
- Соединение не установлено - "`Ожидание...`"
- Соединение установлено - "`{main_server_IP}:{port}`"

#### 3.2. Установка соединения: - При выборе "Установить соединение" приложение должно инициировать SSH соединение аналогичное команде:
```ssh -CN4 -D {proxy_port} -p {ssh_port} {user}@{main_server_IP} -i ./id_rsa``` - для установки соединения должен использоваться приватный ключ из директории, где расположен бинарный файл приложения.
- место расположения бинарного файла и ключа(криллица, пробелы в пути) не должны влиять на надежность его работы
- значения переменых читаются из файла `settings.conf`, располагающегося также в в той же директории, что и бинарный файл в формате `proxy_port=8080`

#### 3.3. Поддержание работы соединения: - Приложение должно отслеживать состояние соединение.
- В случае потери соединения, приложение должно пытаться восстановить соединение без уведомления пользователя.

#### 3.4. Завершение работы соединения: - При выборе "Завершить работу соединения" приложение должно корректно завершать SSH соединение и соединение.

#### 3.5. Выход из приложения: - При выборе "Выход" приложение должно завершить все активные соединения и закрыться.

### 4. Требования к платформам: - Код приложения должен быть кроссплатформенным и работать в операционных системах: Windows, macOS, Linux.

### 5. Технологии разработки: - Язык программирования: C++
- Фреймворк для GUI: Qt
- Взаимодействие с SSH: использование libssh, libssh2 или аналогичной библиотеки для работы с SSH протоколом.
- Приложение не должно требовать установки - все библиотеки линкуются в процессе сборки статично.

### 6. Логирование: - Приложение должно вести лог операций для упрощения отладки и мониторинга состояния соединения.
- файл лога `ssh.log`

### 7. Безопасность:
- Приложение должно корректно обрабатывать ключи SSH, не допуская их компрометации.
- Приложение не должно детектироваться VirusTotal, как содержащее вредоносный код

### 8. Документация: - Код должен содержать комментарии, объясняющие ключевые моменты реализации.
- Должна быть предоставлена пользовательская документация по установке и использованию приложения.

### 9. Тестирование: - Приложение должно быть протестировано на всех целевых платформах для проверки работоспособности функционала.
___________________________________________________________
Приглашается к сотрудничеству C++ профессионал.
Безопасная сделка.

Евгений Красов, прошу откликнуться, Вы в приоритете