Десктопное приложение (GUI)
PRX-SD включает кросс-платформенное десктопное приложение, созданное на Tauri 2 (бэкенд на Rust) и Vue 3 (фронтенд на TypeScript). GUI предоставляет визуальный интерфейс ко всем основным функциям движка без использования командной строки.
Архитектура
+----------------------------------------------+
| PRX-SD Desktop App |
| |
| Vue 3 Frontend Tauri 2 Backend |
| (Vite + TypeScript) (Rust + IPC) |
| |
| +------------------+ +-----------------+ |
| | Dashboard |<->| scan_path() | |
| | File Scanner | | scan_directory()| |
| | Quarantine Mgmt | | get_config() | |
| | Config Editor | | save_config() | |
| | Signature Update | | update_sigs() | |
| | Alert History | | get_alerts() | |
| | Adblock Panel | | adblock_*() | |
| | Monitor Control | | start/stop() | |
| +------------------+ +-----------------+ |
| |
| System Tray Icon (32x32) |
+----------------------------------------------+Бэкенд Tauri предоставляет 18 IPC-команд, которые Vue-фронтенд вызывает для взаимодействия с движком сканирования, хранилищем карантина, базой данных сигнатур и движком фильтрации adblock. Вся тяжёлая работа (сканирование, сопоставление YARA, поиск хешей) выполняется в Rust; фронтенд занимается только рендерингом.
Функции
Дашборд реального времени
Дашборд отображает статус безопасности на первый взгляд:
- Всего сканирований выполнено
- Найденных угроз счётчик
- Файлов в карантине счётчик
- Время последнего сканирования
- Статус мониторинга (активен/неактивен)
- График истории сканирований (последние 7 дней)
- Список последних угроз с путями, названиями угроз и уровнями серьёзности
Сканирование перетаскиванием
Перетащите файлы или папки в окно приложения для немедленного начала сканирования. Результаты отображаются в сортируемой таблице с столбцами для пути, уровня угрозы, типа обнаружения, названия угрозы и времени сканирования.
Управление карантином
Просмотр, восстановление и удаление файлов в карантине через визуальный интерфейс:
- Сортируемая таблица с ID, исходным путём, названием угрозы, датой и размером файла
- Восстановление в исходное расположение одним кликом
- Окончательное удаление одним кликом
- Статистика хранилища (всего файлов, общий размер, самая старая/новая запись)
Редактор конфигурации
Редактирование всех настроек движка через интерфейс на основе форм. Изменения записываются в ~/.prx-sd/config.json и вступают в силу при следующем сканировании.
Обновления сигнатур
Запуск обновлений базы данных сигнатур из GUI. Бэкенд загружает последний манифест, проверяет целостность SHA-256 и устанавливает обновление. Движок автоматически переинициализируется с новыми сигнатурами.
Панель Adblock
Управление блокировкой рекламы и вредоносных доменов:
- Включение/отключение защиты adblock
- Синхронизация списков фильтров
- Проверка отдельных доменов
- Просмотр журнала блокировок (последние 50 записей)
- Просмотр конфигурации списков и статистики
Системный трей
PRX-SD располагается в системном трее с постоянным значком, обеспечивая быстрый доступ к:
- Открытию главного окна
- Запуску/остановке мониторинга в реальном времени
- Проверке статуса демона
- Запуску быстрого сканирования
- Выходу из приложения
TIP
Значок системного трея настроен как 32x32 пикселя. На дисплеях с высоким DPI Tauri автоматически использует вариант [email protected].
Сборка из исходного кода
Предварительные требования
- Rust 1.85.0 или новее
- Node.js 18+ с npm
- Системные зависимости (Linux):
# Debian/Ubuntu
sudo apt install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
# Fedora
sudo dnf install -y webkit2gtk4.1-devel libappindicator-gtk3-devel librsvg2-develРежим разработки
Запустить фронтенд dev-сервер и бэкенд Tauri вместе с горячей перезагрузкой:
cd gui
npm install
npm run tauri devЗапускается:
- Vite dev-сервер на
http://localhost:1420 - Бэкенд Tauri, загружающий URL разработки
Продакшен-сборка
Сборка дистрибутивного пакета приложения:
cd gui
npm install
npm run tauri buildВывод сборки зависит от платформы:
| Платформа | Вывод |
|---|---|
| Linux | .deb, .AppImage, .rpm в src-tauri/target/release/bundle/ |
| macOS | .dmg, .app в src-tauri/target/release/bundle/ |
| Windows | .msi, .exe в src-tauri\target\release\bundle\ |
Конфигурация приложения
Приложение Tauri настраивается через gui/src-tauri/tauri.conf.json:
{
"productName": "PRX-SD",
"version": "0.1.0",
"identifier": "com.prxsd.app",
"app": {
"windows": [
{
"title": "PRX-SD Antivirus",
"width": 1200,
"height": 800,
"minWidth": 900,
"minHeight": 600,
"center": true,
"resizable": true
}
],
"trayIcon": {
"id": "main-tray",
"iconPath": "icons/32x32.png",
"tooltip": "PRX-SD Antivirus"
}
}
}IPC-команды
Бэкенд предоставляет следующие команды Tauri фронтенду:
| Команда | Описание |
|---|---|
scan_path | Сканировать файл или каталог, вернуть результаты |
scan_directory | Рекурсивно сканировать каталог |
start_monitor | Проверить и запустить мониторинг в реальном времени |
stop_monitor | Остановить демон мониторинга |
get_quarantine_list | Список всех записей в карантине |
restore_quarantine | Восстановить файл из карантина по ID |
delete_quarantine | Удалить запись карантина по ID |
get_config | Прочитать текущую конфигурацию сканирования |
save_config | Записать конфигурацию сканирования на диск |
get_engine_info | Получить версию движка, количество сигнатур, правила YARA |
update_signatures | Загрузить и установить последние сигнатуры |
get_alert_history | Прочитать историю оповещений из журналов аудита |
get_dashboard_stats | Агрегировать статистику дашборда |
get_adblock_stats | Получить статус adblock и количество правил |
adblock_enable | Включить блокировку рекламы через файл hosts |
adblock_disable | Отключить блокировку рекламы через файл hosts |
adblock_sync | Перезагрузить списки фильтров |
adblock_check | Проверить заблокирован ли домен |
get_adblock_log | Прочитать последние записи журнала блокировок |
Каталог данных
GUI использует тот же каталог данных ~/.prx-sd/, что и CLI. Изменения конфигурации, внесённые в GUI, видны командам sd и наоборот.
WARNING
GUI и CLI используют общее состояние движка сканирования. Если демон запущен через sd daemon, кнопка «Start Monitor» в GUI проверяет готовность, но фактический мониторинг выполняется процессом демона. Избегайте одновременного запуска GUI-сканера и демон-сканера для одних и тех же файлов.
Технологический стек
| Компонент | Технология |
|---|---|
| Бэкенд | Tauri 2, Rust |
| Фронтенд | Vue 3, TypeScript, Vite 6 |
| IPC | Протокол команд Tauri |
| Трей | Плагин трея Tauri |
| Упаковщик | Упаковщик Tauri (deb/AppImage/dmg/msi) |
| API-привязки | @tauri-apps/api v2 |
Следующие шаги
- Установите PRX-SD, следуя Руководству по установке
- Изучите CLI для создания скриптов и автоматизации
- Настройте движок через Справочник конфигурации
- Расширьте обнаружение с помощью WASM-плагинов