Блокировки
Вкладка «Блокировки» позволяет ограничивать доступ к серверу по различным критериям. Заблокированные пользователи и устройства получают ответ 403 Forbidden при любом запросе.
Типы блокировок
| Тип | Описание | Пример значения |
|---|---|---|
| IP | Блокировка по точному IP-адресу | 203.0.113.50 |
| CIDR | Блокировка по подсети (диапазон IP) | 203.0.113.0/24 |
| Device UID | Блокировка по идентификатору устройства (8-символьный lampac_unic_id) | a1b2c3d4 |
| Telegram ID | Блокировка по Telegram ID пользователя | 123456789 |
| Fingerprint | Блокировка по отпечатку устройства (хэш параметров браузера) | f7a3b2c1 |
| Страна | Блокировка по стране (ISO 3166-1 alpha-2). Требуется GeoIP-база. | US |
Добавление блокировки
Через вкладку «Блокировки»
- Нажмите «Добавить блокировку»
- Выберите тип из выпадающего списка
- Введите значение и причину (опционально)
- Нажмите «Добавить»
Быстрая блокировка из карточки пользователя
На вкладке Пользователи в карточке каждого пользователя есть кнопки быстрой блокировки:
- 🚫 TG — заблокировать по Telegram ID
- 🚫 UID — заблокировать конкретное устройство
- 🚫 IP — заблокировать по последнему известному IP устройства
- 🚫 FP — заблокировать по отпечатку устройства
Таблица блокировок
Таблица отображает все активные правила:
| Поле | Описание |
|---|---|
| Тип | IP / CIDR / UID / TG ID / Fingerprint / Страна |
| Значение | Заблокированный идентификатор |
| Причина | Комментарий администратора |
| Дата | Когда создана блокировка |
| Действие | Кнопка удаления правила |
В верхней части отображается статистика — количество правил по каждому типу.
Удаление блокировки
Нажмите кнопку удаления (🗑️) рядом с правилом и подтвердите действие. Доступ восстанавливается мгновенно.
Как работает проверка
Проверка выполняется на уровне middleware авторизации — до обработки любого запроса:
Запрос → TG Auth Gate → Проверка бана → Обработка запроса
↓
403 Forbidden
{"error":"blocked","reason":"..."}Проверяются все идентификаторы одновременно:
- IP-адрес клиента → против IP и CIDR правил
- UID устройства → против UID правил
- Telegram ID (из токена) → против TG ID правил
- Fingerprint (из параметра
fp) → против Fingerprint правил - Страна (из GeoIP по IP) → против Country правил
Если хотя бы одно правило срабатывает — запрос блокируется.
GeoIP (блокировка по стране)
Для блокировки по стране необходима база GeoLite2-Country от MaxMind:
- Зарегистрируйтесь на maxmind.com
- Скачайте
GeoLite2-Country.mmdb - Поместите файл в
database/GeoLite2-Country.mmdb(относительно корня установки) - Перезапустите сервер
# Пример для стандартной установки
cp GeoLite2-Country.mmdb /opt/lampac/database/
systemctl restart alcopacGeoLite2-Country.mmdb блокировка по стране не работает — правила типа «Страна» просто игнорируются. Остальные типы блокировок работают без GeoIP.Хранение данных
Правила блокировок хранятся в JSON-файле database/tgauth/bans.json. Для быстрой проверки используются предрассчитанные индексы (пересоздаются при каждом добавлении/удалении правила).
API
Для автоматизации доступен REST API (требуется авторизация администратора):
| Метод | URL | Описание |
|---|---|---|
GET | /cp_XXXXX/api/bans | Список всех правил и статистика |
POST | /cp_XXXXX/api/bans | Добавить или удалить правило |
Добавление правила
curl -X POST "http://IP:PORT/cp_XXXXX/api/bans" \
-H "Content-Type: application/json" \
-d '{"action":"add","type":"ip","value":"203.0.113.50","reason":"спам"}'Удаление правила
curl -X POST "http://IP:PORT/cp_XXXXX/api/bans" \
-H "Content-Type: application/json" \
-d '{"action":"remove","id":"uuid-правила"}'