Aller au contenu

Référence du SDK backend des plugins ​

Le code backend des plugins s'exécute dans le bac à sable JavaScript d'Ogma et reçoit un objet sdk de l'application hôte.

Pour connaître le format complet des paquets de plugins, les champs du manifeste, les permissions et les exemples, commencez par le guide du système de plugins.

Point d'entrée ​

Les plugins backend exposent une fonction init :

js
async function init(sdk) {
  sdk.console.log("plugin started");
}

Ogma appelle init(sdk) lorsque le plugin est activé.

Espaces de noms principaux ​

Espace de nomsFonction
sdk.consoleÉcrire des messages dans le tampon des journaux du plugin.
sdk.metaLire les métadonnées du plugin et les chemins de ses données.
sdk.eventsEnregistrer des fonctions de rappel pour les événements Ogma.
sdk.requestsInterroger l'historique HTTP et les données des requêtes.
sdk.findingsConsulter ou créer des constats de sécurité lorsque les permissions le permettent.
sdk.scopeLire les informations sur le périmètre actif.
sdk.storageConserver l'état du plugin sous forme de paires clé/valeur.
sdk.fsEffectuer des opérations sur les fichiers dans le répertoire de données privé du plugin.
sdk.pathUtiliser des fonctions utilitaires pour construire des chemins dans le répertoire de données du plugin.
sdk.apiExposer des gestionnaires backend au frontend du plugin.

Journalisation ​

js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")

Les messages sont visibles dans l'interface des journaux du plugin. Gardez les journaux concis et évitez d'y écrire des secrets.

Métadonnées ​

js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()

Utilisez sdk.meta.path() pour les données propres au plugin. Ne présumez pas que le code du plugin exécuté en bac à sable peut accéder à des chemins arbitraires du système de fichiers.

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")

Événements ​

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")
})

Les fonctions de rappel doivent être rapides. Les traitements longs doivent être déclenchés par des actions explicites de l'utilisateur ou par des gestionnaires de l'API backend.

Gestionnaires de la passerelle frontend ​

Les plugins backend peuvent exposer des gestionnaires destinés aux panneaux frontend des plugins :

js
sdk.api.register("ping", async function(input) {
  return { ok: true, input: input };
});

Le frontend appelle le gestionnaire via le SDK frontend d'Ogma. Voir la référence du SDK frontend.

Exigences de sécurité ​

  • Considérez le trafic HTTP, les constats, les journaux et les exports comme des données sensibles.
  • Ne demandez que les permissions nécessaires à votre plugin.
  • Ne journalisez jamais par défaut les identifiants d'authentification, les cookies, les jetons porteurs ou le trafic privé.
  • Veillez à ce que le comportement du plugin soit explicite et compréhensible pour l'utilisateur.

Logiciel propriétaire. Tous droits réservés.