Первый плагин
Это руководство поможет быстро пройти путь от пустой папки до работающего плагина.
1) Создайте минимальный серверный плагин
Создайте папку с файлами:
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());
}
});
}Установите через Плагины > Установить, выберите папку, включите плагин и убедитесь, что журнал показывает Plugin started.
2) Если используете TypeScript
Используйте структуру:
text
my-plugin/
manifest.json
backend/
src/index.tsСоберите командой:
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.jsЗатем установите папку, как описано выше.
3) Добавьте интерфейс позже
Добавляйте интерфейсную запись и файлы только при необходимости панели:
text
my-plugin/
frontend/
script.js
style.css # optionalЗатем дополните manifest.json:
json
{
"kind": "frontend",
"id": "my-plugin-frontend",
"entrypoint": "frontend/script.js",
"backend": { "id": "my-plugin-backend" }
}Для связи интерфейса используйте window.ogmaSDK.ready(...), а серверные вызовы держите в обработчиках sdk.api.
4) Почти всегда нужные разрешения
Для серверного примера выше:
- Не нужны (безопасные разрешения выдаются автоматически)
Если плагин отправляет исходящие запросы, добавьте:
json
"permissions": ["send_requests"]Если плагин записывает результаты проверки безопасности, добавьте:
json
"permissions": ["write_findings"]Запрашивайте только фактически используемое.
Решение проблем первого плагина
Plugin failed to initialize→ откройте Журналы и проверьте наличиеinit(sdk).Invalid manifest→ проверьте запятые и кавычки JSON.- Обработчики не вызываются → проверьте включение и регистрацию соответствующего события (
onInterceptResponse).
Полные справочники API: