معماری
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، دادههای مرجع صدور گواهی، افزونهها، خروجیها، نسخههای پشتیبان و فایلها. |
بکاند
بکاند یک رابط 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 Browser و نماهای مرورگر تعبیهشده.
- بستهبندی منابع و فایلهای اجرایی برای توزیع دسکتاپ.
مدل ذخیرهسازی
Ogma دادههای ارزیابی را محلی نگه میدارد. مهاجرتهای بکاند جدولهایی در محدودهٔ هر پروژه برای موارد زیر تعریف میکنند:
- تاریخچه و بدنههای HTTP.
- ترافیک WebSocket و SSE.
- نشستها و تلاشهای بازپخش.
- نشستها، اجراها و نتایج خودکارسازی.
- یافتهها و پیوندهای شواهد.
- گردشهای کار و اجراهای آنها.
- پیشتنظیمهای محدودهٔ آزمون.
- افزونهها و مجوزهای آنها.
- فایلها، خروجیها، نسخههای پشتیبان و تنظیمات.
محیط اجرای افزونهها
افزونهها میتوانند شامل اجزای بکاند، اجزای فرانتاند یا هر دو باشند.
افزونههای بکاند در یک محیط ایزولهٔ JavaScript اجرا میشوند و یک شیء sdk دریافت میکنند. افزونههای فرانتاند در iframeهای ایزوله اجرا میشوند و از طریق پلی که Ogma کنترل میکند ارتباط برقرار میکنند.
مرزهای مهم:
- افزونههای فرانتاند نمیتوانند به DOM والد دسترسی داشته باشند.
- فرمانهای پل در سمت سرور اعتبارسنجی میشوند.
- اقدامات محافظتشدهٔ بکاند به مجوزهایی نیاز دارند که هم اعلام شده و هم اعطا شده باشند.
- بستههای نصبشده در پوشهٔ افزونههای تحت مدیریت Ogma کپی میشوند تا رفتار زمان اجرا پایدار بماند.
به نظام افزونهها مراجعه کنید.
یکپارچهسازی MCP
سرور MCP زمینهٔ پروژهٔ Ogma را در اختیار دستیارهای خارجی قرار میدهد. این سرور بهطور پیشفرض در حالت فقطخواندنی شروع میشود. قابلیتهای نوشتن، خروجی گرفتن، ارسال درخواست، اجرای گردش کار و کنترل رهگیری به مجوزهای صریح نیاز دارند.
به راهاندازی MCP مراجعه کنید.
اصول طراحی
- اولویت با اجرای محلی بهطور پیشفرض.
- یافتههای مرتبط با شواهد.
- تعیین محدودهٔ آزمون پیش از خودکارسازی.
- الزام مجوزهای صریح برای هوش مصنوعی، افزونهها، ارسال درخواست و خروجی گرفتن.
- پیمایش سریع برای گردشهای کار تکراری آزمونگر.
- سازگاری با گردشهای کار رایج پراکسی، در عین حفظ توسعهپذیری Ogma.