Перейти до вмісту

Швидкий старт плагінів ​

Цей посібник допоможе швидко перейти від порожньої папки до працюючого плагіна.

1) Створіть мінімальний серверний плагін ​

Створіть папку з такими файлами:

text
my-plugin/
  manifest.json
  backend/
    script.js

manifest.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:

Пропрієтарне програмне забезпечення. Усі права захищено.