Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Десктопное приложение (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):
bash
# 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 вместе с горячей перезагрузкой:

bash
cd gui
npm install
npm run tauri dev

Запускается:

  • Vite dev-сервер на http://localhost:1420
  • Бэкенд Tauri, загружающий URL разработки

Продакшен-сборка

Сборка дистрибутивного пакета приложения:

bash
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:

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

Следующие шаги

Released under the Apache-2.0 License.