Referensi SDK Backend Plugin
Kode plugin backend berjalan dalam sandbox JavaScript Ogma dan menerima objek sdk dari aplikasi host.
Untuk format paket plugin lengkap, kolom manifes, izin, dan contoh, mulailah dengan Panduan sistem plugin.
Titik masuk
Plugin backend menyediakan fungsi init:
js
async function init(sdk) {
sdk.console.log("plugin started");
}Ogma memanggil init(sdk) ketika plugin diaktifkan.
Namespace utama
| Namespace | Tujuan |
|---|---|
sdk.console | Menulis pesan ke buffer log plugin. |
sdk.meta | Membaca metadata plugin dan path data. |
sdk.events | Mendaftarkan callback untuk peristiwa Ogma. |
sdk.requests | Mengueri riwayat HTTP dan data permintaan. |
sdk.findings | Mengueri atau membuat temuan ketika izin mengizinkannya. |
sdk.scope | Membaca informasi cakupan aktif. |
sdk.storage | Persistensi kunci/nilai untuk status plugin. |
sdk.fs | Operasi file dalam direktori data privat plugin. |
sdk.path | Helper path untuk menyusun path dalam direktori data plugin. |
sdk.api | Menyediakan handler backend kepada frontend plugin. |
Pencatatan Log
js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")Pesan terlihat dalam UI log plugin. Jaga log tetap ringkas dan hindari menulis rahasia.
Metadata
js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()Gunakan sdk.meta.path() untuk data khusus plugin. Jangan menganggap kode plugin dalam sandbox dapat mengakses path sistem file sembarang.
js
sdk.storage.set("key", "value")
sdk.storage.get("key")
sdk.storage.keys()
sdk.storage.delete("key")
sdk.storage.clear()js
sdk.fs.readFile("relative/file.txt")
sdk.fs.writeFile("relative/file.txt", "text")
sdk.fs.appendFile("relative/file.txt", "more")
sdk.fs.exists("relative/file.txt")
sdk.fs.existsSync("relative/file.txt")
sdk.fs.mkdir("relative/dir")
sdk.path.join("a", "b", "c")Peristiwa
js
sdk.events.onInterceptRequest(function(req) {
return req
})
sdk.events.onInterceptResponse(function(req, res) {
sdk.console.log(res.getCode())
})
sdk.events.onProjectChange(function() {
sdk.console.log("project changed")
})Callback sebaiknya cepat. Pekerjaan yang berlangsung lama sebaiknya dipindahkan ke tindakan pengguna eksplisit atau handler API backend.
Handler bridge frontend
Plugin backend dapat menyediakan handler untuk panel plugin frontend:
js
sdk.api.register("ping", async function(input) {
return { ok: true, input: input };
});Frontend memanggil handler melalui SDK frontend Ogma. Lihat Referensi SDK frontend.
Ekspektasi keamanan
- Perlakukan lalu lintas HTTP, temuan, log, dan ekspor sebagai sensitif.
- Minta hanya izin yang diperlukan plugin Anda.
- Jangan pernah mencatat kredensial, cookie, token bearer, atau lalu lintas privat secara default.
- Jaga perilaku plugin tetap eksplisit dan dapat dipahami pengguna.