Руководство разработчика модулей TropaTT
Стандарты создания, упаковки, криптографической подписи и распространения расширений для экосистемы TropaTT CRM.
// 01. Структура дистрибутива расширения
Модуль поставляется в виде обычного ZIP-архива. В корне архива обязательно должен находиться файл дескриптора manifest.json:
my-extension/
├── manifest.json # Обязательный дескриптор расширения (метаданные, зависимости)
├── README.md # Описание, скриншоты и инструкция по настройке
├── migrations/ # Каталог миграций БД (выполняются ModuleMigrationRunner)
│ └── 001_init.sql
├── web/ # Пользовательские интерфейсы и шаблоны CRM
│ └── controller/
│ └── template/
└── api/ # Серверная бизнес-логика, сервисы и контроллеры
└── ServiceProvider.php
// 02. Спецификация manifest.json
Манифест валидируется платформой по строгой JSON-схеме. Все обязательные поля должны быть заполнены:
{
"code": "ecommerce-gateway",
"name": "E-Commerce Universal Gateway",
"version": "1.1.0",
"category": "ecommerce",
"min_core_version": "1.0.0",
"description": "Универсальный шлюз синхронизации заказов и лидов из CMS",
"license": "free",
"permissions": ["orders.read", "orders.write", "webhooks.listen"]
}
// 03. Статический аудит AST Security Linter
Для гарантии безопасности инстансов TropaTT, дистрибутив сканируется до коммита в базу. Запрещены:
- Динамическое исполнение кода:
eval(),create_function() - Вызовы системной оболочки ОС:
exec(),passthru(),system(),shell_exec(),popen() - Уязвимости обхода директорий Zip Slip: пути с
../в именах файлов внутри архива
// 04. Лицензирование и ключи
Маркетплейс поддерживает открытые (Free / MIT) и коммерческие модули. При коммерческом распространении сервер генерирует криптографически подписанный лицензионный ключ для конкретного домена покупателя.
// 05. Автоматическая публикация через API и cURL
Вендоры могут встраивать публикацию релизов в свои CI/CD пайплайны GitHub Actions или GitLab CI:
curl -X POST https://marketplace.tropatt.com/api/v1/vendor/publish \
-H "X-API-KEY: your_vendor_secret_key" \
-F "package=@extension-v1.1.0.zip" \
-F "price_model=free"