Перейти к содержанию

Обнаружение устройств и блокировка 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).

Как осуществляется принудительная блокировка

  1. Сначала подключитесь — при наличии lock_device = 1 и отсутствии сохраненных идентификаторов аппаратные идентификаторы устройства (например, MAG device_id/device_id2/sn, Enigma modem_mac) записываются в строку устройства.
  2. Последующие соединения — значения, представленные в запросе/токене, должны совпадать с сохраненными. При несоответствии происходит сбой аутентификации с помощью DEVICE_NOT_ALLOWED (или TOKEN_EXPIRED, когда токен портала больше не соответствует заблокированному устройству).
  3. шлюз 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. Проверка типа устройства

MAG device flag must match token
error: DEVICE_NOT_ALLOWED or TOKEN_EXPIRED

Конфигурация (настройки устройства)

Установка Тип Описание
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 заблокированные / разрешенные проверки пользовательского агента