Início rápido de plugins
Este guia leva você rapidamente de uma pasta vazia a um plugin em execução.
1) Crie um plugin mínimo somente de backend
Crie uma pasta com estes arquivos:
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());
}
});
}Instale em Plugins > Instalar, selecione a pasta, habilite o plugin e verifique se os logs mostram Plugin started.
2) Se você usa TypeScript
Use esta estrutura:
text
my-plugin/
manifest.json
backend/
src/index.tsEmpacote com:
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.jsDepois, instale a pasta conforme descrito acima.
3) Adicione um frontend depois
Adicione uma entrada de frontend e arquivos de interface somente quando precisar de um painel:
text
my-plugin/
frontend/
script.js
style.css # optionalDepois, amplie manifest.json com:
json
{
"kind": "frontend",
"id": "my-plugin-frontend",
"entrypoint": "frontend/script.js",
"backend": { "id": "my-plugin-backend" }
}Para a comunicação do frontend, use window.ogmaSDK.ready(...) e mantenha as chamadas ao backend nos handlers de sdk.api.
4) Permissões de que você quase sempre precisa
Para o exemplo de backend acima:
- nenhuma (os padrões seguros são concedidos automaticamente)
Se seu plugin envia requisições de saída, adicione:
json
"permissions": ["send_requests"]Se seu plugin grava achados, adicione:
json
"permissions": ["write_findings"]Solicite apenas o que você realmente usa.
Solução de problemas do primeiro plugin
Plugin failed to initialize→ abra Logs e confirme seinit(sdk)está definida.Invalid manifest→ verifique as vírgulas e as aspas do JSON.- Nenhum callback é executado → confirme se o plugin está habilitado e se o evento correspondente (
onInterceptResponse) está registrado.
Para consultar as referências completas da API: