Architektura
Ogma je místní desktopová aplikace s backendem v Rustu, frontendem ve Vue, desktopovým obalem v Electronu, místním úložištěm projektů, běhovým prostředím pluginů a volitelnou integrací MCP.
Hlavní komponenty
| Komponenta | Umístění | Odpovědnost |
|---|---|---|
| Backend proxy/API v Rustu | crates/proxy | MITM proxy, REST API, úložiště, skenery, opětovné odesílání, automatizace, pluginy, MCP, OAST, koncové body pro ovládání prohlížeče. |
| Frontend ve Vue | frontend/src | Rozhraní pracovního prostoru, úložiště stavu, trasy, editory, skenery, iframe pluginů, pracovní prostor AI, pomocné nástroje. |
| Desktopový obal v Electronu | desktop | Zabalená desktopová aplikace, integrace oken prohlížeče, můstek pro nastavení, životní cyklus aplikace. |
| Dokumentace | docs | Dokumentační web ve VitePress. |
| Datový adresář | ogma-data nebo adresář dat aplikace na dané platformě | Databáze SQLite, materiál certifikační autority, pluginy, exporty, zálohy, soubory. |
Backend
Backend poskytuje REST API a naslouchající rozhraní proxy. Mezi hlavní backendové moduly patří:
proxy_server.rs: zachytávání a předávání HTTP.intercept.rsaintercept_rules.rs: fronta zachycených zpráv a vyhodnocování shody.store.rsastore_actor.rs: přístup k databázi projektu a asynchronní rozhraní úložiště.api.rs: směrování API a obslužné funkce.replay.rs,automate.rsaworkflows.rs: opakovatelné provádění požadavků.passive_scanner.rsaactive_scanner.rs: jádra skenerů.plugins.rsaplugin_runtime.rs: metadata pluginů, běhové prostředí sandboxu, oprávnění a události.mcp.rs: zdroje a nástroje MCP.ca.rs,tls_cert.rs,client_cert.rs: podpora certifikátů a TLS.ws_history.rs,ws_replay.rsasse.rs: podpora streamovaného provozu.oast.rs: služby pro zpětná volání mimo hlavní komunikační kanál.
Frontend
Frontend je aplikace ve Vue, která většinu pohledů pracovního prostoru načítá odloženě na úrovni tras.
Klíčové oblasti:
router/index.ts: trasy pracovního prostoru a nastavení.components/NavSidebar.vue: hlavní navigace produktu.stores/*: úložiště Pinia pro historii, opakované odesílání, automatizaci, nálezy, pracovní postupy, pluginy, rozsah testování, shell, AI a další stav.api/client.tsaapi/types.ts: typované rozhraní klienta API.views/*: stránky funkcí pracovního prostoru.components/WorkspacePanel.vue: panel pracovního prostoru pro AI a reverzní shell.views/PluginsView.vueaviews/PluginPageView.vue: instalace a správa pluginů a hostování frontendových iframe.
Desktopový obal
Obal v Electronu zajišťuje prostředí zabalené desktopové aplikace a nativní funkce můstku:
- Spouštění a ovládání okna aplikace.
- Trvalé ukládání desktopových nastavení do místního úložiště frontendu.
- Otevírání oken prohlížeče Ogma a vložených pohledů prohlížeče.
- Balení prostředků a binárních souborů pro distribuci desktopové aplikace.
Model ukládání dat
Ogma uchovává data bezpečnostního testování místně. Backendové migrace definují tabulky vázané na projekt pro:
- Historii HTTP a těla zpráv.
- Provoz WebSocket a SSE.
- Relace funkce Opakované odesílání a jednotlivé pokusy.
- Relace, běhy a výsledky funkce Automatizace.
- Nálezy a odkazy na důkazy.
- Pracovní postupy a jejich běhy.
- Předvolby rozsahu testování.
- Pluginy a oprávnění pluginů.
- Soubory, exporty, zálohy a nastavení.
Běhové prostředí pluginů
Pluginy mohou zahrnovat backendové komponenty, frontendové komponenty nebo obojí.
Backendové pluginy běží v JavaScriptovém sandboxu a dostávají objekt sdk. Frontendové pluginy běží v izolovaných iframe a komunikují prostřednictvím můstku řízeného aplikací Ogma.
Důležité hranice:
- Frontendové pluginy nemají přístup k nadřazenému DOM.
- Příkazy můstku se validují na straně serveru.
- Chráněné backendové akce vyžadují deklarovaná a udělená oprávnění.
- Nainstalované balíčky se kopírují do adresáře pluginů spravovaného aplikací Ogma, aby bylo chování za běhu stabilní.
Viz Systém pluginů.
Integrace MCP
Server MCP zpřístupňuje kontext projektu Ogma externím asistentům. Ve výchozím nastavení se spouští pouze pro čtení. Zápis, export, odesílání požadavků, spouštění pracovních postupů a ovládání zachytávání vyžadují explicitní oprávnění.
Viz Nastavení MCP.
Principy návrhu
- Ve výchozím nastavení upřednostňovat místní zpracování.
- Propojovat nálezy s důkazy.
- Vymezit rozsah testování před automatizací.
- Explicitně vynucovat oprávnění pro AI, pluginy, odesílání požadavků a exporty.
- Umožnit rychlou navigaci při opakovaných pracovních postupech testerů.
- Zachovat kompatibilitu se zavedenými pracovními postupy s proxy a současně rozšiřitelnost Ogma.