Ir para o conteúdo

Referência do SDK de backend para plugins ​

O código dos plugins de backend é executado no sandbox de JavaScript do Ogma e recebe um objeto sdk do aplicativo principal.

Para conhecer o formato completo do pacote de plugin, os campos do manifesto, as permissões e os exemplos, comece pelo guia do sistema de plugins.

Ponto de entrada ​

Os plugins de backend expõem uma função init:

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

O Ogma chama init(sdk) quando o plugin é habilitado.

Namespaces principais ​

NamespaceFinalidade
sdk.consoleGravar mensagens no buffer de logs do plugin.
sdk.metaLer os metadados e os caminhos de dados do plugin.
sdk.eventsRegistrar callbacks para eventos do Ogma.
sdk.requestsConsultar o histórico HTTP e os dados das requisições.
sdk.findingsConsultar ou criar achados quando as permissões permitem.
sdk.scopeLer informações do escopo ativo.
sdk.storagePersistência de chave/valor para o estado do plugin.
sdk.fsOperações de arquivos no diretório privado de dados do plugin.
sdk.pathFunções auxiliares para compor caminhos no diretório de dados do plugin.
sdk.apiExpor handlers do backend ao frontend do plugin.

Logs ​

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

As mensagens aparecem na interface de logs do plugin. Mantenha os logs concisos e evite gravar segredos.

Metadados ​

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

Use sdk.meta.path() para dados específicos do plugin. Não presuma que o código do plugin executado em sandbox pode acessar caminhos arbitrários do sistema de arquivos.

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

Eventos ​

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

Os callbacks devem ser rápidos. Tarefas demoradas devem ser executadas mediante ações explícitas do usuário ou handlers da API do backend.

Handlers da ponte com o frontend ​

Os plugins de backend podem expor handlers para os painéis de frontend dos plugins:

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

O frontend chama o handler pelo SDK de frontend do Ogma. Consulte a referência do SDK de frontend.

Requisitos de segurança ​

  • Trate o tráfego HTTP, os achados, os logs e as exportações como dados sensíveis.
  • Solicite somente as permissões de que seu plugin precisa.
  • Nunca registre credenciais, cookies, tokens de portador ou tráfego privado por padrão.
  • Mantenha o comportamento do plugin explícito e compreensível para o usuário.

Software proprietário. Todos os direitos reservados.