четверг, 6 января 2011 г.

установка sasc-ng для кардшаринга

УСТАНОВКА

1. ставим нужные пактеы
sudo apt-get install linux-headers-`uname -r` build-essential mercurial openssl libssl-dev gettext
2. скачиваем исходники sasc-ng и компилим
cd /usr/local/src
hg clone http://85.17.209.13:6100/sc
cd sc
nano Makefile (или редактируем например это все в редакторе mc)
Находим и удаляем параметр -O3 у строки начинающейся с CSAFLAGS
cd /usr/local/src/sc/contrib/sasc-ng
chmod +x configure
chmod +x ./dvbloopback/module/config_dvb.pl
конфигурируем
./configure
компилим sasc-ng
make
компилим модуль
make module
cp sasc-ng /usr/bin
mkdir /lib/modules/`uname -r`/misc
/usr/bin/install dvbloopback.ko /lib/modules/`uname -r`/misc/
depmod
modprobe dvbloopback
глядим появился ли виртуальный двб адаптер?
ls /dev/dvb (если появился то радуемся)
создаем папку где будет конфиг кардклиента
mkdir /etc/sc
nano /etc/sc/cardclient.conf
и редактируем его так
newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
мой пример для Н@Т@В
newcamd:hostname:port:0/0500/ffff:username:password:cfgKey



Автозагрузка
в /usr/bin/runsasc

#!/bin/bash

# Скрипт для автоматического поднятия SASC-NG и Драйверов

# Путь до файла sasc-ng
SASCPRG="/usr/bin/sasc-ng"

# Путь до директории с конфигами
CAMDIR="/etc/sc"

# Кол-во карт
ADAPTERS="1"

# Опции демона.
OPTIONS="-j 0:1 --cam-budget --sid-nocache -d 0xf0a --cam-dir"

# Максимальное кол-во попыток
MAXTRIES=10

# Минимальное время, до повторной попытки
MINRUN=20

## Конец секции конфигурации ##

SASCCMD="$SASCPRG $OPTIONS $CAMDIR"
KILL="/usr/bin/killall -q -TERM"

# Проверяем где необходимые драйвера, и загружены ли они
# возврщает 0 если да, и 1 если нет

function DriverLoaded()
{
grep -qse dvbloopback /proc/modules
}

# Загружет все DVBLoopback драйвера для ваших карт
function LoadDriver()
{
modprobe dvbloopback num_adapters=$ADAPTERS
sleep 5
}

# Удаляем все загруженные модули
function UnloadDriver()
{
rmmod dvbloopback
}

# Загрузка драйвера, если он ущё не был загружен:
if ! DriverLoaded; then
LoadDriver
fi

LASTRESTART=$(date +%s)
LOOPCOUNT=0
while (true) do
if [ $LOOPCOUNT -le $MAXTRIES ] || [ $MAXTRIES -eq 0 ] ; then
eval "screen -D -m -S sasc-ng $SASCCMD &"
# Дожидаемся иницализации SASC-NG

sleep 10
touch /tmp/SASC_COMPLETE
else
$KILL runsasc
fi
# Запоминаем PID процесса SASC-NG
PID=$!
# Ожидание сигнала завершения
wait $PID
# Запоминаем значение, от SASC-NG
RET=$?
if test $RET -eq 0 -o $RET -eq 2; then exit; fi
TIMEOFDEATH=$(date +%s)
RUNTIME=$((TIMEOFDEATH - LASTRESTART))
if [ $TIMEOFDEATH -le $(($LASTRESTART + $MINRUN)) ] ; then
echo "`date` SASC-NG crashed in $RUNTIME seconds. Minimum required runtime for SASC-NG is $MINRUN seconds. Killing runsasc process..."
$KILL runsasc
fi
echo "`date` Перезагрузка DVBLoopback драйверов"
$KILL sasc-ng
sleep 10
UnloadDriver
LoadDriver
LASTRESTART=$(date +%s)
LOOPCOUNT=$((LOOPCOUNT+1))
echo "`date` Перезагрузка SASC-NG $LOOPCOUNT time(s). Максимальное число попыток $MAXTRIES"
done





Теперь дайте необходимые права:

$ chmod 755 /usr/bin/runsasc
$ chmod +x /usr/bin/runsasc

Теперь создадим init script. Данный скрипт будет загружать sasc-ng демон при старте системы.
Откроем файл sascd:

nano /etc/init.d/sascd

Впишем:
#! /bin/bash
#
# sasc start-stop script
#
NAME="runsasc"
DESC="SASC-NG"
DAEMON="sasc-ng"

ENABLED=0
test -f /etc/default/sascc && . /etc/default/sascc
test "$ENABLED" != "0" || exit 0

rm -f /tmp/SASC_COMPLETE

LOOP=0
case "$1" in
start)
if ! ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Starting $DESC: $NAME.
"
/usr/bin/runsasc &
until [ -e /tmp/SASC_COMPLETE ] || [ $LOOP -eq $TIMEOUT ] ; do
sleep 1
LOOP=$((LOOP+1))
done
if [ $LOOP -eq $TIMEOUT ]; then
echo -e "SASC-NG startup sequence has timed out in $TIMEOUT seconds. SASC-NG will not start.
"
exit 1
fi
echo -e "SASC-NG startup time was $LOOP second(s).
"
echo -e "SASC-NG startup sequence completed.
"
else
echo -e "SASC-NG is already running.
"
fi
;;
stop)
if ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Stopping $DESC: $NAME.
"
sleep 3
killall -q -TERM $NAME
killall -q -TERM $DAEMON
sleep 5
rmmod dvbloopback.ko
else
echo -e "SASC-NG is not running.
"
fi
;;
restart|force-reload)
if ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Restarting $DESC: $NAME.
"
sleep 3
killall -q -TERM $NAME
killall -q -TERM $DAEMON
sleep 5
rmmod dvbloopback.ko
sleep 2
runsasc &
until [ -e /tmp/SASC_COMPLETE ] || [ $LOOP -eq $TIMEOUT ] ; do
sleep 1
LOOP=$((LOOP+1))
done
if [ $LOOP -eq $TIMEOUT ]; then
echo -e "SASC-NG startup sequence has timed out in $TIMEOUT seconds. SASC-NG will not start.
"
exit 1
fi
echo -e "SASC-NG startup time was $LOOP second(s).
"
echo -e "SASC-NG startup sequence completed.
"
else
echo -e "SASC-NG is not running.
"
fi
;;
*)
N=/etc/init.d/$NAME
echo "Use: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
rm -f /tmp/SASC_COMPLETE
exit 0



Снова дадим необходимые права и добавим скрипт в автозагрузку:
$ chmod +x /etc/init.d/sascd
$ update-rc.d sascd defaults 21


Теперь нужно настроить файл конфигурации демона:
$ nano /etc/default/sascc

Впишите это:
# /etc/default/sascc
# Default SASC-NG startup config

# Измените на 1 для разрешения sasc-ng's init-script
ENABLED=1

# Таймаут для создания DVBLoopback устройства(в секундах)
TIMEOUT=60

запускаем service sascd start
ну или помещаем в автозагрузку.
PROFIT

1 комментарий:

Анонимный комментирует...

Доброго времени суток!
Подскажите пожалуйста, какую систему Вы использовали (ubuntu/debian? версия? 32/64 bit?)
Ставили ли какие-нибудь кастомные драйвера?
2й день бьюсь над связкой sasc-ng+getstream - пока глухо...