Архітектура
Ogma побудовано як локальний настільний застосунок із бекендом Rust, фронтендом Vue, оболонкою Electron, локальним сховищем проєктів, середовищем виконання плагінів і необов’язковою інтеграцією MCP.
Основні компоненти
| Компонент | Розташування | Відповідальність |
|---|---|---|
| Бекенд проксі й API на Rust | crates/proxy | MITM-проксі, REST API, сховище, сканери, повторне надсилання, автоматизація, плагіни, MCP, OAST, кінцеві точки керування браузером. |
| Фронтенд Vue | frontend/src | Інтерфейс простору, сховища стану, маршрути, редактори, сканери, iframe плагінів, простір ШІ, утиліти. |
| Настільна оболонка Electron | desktop | Упакований настільний застосунок, інтеграція вікон браузера, міст налаштувань, життєвий цикл застосунку. |
| Документація | docs | Сайт документації VitePress. |
| Каталог даних | ogma-data або каталог даних застосунку платформи | База SQLite, матеріали CA, плагіни, експорти, резервні копії, файли. |
Бекенд
Бекенд надає REST API й порт прослуховування проксі. Основні модулі:
proxy_server.rs: перехоплення й передавання HTTP.intercept.rsіintercept_rules.rs: черга перехоплення й зіставлення.store.rsіstore_actor.rs: доступ до бази проєкту й асинхронний дескриптор сховища.api.rs: маршрутизація й обробники API.replay.rs,automate.rsіworkflows.rs: повторюване виконання запитів.passive_scanner.rsіactive_scanner.rs: рушії сканерів.plugins.rsіplugin_runtime.rs: метадані плагінів, ізольоване середовище виконання, дозволи й події.mcp.rs: ресурси й інструменти MCP.ca.rs,tls_cert.rs,client_cert.rs: підтримка сертифікатів і TLS.ws_history.rs,ws_replay.rsіsse.rs: підтримка потокового трафіку.oast.rs: служби позасмугових зворотних викликів.
Фронтенд
Фронтенд — застосунок Vue з лінивим завантаженням на рівні маршрутів для більшості розділів робочого простору.
Основні ділянки:
router/index.ts: маршрути простору й налаштувань.components/NavSidebar.vue: основна навігація продукту.stores/*: сховища Pinia для історії, повторного надсилання, автоматизації, знахідок, процесів, плагінів, області, оболонки, ШІ та іншого стану.api/client.tsіapi/types.ts: типізований інтерфейс клієнта API.views/*: сторінки функцій робочого простору.components/WorkspacePanel.vue: панель простору ШІ й зворотної оболонки.views/PluginsView.vueіviews/PluginPageView.vue: установлення й керування плагінами та розміщення iframe їхнього інтерфейсу.
Настільна оболонка
Оболонка Electron надає можливості упакованого настільного застосунку й функції нативного мосту:
- Запуск і керування вікном застосунку.
- Збереження настільних налаштувань у локальному сховищі фронтенда.
- Відкриття вікон браузера Ogma й вбудованих браузерних подань.
- Пакування ресурсів і бінарних файлів для настільного поширення.
Модель зберігання
Ogma зберігає дані оцінювання локально. Міграції бекенда визначають таблиці проєкту для:
- Історії HTTP й тіл.
- Трафіку WebSocket і SSE.
- Сеансів і спроб повторного надсилання.
- Сеансів, запусків і результатів автоматизації.
- Знахідок і зв’язків із доказами.
- Робочих процесів та їхніх запусків.
- Наборів області тестування.
- Плагінів та їхніх дозволів.
- Файлів, експортів, резервних копій і налаштувань.
Середовище виконання плагінів
Плагіни можуть містити серверні компоненти, компоненти інтерфейсу або обидва типи.
Серверні плагіни виконуються в ізольованому середовищі JavaScript й отримують об’єкт sdk. Плагіни інтерфейсу виконуються в ізольованих iframe й спілкуються через міст, контрольований Ogma.
Важливі межі:
- Плагіни інтерфейсу не можуть отримати доступ до батьківського DOM.
- Команди мосту перевіряються на сервері.
- Захищені серверні дії потребують заявлених і наданих дозволів.
- Установлені пакети копіюються до керованого каталогу плагінів Ogma для стабільної поведінки під час виконання.
Див. Система плагінів.
Інтеграція MCP
MCP-сервер надає контекст проєкту Ogma зовнішнім помічникам. За замовчуванням він запускається лише для читання. Запис, експорт, надсилання запитів, виконання процесів і керування перехопленням потребують явних дозволів.
Див. Налаштування MCP.
Принципи проєктування
- Пріоритет локальної роботи за замовчуванням.
- Знахідки, пов’язані з доказами.
- Область тестування перед автоматизацією.
- Явні дозволи для ШІ, плагінів, надсилання запитів та експорту.
- Швидка навігація для повторюваних процесів тестувальника.
- Сумісність з усталеними процесами роботи з проксі зі збереженням розширюваності Ogma.