Naslagwerk voor de backend-SDK van plugins
De code van backendplugins wordt uitgevoerd in de JavaScript-sandbox van Ogma en ontvangt een sdk-object van de hostapplicatie.
Begin met de handleiding voor het pluginsysteem voor het volledige pluginpakketformaat, de manifestvelden, machtigingen en voorbeelden.
Toegangspunt
Backendplugins bieden een init-functie:
js
async function init(sdk) {
sdk.console.log("plugin started");
}Ogma roept init(sdk) aan wanneer de plugin wordt ingeschakeld.
Kernnaamruimten
| Naamruimte | Doel |
|---|---|
sdk.console | Berichten naar de logbuffer van de plugin schrijven. |
sdk.meta | Pluginmetadata en gegevenspaden lezen. |
sdk.events | Callbacks voor Ogma-gebeurtenissen registreren. |
sdk.requests | De HTTP-geschiedenis en verzoekgegevens opvragen. |
sdk.findings | Bevindingen opvragen of aanmaken wanneer de machtigingen dit toestaan. |
sdk.scope | Informatie over de actieve scope lezen. |
sdk.storage | Sleutel/waarde-opslag voor de plugintoestand. |
sdk.fs | Bestandsbewerkingen in de privégegevensmap van de plugin. |
sdk.path | Hulpfuncties om paden in de gegevensmap van de plugin samen te stellen. |
sdk.api | Backendhandlers beschikbaar maken voor de pluginfrontend. |
Logging
js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")Berichten zijn zichtbaar op het tabblad Logboeken van de plugin. Houd logs beknopt en vermijd het loggen van geheimen.
Metadata
js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()Gebruik sdk.meta.path() voor pluginspecifieke gegevens. Ga er niet van uit dat plugincode in de sandbox toegang heeft tot willekeurige paden in het bestandssysteem.
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")Gebeurtenissen
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")
})Callbacks horen snel te worden uitgevoerd. Laat langdurig werk starten via expliciete gebruikersacties of backend-API-handlers.
Handlers voor de frontendbridge
Backendplugins kunnen handlers beschikbaar maken voor frontendpluginpanelen:
js
sdk.api.register("ping", async function(input) {
return { ok: true, input: input };
});De frontend roept de handler aan via de Ogma-frontend-SDK. Zie het naslagwerk voor de frontend-SDK.
Beveiligingsrichtlijnen
- Behandel HTTP-verkeer, bevindingen, logs en exports als gevoelige gegevens.
- Vraag alleen de machtigingen aan die je plugin nodig heeft.
- Log standaard nooit inloggegevens, cookies, bearertokens of privéverkeer.
- Zorg dat het gedrag van de plugin expliciet en begrijpelijk is voor de gebruiker.