Перейти к содержимому

Справочник серверного SDK плагинов ​

Серверный код плагина работает в изолированной среде JavaScript Ogma и получает объект sdk от приложения-хоста.

Полный формат пакета, поля манифеста, разрешения и примеры см. в руководстве системы плагинов.

Точка входа ​

Серверные плагины предоставляют функцию init:

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

Ogma вызывает init(sdk) при включении плагина.

Основные пространства имён ​

Пространство имёнНазначение
sdk.consoleЗапись сообщений в буфер журнала.
sdk.metaЧтение метаданных и путей данных.
sdk.eventsРегистрация обработчиков событий Ogma.
sdk.requestsЗапросы истории HTTP и данных запросов.
sdk.findingsПоиск или создание результатов проверки безопасности при наличии разрешений.
sdk.scopeЧтение активной области.
sdk.storageПостоянное хранение состояния по ключам.
sdk.fsФайловые операции в частном каталоге данных.
sdk.pathПомощники составления путей в каталоге данных.
sdk.apiПредоставление серверных обработчиков интерфейсу плагина.

Журналирование ​

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

Сообщения видны в интерфейсе журналов плагина. Пишите кратко и не записывайте секреты.

Метаданные ​

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

Используйте sdk.meta.path() для данных плагина. Не предполагайте доступ к произвольным путям из изолированного кода.

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

События ​

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

Обработчики должны быть быстрыми. Длительную работу переносите в явные пользовательские действия или обработчики серверного API.

Обработчики моста интерфейса ​

Серверные плагины могут предоставлять обработчики панелям интерфейса:

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

Интерфейс вызывает обработчик через Frontend SDK Ogma. См. справочник интерфейсного SDK.

Требования безопасности ​

  • Считайте HTTP-трафик, результаты, журналы и экспорт конфиденциальными.
  • Запрашивайте только нужные разрешения.
  • Никогда по умолчанию не записывайте учётные данные, cookie, bearer-токены или частный трафик.
  • Делайте поведение явным и понятным пользователю.

Проприетарное ПО. Все права защищены.