Architectuur
Ogma is gebouwd als een lokale desktopapplicatie met een Rust-backend, Vue-frontend, Electron-shell, lokale projectopslag, een pluginruntime en optionele MCP-integratie.
Hoofdcomponenten
| Component | Locatie | Verantwoordelijkheid |
|---|---|---|
| Rust-proxy-/API-backend | crates/proxy | MITM-proxy, REST-API, opslag, scanners, replay, automatisering, plugins, MCP, OAST, eindpunten voor browserbesturing. |
| Vue-frontend | frontend/src | Werkruimte-interface, stores, routes, editors, scanners, plugin-iframes, AI-werkruimte, hulpprogramma's. |
| Electron-desktopshell | desktop | Verpakte desktopapp, integratie van browservensters, instellingenbridge, levenscyclus van de app. |
| Documentatie | docs | VitePress-documentatiesite. |
| Gegevensmap | ogma-data of de appgegevensmap van het platform | SQLite-database, CA-materiaal, plugins, exports, back-ups, bestanden. |
Backend
De backend biedt een REST-API en een proxylistener. De belangrijkste backendmodules zijn:
proxy_server.rs: HTTP-interceptie en doorsturen.intercept.rsenintercept_rules.rs: interceptiewachtrij en selectie op basis van regels.store.rsenstore_actor.rs: toegang tot de projectdatabase en een asynchrone store-handle.api.rs: API-routering en handlers.replay.rs,automate.rsenworkflows.rs: herhaalbare uitvoering van verzoeken.passive_scanner.rsenactive_scanner.rs: scannerengines.plugins.rsenplugin_runtime.rs: pluginmetadata, sandboxruntime, machtigingen en gebeurtenissen.mcp.rs: MCP-resources en -tools.ca.rs,tls_cert.rs,client_cert.rs: ondersteuning voor certificaten en TLS.ws_history.rs,ws_replay.rsensse.rs: ondersteuning voor streamingverkeer.oast.rs: diensten voor out-of-bandcallbacks.
Frontend
De frontend is een Vue-applicatie die de meeste werkruimteweergaven pas laadt wanneer de bijbehorende route wordt geopend.
Belangrijke onderdelen:
router/index.ts: routes voor de werkruimte en instellingen.components/NavSidebar.vue: hoofdnavigatie van het product.stores/*: Pinia-stores voor HTTP-geschiedenis, Opnieuw versturen, Automatiseren, bevindingen, workflows, plugins, scope, shell, AI en andere toestand.api/client.tsenapi/types.ts: getypeerde API-clientinterface.views/*: functiepagina's van de werkruimte.components/WorkspacePanel.vue: werkruimtepaneel voor AI en reverse shells.views/PluginsView.vueenviews/PluginPageView.vue: installatie en beheer van plugins en hosting van frontend-iframes.
Desktopshell
De Electron-shell biedt de verpakte desktopervaring en native bridgefuncties:
- Het appvenster starten en besturen.
- Desktopinstellingen bewaren in de lokale opslag van de frontend.
- Ogma-browservensters en ingesloten browserweergaven openen.
- Assets en uitvoerbare bestanden verpakken voor desktopdistributie.
Opslagmodel
Ogma bewaart onderzoeksgegevens lokaal. De backendmigraties definiëren tabellen per project voor:
- HTTP-geschiedenis en bodies.
- WebSocket- en SSE-verkeer.
- Sessies en pogingen in Opnieuw versturen.
- Sessies, uitvoeringen en resultaten in Automatiseren.
- Bevindingen en koppelingen naar bewijsmateriaal.
- Workflows en workflowuitvoeringen.
- Scopevoorinstellingen.
- Plugins en pluginmachtigingen.
- Bestanden, exports, back-ups en instellingen.
Pluginruntime
Plugins kunnen backendcomponenten, frontendcomponenten of beide bevatten.
Backendplugins worden in een JavaScript-sandbox uitgevoerd en ontvangen een sdk-object. Frontendplugins worden in afgeschermde iframes uitgevoerd en communiceren via een bridge die Ogma beheert.
Belangrijke grenzen:
- Frontendplugins hebben geen toegang tot de DOM van de bovenliggende pagina.
- Bridgeopdrachten worden aan de serverzijde gevalideerd.
- Beschermde backendacties vereisen machtigingen die zijn gedeclareerd en verleend.
- Geïnstalleerde pakketten worden gekopieerd naar de pluginmap die Ogma beheert, zodat de runtime stabiel blijft werken.
Zie Pluginsysteem.
MCP-integratie
De MCP-server stelt Ogma-projectcontext beschikbaar aan externe assistenten. Standaard start hij in de alleen-lezenmodus. Schrijven, exporteren, verzoeken versturen, workflows uitvoeren en interceptie besturen vereisen expliciete machtigingen.
Zie MCP instellen.
Ontwerpprincipes
- Standaard primair lokaal werken.
- Bevindingen met koppelingen naar bewijsmateriaal.
- Scope bepalen vóór automatisering.
- Expliciete machtigingscontroles voor AI, plugins, het versturen van verzoeken en exports.
- Snelle navigatie voor terugkerende workflows van testers.
- Compatibiliteit met gevestigde proxyworkflows, terwijl Ogma uitbreidbaar blijft.