Skip to content

About

SDK плагинов splify2 и steer: формат .s2p, s2p, документы API, тесты совместимости

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

plugin-sdk

Всё, чтобы написать, собрать, подписать и выпустить плагин для splify2 и ядра steer — без SDK OpenWrt

Лицензия Документация Telegram

Плагин — архив .s2p с манифестом plugin.json: вид выхода или протокол для steer, интерфейс для панели splify2, тема или перевод. SDK даёт спецификации, инструмент s2p, заготовки и пакет типов @splify2/plugin-api.

Возможности

  • s2p — один статический файл на Go без зависимостей: lint, build, sign, verify, index, cc, new, keygen
  • Одинаковый вход — одинаковые байты: ustar в одном gzip без времени и владельцев, MANIFEST с SHA-256; повторная сборка плагина с машинным кодом даёт тот же архив
  • Подпись usign/signify (Ed25519) в формате usign; несколько блоков в одном файле — для ротации ключей. Стенд сверяет подпись независимо через openssl, а где есть usign — и им
  • C под 10 архитектур OpenWrt через zig (musl), без SDK OpenWrt: программа-помощник и .so по steer-abi
  • Заготовки: программа-помощник, .so, интерфейс на vite, тема, перевод — каждая собирается в .s2p
  • s2p lint смотрит на манифест, файлы, права, теги совместимости, словари и сам машинный код: машина ELF, экспорт .so, DT_NEEDED; в программах плагина — обращения к внутренностям каркаса вместо служб хоста (--official делает их отказом)
  • s2p index собирает и подписывает индекс репозитория: много плагинов, много версий и архитектур, отзыв и удаление версий

Установка

Нужен Go 1.21+. Для C — zig 0.13 (в PATH или S2P_ZIG) либо docker с образом steer-builder:wolfssl.

git clone https://github.com/splify2/plugin-sdk && cd plugin-sdk
sh build.sh                       # bin/s2p; положите его в PATH

Быстрый старт

s2p new helper ./myplug           # заготовки: helper, so, ui, theme, lang
cd myplug
s2p keygen -o dev                 # ключ для разработки: dev.sec (секрет) и dev.pub
s2p lint .
s2p build . --key dev.sec         # dist/myplug-0.1.0-<арх>.s2p под архитектуры манифеста
s2p verify dist/myplug-0.1.0-x86_64.s2p --pub dev.pub

На роутере с ядром steer 2.1: steer plugin install --file myplug-0.1.0-<арх>.s2p --unsigned (без подписи — только из файла, для разработки) либо подпись вашего ключа, принятого человеком. Подробно — в docs/guide.md.

Репозиторий плагинов:

s2p index dist -o repo --repo mine --pub dev.pub --key index.sec --mirror https://example.org/plugins/
s2p verify repo/index.json --pub index.pub --base repo

Что в репозитории

Путь Что
docs/guide.md как написать плагин: от заготовки до выпуска
docs/manifest.md · schema/plugin.schema.json манифест plugin.json
docs/index.md · schema/index.schema.json индекс репозитория, отбор версии
docs/s2p.md архив, подпись, раскладка, установка, откат, автообновление
docs/steer-api.md steer-api v1: программы, evline, хуки, сокет, nft, ресурсы; прибавки 1.1–1.4 — docs/steer-api-1.*.md (1.4 — steer.platform)
docs/steer-errors.md коды отказов ядра: code и args рядом с текстом error, как каркас их переводит
docs/splify2-api.md splify2-api v1: хуки каркаса, задачи, события, псевдонимы и переопределения методов, службы хоста и граница API; тесты совместимости tests/compat
docs/steer-abi.md · include/steer/plugin.h steer-abi v1: .so в steerd
docs/host-api.md · packages/plugin-api host API панели, типы @splify2/plugin-api
docs/spec-fields.md · docs/migration-2.1.md поля спеки для ядра; переход на steer-core 2.1.0
docs/open.md выборы без решения владельца
cmd/s2p инструмент s2p
include/s2p/evline.h · lib/evline события программы ядру без зависимостей
templates/ заготовки: helper, so, ui, theme, lang
examples/ образцы манифестов и индекса
tests/ стенд: sh tests/run.sh

Проверка

sh tests/run.sh               # lint, build, sign, verify, index; C под x86_64, aarch64_cortex-a53, arm, mips
FULL=1 sh tests/run.sh        # C под все 10 архитектур
NO_UI=1 sh tests/run.sh       # без npm

Стенд проверяет детерминизм сборки, порчу подписи, чужой и отозванный ключ, пути .. и другие изъяны архива, file и readelf у собранных .so и помощников, индекс из нескольких плагинов и версий.

About

SDK плагинов splify2 и steer: формат .s2p, s2p, документы API, тесты совместимости

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages