12 жовтня 2011 р.

cardsharing & openwrt routers

1.MPCS




2. OSCam
OSCam is an Open Source Conditional Access Module software, based on the very good MpCS version 0.9d created by dukat.

NAME
       OSCam - SC server


DESCRIPTIONS
       The OSCam software is an open source multi-protocol/multi-plattform SC server.


      OSCam supports the following protocols:
       ·  camd 3.3x
       ·  camd 3.5x UDP and TCP
       ·  newcamd with cascading/remote server ECM support
       ·  radegast
       ·  serial (HSIC, SSSP, BOMBA, DSR 9500)
       ·  camd 3.57x with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  camd 3.78x with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  gbox with cascading/remote server ECM support
       ·  CCcam with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  DVB API with multi tuner and PIP support


       OSCam works on the following plattforms:
      ·  Linux (tuxbox, arm, mips, mipsel, sh4, powerpc, ...)
      ·  Windows (based on cygwin1.dll)
      ·  Mac OS X

Власний досвід:
    Що до мене використовую зараз "Прошивки для TP-LINK с mpcs (DANtes)", mpcs має менший розмір, та поки що влаштовує.
    Якщо хто використовує прошивки  DANtes з mpcs, то може буде цікаво знати, що цей пакунок насправді відсутній у самій прошивці, існує тільки модуль завантаження з мережі, а сам модуль mpcs завантажується при включенні роутера. Та існує Luci інтерфейс для можливості налаштувань mpcs.
    Але прийшлося написати  маленький скрипт pl2303-watchdog.sh котрий перезавантажує mpcs коли іноді інтерфейс rs232 перезавантажується із-за помилки.
    pl2303-watchdog.sh:

    #!/bin/sh
    /sbin/logread -f  | while read LINE; do
     if  echo $LINE|grep 'pl2303 converter now attached to tty'>/dev/null; then
        echo watch dog repairing... |logger -t 'mpcs'; /etc/init.d/mpcs_init restart;
     fi;
     done 

    Версія з контролем повтору, була створена так як потрібно було перевантажити модуль ядра  pl2303 разом з перевантаженням mpcs і з'являвся циклічний повтор:
    pl2303-watchdog.sh: #!/bin/sh
    count=0
    /sbin/logread -f  | while read LINE; do
     if  echo $LINE|grep 'pl2303 converter now attached to tty'>/dev/null; then
        count=`expr $count + 1`
        if [ $count = 1 ]; then
        echo watch dog repairing... |logger -t 'mpcs'; /etc/init.d/mpcs_init restart;
    ;
        count=-1
        fi;
     fi;
     done

    Для перевантаження модуля був модифікований /etc/init.d/mpcs_init
    #!/bin/sh /etc/rc.common
    # Copyright (C) 2006 OpenWrt.org
    START=99

    start() {
    echo starting...|logger -t 'mpcs'
          mpcs_ext &
          insmod pl2303 >/dev/null 2>/dev/null
    }

    stop() {
    echo stoping...|logger -t 'mpcs'
      killall -9 mpcs >/dev/null 2>/dev/null
      rm /tmp/mcps.mem >/dev/null 2>/dev/null
      rm /tmp/*.fifo >/dev/null 2>/dev/null
      rmmod pl2303
    }

    Для автоматичного завантаження mpcs_watchdog до виконання  створимо файл /etc/init.d/mpcs_watchdog:
    #!/bin/sh /etc/rc.common
    # Copyright (C) 2008-2010 OpenWrt.org

    START=97
    start() {
    /root/pl2303-watchdog.sh&
    }

    stop() { 
    kill $(ps |grep "/sbin/logread -f"|cut -d " " -f 2|head -n 1)
    }

    Зробимо цей файл виноуємим: 
    сhmod +x /etc/init.d/mpcs_watchdog


    ВДОСКОНАЛЕННЯ:
    В результаті роботи булу встановлено що скрипт mpcs_watchdog працює не надійно. Виявлені проблеми з завантаженням процесора процесом 'mpcs' до високого рівня. Тому встановлено наступний скрипт що робить моніторинг завантаженості процесора і у випадку високого значення виконує перезавантаження процесу 'mpcs' .
    cpucalc-m.sh:

    #!/bin/bash
    # by Paul Colby (http://colby.id.au), no rights reserved ;)

    PREV_TOTAL=0
    PREV_IDLE=0

    while true; do
      CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
      unset CPU[0]                          # Discard the "cpu" prefix.
      IDLE=${CPU[4]}                        # Get the idle CPU time.

      # Calculate the total CPU time.
      TOTAL=0
      for VALUE in "${CPU[@]}"; do
        let "TOTAL=$TOTAL+$VALUE"
      done

      # Calculate the CPU usage since we last checked.
      let "DIFF_IDLE=$IDLE-$PREV_IDLE"
      let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
      let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
    #MONITORING VALUE OF CPU LOAD
    if [ $DIFF_USAGE -ge 90 ];
    then
    echo Repairing by cpu $DIFF_USAGE% overload...  |logger -t 'mpcs'
    /etc/init.d/mpcs_init restart
    fi
      # Remember the total and idle CPU times for the next check.
      PREV_TOTAL="$TOTAL"
      PREV_IDLE="$IDLE"

      # Wait before checking again.
      sleep 10
    done

    Для роботи цього скрипту потртібен bash. Встановлюємо opkg update; opkg install bash.
    І замінемо файл  /root/pl2303-watchdog.sh файлом cpucalc-m.sh.





    розмір файлу mpcs 258340 байт, завантажується у архіві.

    Пробував oscam_XXXXX_ar71xx.ipk  - працює
    oscam 1.00-r5542 має розмір понад 600 кбайт.

    Тестування:
    Для тестування роботи програми можливо використовувати програми монітори для віддалеенго перегляду файлів протоколів,  наприклад ось таку: microMon



      Немає коментарів:


      Коли забув ти рідну мову, біднієш духом ти щодня...
      When you forgot your native language you would become a poor at spirit every day ...

      Д.Білоус / D.Bilous
      Рабів до раю не пускають. Будь вільним!

      ipv6 ready