Langsung ke konten

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 ​

NamespaceTujuan
sdk.consoleMenulis pesan ke buffer log plugin.
sdk.metaMembaca metadata plugin dan path data.
sdk.eventsMendaftarkan callback untuk peristiwa Ogma.
sdk.requestsMengueri riwayat HTTP dan data permintaan.
sdk.findingsMengueri atau membuat temuan ketika izin mengizinkannya.
sdk.scopeMembaca informasi cakupan aktif.
sdk.storagePersistensi kunci/nilai untuk status plugin.
sdk.fsOperasi file dalam direktori data privat plugin.
sdk.pathHelper path untuk menyusun path dalam direktori data plugin.
sdk.apiMenyediakan 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.

Perangkat lunak proprietari. Seluruh hak cipta dilindungi.