так вот я как раз и спрашываю..может кто уже устанавливал и мог бы небольшой фак написать..сам к сожалению не пробовал...а тема довольно интересная..ведь в дрим500 модуль установить некуда,а шаринг на триколор просто экономически не выгоден..
В принципе у есть небольшой фак на
http://dream.altmaster.net/ по mpcs
============================================================================
Использование клиентских функций
Исправьте файл mpcs.server - впишите туда адрес сервера, порт,
des-key и логин с паролем, например вот так (для newcamd-сервера):
[reader]
Label = newcamd
Protocol = newcamd
Device = 192.168.1.1,10003
Key = 0102030405060708091011121314
Account = login1,password1
Fallback = 0
Group = 1
А вот пример для cs357x-сервера:
[reader]
Label = cs357x
Protocol = camd35
Device = 192.168.1.1,10003
Account = login1,password1
Fallback = 0
Group = 1
Как видите, они отличаются только протоколом и дополнительным параметром
"Key" для newcamd. Label - название, может быть любым.
============================================================================
"Продвинутые клиентские функции"
В первую очередь это фильтрация.
Управляющие параметры: CAID, IDENT, DisableServerFilter. Достаточно просто
вписать их в соответствующий ридер:
[reader]
Label = cs357x
Protocol = camd35
Device = 192.168.1.1,10003
Account = login1,password1
Fallback = 0
Group = 1
CAID = 0500
IDENT = 020710, 021C00
В параметре CAID через запятую можно перечислить системы кодирования,
поддерживаемые этим сервером (по умолчанию разрешено все), например:
CAID = 0500,090F
В параметре IDENT через запятую перечисляются провайдеры, поддерживаемые
этим сервером (аналогично по умолчанию все разрешено). Дополнительно можно
указать CAID для этого провайдера и последующих.
Примеры:
Разрешаем только идент 020710 для любых CAID:
IDENT = 020710
Разрешаем идент 020710 только для CAID 0500:
IDENT = 0500:020710
Разрешаем два идента одновременно.
IDENT = 020710,020700
Разрешаем два идента для кодировки 0500:
IDENT = 0500:020710,020700
Разрешаем два идента для 0500 и один нулевой идент для 090F:
IDENT = 0500:020700,020710;090F:0
Фильтрация по классам поддерживается только для CAID 0500 (виа).
Для чего это нужно. В первую очередь оно позволяет брать с одного ридера
одни классы, с другого другие. То есть не обязательно иметь одну карту
с подпиской на все целиком, можно брать некоторые классы с другого ридера
или сервера, не перегружая их запросами, которые могут быть обработаны
локально. Также можно балансировать нагрузку между несколькими картами.
ВНИМАНИЕ ! ЗАПОМНИТЕ ГЛАВНОЕ ! ECM-пакет несет в себе _несколько_ классов
одновременно, поэтому в настройке важно точно понимать что делаешь.
Например (для любимого провайдера) канал может принадлежать одновременно
российскому базовому пакету, российскому расширенному, украинскому
базовому, украинскому расширенному и еще может нести дополнительный класс
для кабельщиков.
Как это выглядит. В блоке [reader] добавляется параметр CLASS, например:
[reader]
Label = card
Protocol = mouse
Device = /dev/ttyS0
Fallback = 0
Group = 1
Class = 07, 04, !3C
Правила:
0. Классы перечисляются через запятую, в шестнадцатиричном виде.
Если перед номером класса стоит "!" то этот класс запрещен, иначе разрешен.
1. По умолчанию (если параметра Class нет) пропускаются все классы.
2. Если мы добавили хоть один то пропускаются только перечисленные.
Пример: Class = 07, 04 пропускает только пакеты, несущие внутри себя
классы 07 или 04 или оба одновременно.
3. Классы с "!" в любом случае запрещаются. Любые пакеты, несущие внутри
себя этот класс, будут отброшены, даже если внутри них есть еще
разрешенные классы. То есть запрещение важнее чем разрешение.
Пример: Class = 07, !04 пропустит пакеты с классом 07, но только если
внутри них нет еще класса 04.
4. Если в фильтре находится только запрещение (например, Class = !04 )
то будут пропускаться любые классы кроме запрещенных.
Примеры:
Class = 03 - пропускаем только базовый российский.
Class = 03, 05 - пропускаем только базовый российский и спорт.
Class = 07, !03 - пропускаем каналы базового расширенного, но только те,
которые не входят в базовый, каналы базового запрещены.
Class = !06 - пропускаем все кроме вип-кино. Внимание - канал "обычного"
пакета "кино" также входят в вип-кино, поэтому в реальности мы запрещаем
и кино и вип-кино.
Class = 07, 08, 06, 3C - пропускаем только российские базовый расширенный,
суперспорт, вип-кино и ночной. Ночных в реальности два - 3C и 3D, кто из
них кто сейчас не помню, да и не важно это для примера.
Добавлена фильтрация по Irdeto ChID. Параметр вводится в шестнадцатиричном виде,
с обязательным добавлением CAID вначале, например:
ChID = 0604:14
Внимание - без указания CAID фильтр не работает ! Для прочих CAID все ChID
пропускаются, то есть надо указать все нужные пары !
Вообще синтаксис аналогичен IDENT - можно нужные ChID для одного CAID
перечислить через запятую и перечислить несколько пар через точку с запятой.
Дополнительная фича - теперь фильтрация по CLASS и CHID доступна не только
для ридеров, но и для пользователей. "Шарик, видишь будку ? Теперь она твоя".
[account]
User = Name
Pwd = Password
Group = 1
CLASS = 03
Этот пользователь получит только базовый класс.
=============================================================================
В качестве ридера могут использоваться ресиверы или сплиттеры, поддерживающие
сериальные протоколы bomba, dsr9500, alphastar и hsic. В реальности
интересны только Openbox 800 и 820.
Вот пример сериального ридера:
[reader]
Label = openbox
Protocol = serial
Device = dsr9500://@/dev/ttyS0
Fallback = 0
Group = 1
CAID = 0500
IDENT = 020710
Здесь показан пример с опенбоксом, подключенным к COM1 на скорости 115200.
Я бы настоятельно советовал использовать максимальную скорость на ридере.
Плюс очень желательно настроить фильтрацию (CAID, IDENT, CLASS) чтобы
не гонять на ридер запросы, на которые все равно не будет ответа и не
занимать драгоценное время.
В файле mpcs.conf в секции [global] добавлен параметр SerialReaderTimeout,
в секундах. Столько времени mpcs будет ждать ответа от сериального ридера
прежде чем посылать на него следующий запрос. Не ставьте его слишком
маленьким !
Внимание - с версии rc13i используется по умолчанию протокол работы для
новых прошивок, несовместимый со старым ! Нашей вины тут нет, аналогично
старые версии прошивок не работают с новыми версиями в ресиверах-серверах.
Если же вам нужна старая версия прошивки в ресивере-сервере то используйте
префикс dsr9500old:// вместо dsr9500://
=============================================================================
Добавлен еще один "серверный" (относящийся к конкретному серверу) параметр:
DisableServerFilter. Значение по умолчанию - 0 (серверные фультры
задействованы). Параметр имеет смысл только для newcamd-ридеров(серверов).
Во время соединения сервер сообщает клиенту какую систему кодирования (CAID)
и провайдеров (IDENT) он поддерживает, чтобы клиент не слал ему лишних
запросов, которые сервер все равно не может обработать. Но не все сервера
корректно отдают эту информацию. Установив параметр DisableServerFilter в 1
можно отключить эту обработку фильтров сервера, после чего mpcs будет всегда
отсылать на сервер запросы, прошедшие пользовательский фильтр.
Это мощное средство ! Не используйте без необходимости ! На "правильных"
серверах фильтры верные и их отключение ничего не даст.
=============================================================================
И еще один "серверный" параметр - InactivityTimeout. Название говорит само
за себя - через такое количество _минут_ соединение с сервером будет
разорвано в случае неактивности (например, отключения ресивера). Аналогично,
имеет смысл только для tcp-ридера (newcamd). По умолчанию - 0 (соединение
будет поддерживаться всегда).
=============================================================================
Для того чтобы задействовать серверные функции добавьте в mpcs.conf следующее:
# новая секция
[newcamd]
Key = 0102030405060708091011121314
Port = 50000@0500:020710
DES-ключ описывается аналогично mpcs.server. Параметр Port должен быть один,
но в нем могут описываться несколько серверных newcamd-портов.
Этот параметр требует дополнительного пояснения. Newcamd-сервер обязан
сообщить клиенту при соединении какой на этом порту поддерживается CAID
и какие имеются провайдеры (IDENT). На _одном_ порту может быть только _один_
CAID но несколько провайдеров. Если вам нужно раздавать несколько CAID
то придется объявлять несколько портов. И номер порта и CAID и IDENT -
обязательные параметры.
Примеры:
Раздаем с порта 50000 систему кодирования виа (0500) провайдера 020710:
Port = 50000@0500:020710
Аналогично предыдущему, но раздаем двух провайдеров 020710 и 020700:
Port = 50000@0500:027000
Объявляем два порта 50000 и 50001, на первом 0500, на втором 090F:
Port = 50000@0500:020710;50001@090F:0
То же самое, но с первого порта раздаются два провайдера:
Port = 50000@0500:020710,020700;50001@090F:0
Подразумевается что если вы пытаетесь задействовать серверные функции
то уже понимаете что конкретно хотите. Версия тестовая, обработка ошибок
минимальная ! Я предупредил.
=============================================================================
Тут же, в этом же файле (mpcs.server), находятся параметры,
управляющие фильтрацией: CAID, IDENT, DisableServerFilter. Пока фильтрация
поддерживается только на типах ридеров newcamd, cs378x и camd35.
Фильтры относятся к тому кардридеру(серверу), в секции которого написаны.
=============================================================================
Также добавлена поддержка ресиверов GS (вместо программы cstranslator).
Внимание - автодетект этого типа ресиверов затруднен поэтому его нужно
принудительно включить в mpcs.conf секции [serial]:
Device = gs://tuner@/dev/ttyS0
И запускайте mpcs только когда GS в режиме standby
или включен некодированный канал, это критично !
=============================================================================
Функции, доступные через сигналы (kill).
SIGHUP (kill -1) вызывает перечитывание базы пользователей. То есть вы
можете исправить файл mpcs.user, добавить туда новых пользователей,
убрать старых и перечитать его послав kill -1 мастер-процессу (самый
первый процесс mpcs, номер его есть в pid-файле).
После перечитывания базы (при этом обновляются имена, пароли, группы, фильтры)
производится верификация соединений. То есть если пользователь подключен,
но это имя удалено из базы или у него сменен пароль - его клиентские процессы
отстреливаются, производится принудительный дисконнект.
Не забудьте - этот сигнал надо посылать мастер-процессу !
SIGUSR1 (kill -30) можно послать любому процессу mpcs. Оно вызывает
переключение флага отладки (как будто в командной строке было задано -d63)
но только для этого конкретного процесса ! То есть можно отлаживать
процессы по отдельности, "на лету", не забивая лог избыточной информацией
и не останавливая сервер. Посылка kill -30 мастер-процессу включит
отладку всех остальных процессов (полный аналог -d63).
SIGUSR2 (kill -31) можно послать ридеру или мастер-процессу. Виаксесс-ридер
при получении этого сигнала покажет подписки и информацию об карте.
Если этот сигнал получил мастер-процесс то он передаст его на все ридеры,
соответственно в логе будут подписки всех карт (к сожалению, вперемешку).
=============================================================================
Добавлен неконфиденциальный апдейт виаксесс-карт, был проверен на 020710.
Пока это возможно только через newcamd-протокол. Для включения апдейта
надо добавить название ридера в строчку AU пользователя:
[account]
User = auuser
Pwd = aupassword
Group = 1
AU = reader1
В данном примере этот пользователь будет использоваться для апдейта карты
в ридере reader1. Рекомендуется использовать этого пользователя только
для апдейта, поскольку траффик будет гораздо выше и незачем без нужды
гнать на карту emmы. Если у вас несколько карт то для каждой нужен отдельный
пользователь.
В ридере настоятельно рекомендуется включить emm-кэш:
EMMCache = 1,1,2
Первый параметр - включение кэша (1-включен), второй (rewrite) - сколько
раз одинаковые emm будут посланы на карту (если "с первого раза не понимает"),
третий - уровень лога emm (0 - только ошибки, 1 - все кроме пропущенных
пакетов (пакеты, не относящиеся к этой карте или идущие второй или более разы),
2 - полный лог).
Сейчас на карту пропускаются все нано, потом будет сделана блокировка.
=============================================================================
Настройки антикаскадинга размещаются в секции [anticasc] файла mpcs.conf.
Также для работы необходим файл mpcs.ac, в котором хрянятся длительности
интервала между dw для разных систем кодирования. Подсчет ведется при отсылке,
считаются только разные ECM, для исключения срабатывания при перезапросах.
Аналогично не учитываются отфильтрованные запросы, на которые не было ответа.
Антикаскадер измеряет "реальное потребление" dw на один клиентский аккаунт.
Количество подключений и протоколы могут быть любыми, подсчет ведется глобально.
То есть два или несколько клиентов могут под одним и тем же именем подключаться
к разным портам - подсчет будет вестись для логина.
Принцип действия. Возьмем для примера что dw приходят раз в 10 секунд.
В этом случае за минуту придет плюс-минус 6 ответов, а за 5 минут - 30.
Это потребление за минуту, при "спокойном" просмотре, без переключения каналов,
принимается за 100%. Если одним аккаунтом пользуются одновременно два клиента
то потребление составит 200%, если три то 300% итд. Чтобы уменьшить число
ложных срабатываний сделан запас 80%, то есть реально порог 180% для одного,
280% для двух.. Можно задать допустимое количество клиентов на аккаунте -
глобально для всех пользователей и для конкретного аккаунта.
Поскольку у разных систем кодирования разная длина интервала между dw
(строго говоря, оно вообще на усмотрение передающей стороны) то по таблице
в mpcs.ac динамически вычисляется "вес" каждого запроса. Но, тем не менее,
при длинных интервалах (например, 30 секунд) возможны ложные срабатывания.
Для исключения ложных срабатываний применяется фильтр с кольцевым буфером,
длину которого можно задать. Для простоты можно представить что хранятся
результаты, например, 10 последних измерительных интервалов. Срабатывание
происходит если было превышение в n-1 (для 10 - в 9 случаях) - задается
в параметре DenySamples.
Например, если длина измерительного интервала 5 минут и длина буфера 6 то
хранятся последние 30 минут работы клиента и для срабатывания антикаскадера
должно случиться превышение в 25 из них. То есть клиент может непрерывно
щелкать каналами подряд 20 минут.
Настройки антикаскадера в секции [anticasc] mpcs.conf:
Enabled = 1 - разрешает работу антикаскадера, 0 (по умолчанию) - запрещает.
NumUsers - количество пользователей на аккаунт. В mpcs.conf - глобальная
настройка, для всех пользователей сразу. При желании можно добавить этот
параметр нужному пользователю в mpcs.user. 0 - нет ограничения, по умолчанию.
Samples - количество измерительных интервалов в буфере. Не больше 10 и не
меньше 2. По умолчанию 10.
DenySamples - в скольки измерительных интервалах должно случиться превышение
для срабатывания антикаскадера. По умолчанию на 1 меньше чем Samples,
это максимальная величина, минимальная - 1.
SampleTime - длина измерительного интервала в минутах. По умолчанию 2.
Penalty - "наказание" в случае превышения. По умолчанию 0 - отметка в логе.
1 - посылка fake dw в течение измерительного интервала.
Эта настройка тоже может быть индивидуальной для пользователя.
AcLogFile - имя файла лога антикаскадера, по умолчанию aclog.log.
Вот пример:
[anticasc]
Enabled = 1
NumUsers = 1
SampleTime = 3
Penalty = 0
AcLogFile = /var/run/mpcs/aclog.log
FakeDelay = 200
Samples = 10
DenySamples = 9
=============================================================================
Все программирование сделано ago.
DS