Обнаружение устройств и блокировка STB¶
XC_VM анализирует клиентский пользовательский агент (Mobile_Detect) для адаптации пользовательского интерфейса администратора и привязывает учетные записи приставок к определенному оборудованию, чтобы строка не могла использоваться совместно на разных устройствах. Эти проверки выполняются параллельно с проверками географического местоположения в src/Public/stream/auth.php.
Информацию о геолокации GeoIP/ISP/ASN, геомаршрутизации и обновлениях MaxMind смотрите на сопутствующей странице GeoIP, Определение провайдера и геомаршрутизация. Для получения информации о взаимодействии Stalker/Ministra portal, которое управляет профилями STB, смотрите Ministra Эмуляцию STB.
Мобильное обнаружение¶
Файл: src/vendor/mobiledetect/mobiledetectlib/src/MobileDetect.php (Composer зависимость mobiledetect/mobiledetectlib)
Библиотека (версия 4.9.0, пространство имен Detection\MobileDetect) для синтаксического анализа пользовательским агентом:
$detect = new \Detection\MobileDetect();
$detect->isMobile(); // phones
$detect->isTablet(); // tablets
$detect->isAndroid(); // brand-specific
Используется в src/bootstrap.php для установки флага $rMobile, который переключает панель администратора/реселлера на адаптивную (мобильную) компоновку. Это Только для пользовательского интерфейса — это не влияет на доступ к потоковой передаче; управление доступом к STB - это логика аппаратной блокировки, описанная ниже.
Устройства для телевизионной приставки (STB)¶
Две службы управляют учетными записями STB и их полями аппаратной блокировки. Каждое устройство представляет собой строку (MAG → mag_devices, Enigma2 → enigma2_devices), привязанную к строке.
Энигмасервис (src/Domain/Device/EnigmaService.php) — Стандартные файлы Enigma2.
Поля блокировки: token, lversion, cpu, enigma_version, modem_mac, local_ip.
Магсервис (src/Domain/Device/MagService.php) — МАГНИТНЫЕ STBS.
Поля блокировки: ver, device_id2, device_id, hw_version, image_version, stb_type, sn.
Оба типа устройств имеют три общих переключателя принудительного исполнения:
| Поле | Эффект |
|---|---|
lock_device |
аппаратная блокировка — привязывает учетную запись к идентификаторам, полученным при первом подключении. |
is_isplock |
Привязка к интернет-провайдеру (смотрите страницу с географией) |
forced_country |
принудительно подключите устройство к определенной стране (см. страницу с географией). |
Где он настроен¶
В панели администратора: страницы МАГНИТНЫЕ устройства и Устройства "Энигма" — добавьте/отредактируйте строку устройства, переключите Запирающее устройство и (для порталов Ministra) установите разрешенные типы STB с помощью allowed_stb_types. Набор типов STB, которые портал рекламирует в окне, передается из настроек панели через PortalHandler в профиль клиента (см. Ministra Эмуляция STB).
Как осуществляется принудительная блокировка¶
- Сначала подключитесь — при наличии
lock_device = 1и отсутствии сохраненных идентификаторов аппаратные идентификаторы устройства (например, MAGdevice_id/device_id2/sn, Enigmamodem_mac) записываются в строку устройства. - Последующие соединения — значения, представленные в запросе/токене, должны совпадать с сохраненными. При несоответствии происходит сбой аутентификации с помощью
DEVICE_NOT_ALLOWED(илиTOKEN_EXPIRED, когда токен портала больше не соответствует заблокированному устройству). - шлюз stb_type — если задано значение
allowed_stb_types, то указанное в поле значениеstb_typeдолжно быть одним из допустимых значений, в противном случае портал отклоняет его.
Отработанный пример (MAG): реселлер создает учетную запись с lock_device = 1. Ящик клиента подключается один раз → его device_id/sn сохраняются. Если клиент копирует URL-адрес портала + MAC-адрес во второе поле, в этом поле отображается другое значение device_id/sn → auth, возвращаемое DEVICE_NOT_ALLOWED. Чтобы переместить строку в новое поле, администратор удаляет сохраненные идентификаторы (отредактируйте строку устройства), чтобы при следующем подключении они были восстановлены.
Проверки контроля доступа (устройства)¶
Они запускаются в src/Public/stream/auth.php во время проверки токена, после проверки географического местоположения (1-4, на странице geo page).
5. Блокировка пользовательского агента¶
check against BlocklistService::checkBlockedUAs()
error: BLOCKED_USER_AGENT
if user has allowed_ua set:
user_agent must match one entry
error: NOT_IN_ALLOWED_UAS
Если параметр disallow_empty_user_agents включен, запрос без заголовка User-Agent будет немедленно отклонен.
6. Проверка типа устройства¶
Конфигурация (настройки устройства)¶
| Установка | Тип | Описание |
|---|---|---|
disallow_empty_user_agents |
0/1 |
отклонять запросы без заголовка User-Agent |
allowed_stb_types |
array |
Типы STB, которые будет принимать портал Ministra (пустые = все) |
Настройки для каждого устройства (lock_device, is_isplock, forced_country) устанавливаются в строке устройства, а не в глобальных настройках.
Связанные файлы¶
| Файл | Цель |
|---|---|
src/vendor/mobiledetect/mobiledetectlib/src/MobileDetect.php |
\Detection\MobileDetect Библиотека агента пользователя (Composer dep) |
src/Domain/Device/EnigmaService.php |
Управление STB-файлами Enigma2 + поля блокировки |
src/Domain/Device/MagService.php |
Управление магнитными полями STB + блокировка полей |
src/Public/stream/auth.php |
потоковая авторизация с проверкой устройства (5-6) |
src/Domain/Security/BlocklistService.php |
заблокированные / разрешенные проверки пользовательского агента |