English version | Русская версия
Мощный и гибкий плагин для ограничения API запросов в Azuriom CMS с расширенными возможностями настройки и мониторинга.
- ✅ Глобальное ограничение API - применяется ко всем API эндпоинтам
- ✅ Гибкие правила для роутов - индивидуальные настройки для каждого API
- ✅ 7 типов правил - от полного запрета до кастомных настроек
- ✅ Whitelist IP адресов - обход ограничений для доверенных IP
- ✅ CIDR поддержка - поддержка диапазонов IP адресов (192.168.1.0/24)
- ✅ Два режима ограничения - по IP адресу или по пользователю
- ✅ Детальное логирование - полная история API запросов
- ✅ Веб-интерфейс логов - просмотр, фильтрация и поиск в админке
- ✅ Автоочистка логов - 12 периодов от 1 часа до 1 года
- ✅ Статистика покрытия - анализ защищенности API роутов
- ✅ Защита от обновлений - fallback режимы при сбоях Azuriom
- ✅ Автоматическое восстановление - самодиагностика и исправление
- ✅ Кеширование настроек - высокая производительность
- ✅ Простая установка - стандартная установка плагина Azuriom
- Скачайте плагин и распакуйте в папку
plugins/api-limiter/ - Зайдите в админ-панель Azuriom
- Перейдите в раздел "Плагины" и активируйте "API Limiter"
- Плагин автоматически создаст необходимые таблицы и настройки по умолчанию
После установки перейдите в админ-панель: Админ-панель → Ограничение API
- Включить ограничение запросов - глобальное включение/отключение
- Запросов в минуту - максимальное количество запросов (1-10000)
- Ограничивать по - выбор между IP адресом или пользователем
- Разрешенные IP адреса - whitelist для обхода ограничений
- Включить логирование - запись всех API запросов в логи
- Автоочистка логов - период хранения логов (1 часа - 1 год)
- API роуты - просмотр всех обнаруженных API эндпоинтов
- Правила роутов - индивидуальные настройки для каждого API
- Статистика покрытия - анализ защищенности API роутов
- Логи запросов - просмотр, фильтрация и анализ API запросов
- Фильтрация по роутам - отбор логов по конкретным эндпоинтам
- Статус запросов - ✅ Разрешено / ❌ Заблокировано
Включено: Да
Запросов в минуту: 60
Ограничивать по: IP адресу
Whitelist: 127.0.0.1, ::1
Логирование: Включено
Автоочистка: 2 недели
- ✅ No Restrictions (
no_restrictions) - полный доступ без лимитов - 🚦 Rate Limiting (
rate_limit) - стандартный лимит из глобальных настроек - 🚦 Rate Limiting (Custom) (
rate_limit_custom) - индивидуальный лимит для роута - 🔒 Whitelist Only (
whitelist_only) - доступ только для общего whitelist - 🔒 Whitelist (Custom) (
whitelist_custom) - доступ только для кастомного whitelist - 🚦🔒 Rate Limit + Whitelist (
rate_limit_and_whitelist_custom) - Индивидуальные лимиты + индивидуальный whitelist проходит без ограничений. - 🚦🔒 Whitelist + Rate Limit (Custom) (
whitelist_and_rate_limit_custom) - Только IP из whitelist допускаются, но с индивидуальными лимитами запросов. - 🚫 Restricted (
restricted) - Полный запрет доступа. Все запросы получают 403.
- Отдельный IP:
192.168.1.100 - CIDR диапазон:
192.168.1.0/24 - IPv6:
::1, 2001:db8::/32 - Несколько IP:
127.0.0.1, 192.168.1.1, 10.0.0.0/8
# Локальные адреса
127.0.0.1, ::1
# Внутренняя сеть
192.168.0.0/16, 10.0.0.0/8
# Конкретные серверы
203.0.113.1, 203.0.113.2
# Смешанный формат
127.0.0.1, 192.168.1.0/24, 203.0.113.1
При превышении лимита API возвращает HTTP 429:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{
"message": "Too Many Requests"
}Все API запросы записываются в отдельные логи и доступны через админ-панель: Админ-панель → Ограничение API → Логи запросов
- 🔍 Поиск по IP, роуту, URI
- 📅 Фильтрация по дате
- 🎯 Фильтр по статусу (Разрешено/Заблокировано)
- 🛣️ Фильтр по роутам
- 📄 Пагинация (50 записей на страницу)
- 💾 Скачивание логов
- 🗑️ Очистка логов
Компактный однострочный формат с миллисекундами в файлах storage/logs/api-limiter-YYYY-MM-DD.log:
[2025-01-20 10:30:00.123] local.INFO: API Request {
"ip": "192.168.1.100",
"method": "POST",
"route": "api.auth.authenticate",
"uri": "/api/auth/authenticate",
"status": "allowed",
"reason": "Whitelist IP"
}- Включить логирование - полное отключение записи логов
- Автоочистка - автоматическое удаление старых логов
- 12 периодов - 1 часа до 1 года
- Лимит применяется к каждому IP адресу отдельно
- Подходит для публичных API
- Защищает от DDoS атак
- Лимит применяется к каждому аутентифицированному пользователю
- Для неаутентифицированных запросов используется IP
- Подходит для персонализированных API
- Настройки - глобальные параметры ограничений
- API роуты - обзор всех обнаруженных эндпоинтов
- Правила роутов - индивидуальные настройки для каждого API
- Логи запросов - мониторинг и анализ трафика
- Очистка лимитов - сброс всех счетчиков запросов
- Очистка логов - удаление файлов логов
- Автоматическая очистка - настраиваемая автоочистка логов
- Покрытие защиты - процент защищенных API роутов
- Активные правила - количество настроенных правил
- Обнаруженные плагины - автоматическое определение API
Плагин автоматически сканирует и применяется ко всем API маршрутам:
Плагин автоматически обнаруживает ВСЕ API роуты в системе через сканирование Laravel Route Collection:
- Azuriom Core API - встроенные эндпоинты (
/api/auth/*,/api/posts,/api/servers) - Установленные плагины - автоматически определяет по namespace (
Azuriom\Plugin\PluginName\*) - Пользовательские API - любые роуты начинающиеся с
api/ - Admin API - административные эндпоинты с
apiв пути
Примеры обнаруженных плагинов:
SkinApi- API скинов и аватаровShop- API платежных уведомленийVote- API обратных вызовов голосованийAuthMe- интеграция с AuthMeApiLimiter- собственные тестовые эндпоинты- Любые другие плагины с API роутами
- Core - эндпоинты Azuriom (
Azuriom\Http\Controllers\Api\*) - Plugin - эндпоинты плагинов (
Azuriom\Plugin\PluginName\*) - Unknown - неопределенные источники (обрабатываются как Core)
- Кеширование настроек - настройки кешируются на 1 час
- Оптимизированные запросы - минимальное воздействие на производительность
- Laravel Rate Limiter - использует встроенные механизмы Laravel
- Отдельные логи - не засоряют основные логи Laravel
- Компактное логирование - однострочный формат записей
- DDoS защита - предотвращает атаки на API
- Брутфорс защита - ограничение попыток аутентификации
- Справедливое использование - равный доступ для всех пользователей
- Защита админки - требует права
api-limiter.manage - Валидация настроек - проверка корректности конфигурации
- Безопасные defaults - консервативные настройки по умолчанию
- Fallback режимы - 4 уровня деградации при сбоях
- Автоматическое восстановление - самодиагностика и исправление
- Emergency режим - пропуск всех запросов при критических сбоях
- Azuriom CMS 1.2.0+
- PHP 8.1+
- Laravel 9.0+
При возникновении проблем:
- Проверьте логи Laravel в
storage/logs/ - Убедитесь что плагин активирован
- Проверьте настройки в админ-панели
- Очистите кеш:
php artisan cache:clear
MIT License - свободное использование и модификация.
Плагин был сгенерирован с помощью модели claude-4-sonnet в Cursor IDE примерно за 200 запросов
Powerful and flexible API rate limiting plugin for Azuriom CMS with advanced configuration and monitoring capabilities.
- ✅ Global API Rate Limiting - applies to all API endpoints
- ✅ Flexible Route Rules - individual settings for each API
- ✅ 7 Rule Types - from complete blocking to custom configurations
- ✅ IP Whitelist - bypass limitations for trusted IPs
- ✅ CIDR Support - support for IP ranges (192.168.1.0/24)
- ✅ Two Limiting Modes - by IP address or by user
- ✅ Detailed Logging - complete history of API requests
- ✅ Web Log Interface - view, filter and search in admin panel
- ✅ Auto Log Cleanup - 14 periods from 1 hour to 1 year
- ✅ Coverage Statistics - analysis of API route protection
- ✅ Update Protection - fallback modes during Azuriom failures
- ✅ Automatic Recovery - self-diagnosis and repair
- ✅ Settings Caching - high performance
- ✅ Easy Installation - standard Azuriom plugin installation
- Download the plugin and extract to
plugins/api-limiter/folder - Go to Azuriom admin panel
- Navigate to "Plugins" section and activate "API Limiter"
- Plugin will automatically create necessary tables and default settings
After installation, go to admin panel: Admin Panel → API Limiter
- Enable Rate Limiting - global enable/disable
- Requests per Minute - maximum requests count (1-10000)
- Limit By - choice between IP address or user
- Whitelisted IPs - whitelist for bypassing limitations
- Enable Logging - record all API requests to logs
- Auto Log Cleanup - log retention period (1 hour - 1 year)
- API Routes - view all discovered API endpoints
- Route Rules - individual settings for each API
- Coverage Statistics - analysis of API route protection
- Request Logs - view, filter and analyze API requests
- Route Filtering - select logs by specific endpoints
- Request Status - ✅ Allowed / ❌ Blocked
Enabled: Yes
Requests per Minute: 60
Limit By: IP address
Whitelist: 127.0.0.1, ::1
Logging: Enabled
Auto Cleanup: 2 weeks
- ✅ No Restrictions (
no_restrictions) - full access without limits - 🚦 Rate Limiting (
rate_limit) - standard limit from global settings - 🚦 Rate Limiting (Custom) (
rate_limit_custom) - individual limit for route - 🔒 Whitelist Only (
whitelist_only) - access only for general whitelist - 🔒 Whitelist (Custom) (
whitelist_custom) - access only for custom whitelist - 🚦🔒 Rate Limit + Whitelist (
rate_limit_and_whitelist_custom) - Individual limits + individual whitelist passes without restrictions. - 🚦🔒 Whitelist + Rate Limit (Custom) (
whitelist_and_rate_limit_custom) - Only whitelisted IPs are allowed, but with individual rate limits. - 🚫 Restricted (
restricted) - block all requests
- Single IP:
192.168.1.100 - CIDR Range:
192.168.1.0/24 - IPv6:
::1, 2001:db8::/32 - Multiple IPs:
127.0.0.1, 192.168.1.1, 10.0.0.0/8
# Local addresses
127.0.0.1, ::1
# Internal network
192.168.0.0/16, 10.0.0.0/8
# Specific servers
203.0.113.1, 203.0.113.2
# Mixed format
127.0.0.1, 192.168.1.0/24, 203.0.113.1
When rate limit is exceeded, API returns HTTP 429:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{
"message": "Too Many Requests"
}All API requests are recorded in separate logs and available through admin panel: Admin Panel → API Limiter → Request Logs
- 🔍 Search by IP, route, URI
- 📅 Date filtering
- 🎯 Status filter (Allowed/Blocked)
- 🛣️ Route filter
- 📄 Pagination (50 records per page)
- 💾 Download logs
- 🗑️ Clear logs
Compact single-line format with milliseconds in storage/logs/api-limiter-YYYY-MM-DD.log files:
[2025-01-20 10:30:00.123] local.INFO: API Request {
"ip": "192.168.1.100",
"method": "POST",
"route": "api.auth.authenticate",
"uri": "/api/auth/authenticate",
"status": "allowed",
"reason": "Whitelist IP"
}- Enable Logging - completely disable log recording
- Auto Cleanup - automatic deletion of old logs
- 14 Periods - from 1 hour to 1 year
- Limit applies to each IP address separately
- Suitable for public APIs
- Protects against DDoS attacks
- Limit applies to each authenticated user
- For unauthenticated requests, IP is used
- Suitable for personalized APIs
- Settings - global limitation parameters
- API Routes - overview of all discovered endpoints
- Route Rules - individual settings for each API
- Request Logs - monitoring and traffic analysis
- Clear Limits - reset all request counters
- Clear Logs - delete log files
- Automatic Cleanup - configurable auto-cleanup of logs
- Protection Coverage - percentage of protected API routes
- Active Rules - number of configured rules
- Discovered Plugins - automatic API detection
Plugin automatically scans and applies to all API routes:
Plugin automatically discovers ALL API routes in the system by scanning Laravel Route Collection:
- Azuriom Core API - built-in endpoints (
/api/auth/*,/api/posts,/api/servers) - Installed Plugins - automatically detects by namespace (
Azuriom\Plugin\PluginName\*) - Custom APIs - any routes starting with
api/ - Admin APIs - administrative endpoints with
apiin path
Examples of discovered plugins:
SkinApi- skins and avatars APIShop- payment notification APIVote- voting callback APIAuthMe- AuthMe integrationApiLimiter- own testing endpoints- Any other plugins with API routes
- Core - Azuriom endpoints (
Azuriom\Http\Controllers\Api\*) - Plugin - plugin endpoints (
Azuriom\Plugin\PluginName\*) - Unknown - unidentified sources (treated as Core)
- Settings Caching - settings cached for 1 hour
- Optimized Queries - minimal performance impact
- Laravel Rate Limiter - uses built-in Laravel mechanisms
- Separate Logs - doesn't clutter main Laravel logs
- Compact Logging - single-line record format
- DDoS Protection - prevents API attacks
- Brute Force Protection - limits authentication attempts
- Fair Usage - equal access for all users
- Admin Protection - requires
api-limiter.managepermission - Settings Validation - configuration correctness check
- Safe Defaults - conservative default settings
- Fallback Modes - 4 degradation levels during failures
- Automatic Recovery - self-diagnosis and repair
- Emergency Mode - pass all requests during critical failures
- Azuriom CMS 1.2.0+
- PHP 8.1+
- Laravel 9.0+
If you encounter issues:
- Check Laravel logs in
storage/logs/ - Make sure the plugin is activated
- Check settings in admin panel
- Clear cache:
php artisan cache:clear
MIT License - free use and modification.
The plugin was generated using the claude-4-sonnet model in the Cursor IDE in about 200 requests
Created for the Azuriom Community 🚀