Panduan Awal Plugin
Panduan ini membawa Anda dari folder kosong ke plugin yang berjalan dengan cepat.
1) Buat plugin minimal yang hanya memiliki backend
Buat folder dengan file berikut:
text
my-plugin/
manifest.json
backend/
script.jsmanifest.json:
json
{
"id": "my-plugin",
"name": "My Plugin",
"version": "0.1.0",
"plugins": [
{
"kind": "backend",
"id": "my-plugin-backend",
"entrypoint": "backend/script.js"
}
]
}backend/script.js:
js
async function init(sdk) {
sdk.console.log("Plugin started");
sdk.events.onInterceptResponse(function(req, res) {
if (!res) return;
if (res.getCode() === 403) {
sdk.console.warn("403 on " + req.getUrl());
}
});
}Instal dari Plugin > Pasang, pilih folder, aktifkan plugin, dan pastikan log menampilkan Plugin started.
2) Jika Anda menggunakan TypeScript
Gunakan struktur ini:
text
my-plugin/
manifest.json
backend/
src/index.tsBundel dengan:
bash
pnpm add -D @ogmabox/ogma-sdk esbuild typescript
pnpm exec esbuild backend/src/index.ts \
--bundle \
--platform=neutral \
--format=iife \
--external:@ogma/sdk --external:@ogmabox/ogma-sdk \
--outfile=backend/script.jsLalu instal folder seperti di atas.
3) Tambahkan frontend nanti
Tambahkan entri frontend dan file UI hanya ketika Anda memerlukan panel:
text
my-plugin/
frontend/
script.js
style.css # optionalLalu perluas manifest.json dengan:
json
{
"kind": "frontend",
"id": "my-plugin-frontend",
"entrypoint": "frontend/script.js",
"backend": { "id": "my-plugin-backend" }
}Untuk komunikasi frontend, gunakan window.ogmaSDK.ready(...) dan tempatkan pemanggilan backend dalam handler sdk.api.
4) Izin yang hampir selalu Anda perlukan
Untuk contoh backend di atas:
- tidak ada (izin default yang aman diberikan otomatis)
Jika plugin Anda mengirim permintaan keluar, tambahkan:
json
"permissions": ["send_requests"]Jika plugin Anda menulis temuan, tambahkan:
json
"permissions": ["write_findings"]Minta hanya izin yang benar-benar Anda gunakan.
Pemecahan masalah plugin pertama
Plugin failed to initialize→ buka Log dan pastikaninit(sdk)didefinisikan.Invalid manifest→ periksa koma dan tanda kutip JSON.- Callback tidak terpicu → pastikan plugin diaktifkan dan peristiwa yang sesuai (
onInterceptResponse) didaftarkan.
Untuk referensi API lengkap: