Habe gerade herausgefunden das der kein integriertes DSL-Modem hat. Das es sowas noch heute gibt...
Gibt es eigentlich irgendwo eine gute Doku um opkg Pakete zu erstellen?
# Alle funktionen sind hier deklariert
BIN=oscam-bin
LOGFILE=/tmp/oscam.log
WLOGFILE=/tmp/oscam_watchdog.log
OPT=-b
Na=Oscam
OSCAM_SERVER=/etc/config/oscam/oscam.server
OSCAM_CONF=/etc/config/oscam/oscam.conf
OSCAM_WATCHDOG=/etc/config/oscam/oscam.watchdog
#######################################################################
## Get Config from File ##
#######################################################################
WATCHDOG_ENABLE=$(grep watchdog_enable $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
REBOOT_ENABLE=$(grep -w reboot $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
PANIC_REBOOT_ENABLE=$(grep panicreboot $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
PANIC_REBOOT_COUNT=$(grep -v "#" $OSCAM_WATCHDOG | awk '/panic_reboot_count/ {print $3}')
LOCALHOST=$(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
MON_USR=$(grep watchdog_user $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
MON_PWD=$(grep watchdog_pass $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
MON_PORT=$(grep watchdog_port $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
call_start() {
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -ge 2; then
printf "\nVersuch des Starts abgebrocken! Ist $Na bereits aktiv?\n\n"
logger "Versuch des Starts abgebrochen! ISt $Na bereits aktiv?"
else
call_clear_log
printf "\n$Na wird gestartet!\n\n"
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -lt 2; then
$BIN $OPT
fi
if test $(ps | grep usbwatch | grep -v grep | wc -l) -lt 1; then
nohup /usr/bin/usbwatch > /dev/null & sleep 2
fi
if test $WATCHDOG_ENABLE -ge 1; then
if test $(ps | grep oscam_watchdog | wc -l) -lt 2; then
nohup sh /usr/bin/oscam_watchdog > /dev/null & exit
fi
else
echo "Watchdog: Watchdog ist deaktiviert in $OSCAM_WATCHDOG. ( watchdog = 1 zum aktivieren )"
exit
fi
fi
}
call_stop() {
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -ge 2; then
printf "\n$Na wird beendet!\n\n"
logger "$Na wird beendet!"
for i in $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
for i in $(ps | grep oscam_watchdog | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
else
printf "\n$Na inaktiv ! Kann nicht beendet werden!\n\n"
logger "$Na inaktiv ! Kann nicht beendet werden!"
fi
}
call_restart() {
call_stop
sleep 1
call_start
}
call_update() {
if test $(grep ar71xx /etc/opkg.conf | wc -l) -ge 1;then
arch=ar71xx
fi
if test $(grep brcm63xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm63xx
fi
if test $(grep brcm47xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm47xx
fi
srcurl=$(awk '/http:/ {print $3}' /etc/opkg.conf)
printf "\nWillkommen beim Oscam Installservice!"
printf "\nDu hast hier die Möglichkeit Oscam oder den Watchdog upzudaten oder downzugraden."
printf "\nSobald die Installation gestartet wird, wird Oscam beendet. Du kannst jederzeit mit strg+c abbrechen.\n"
printf "\nWelches Paket möchtest du modifizieren? 1 = Oscam , 2 = Watchdog [1 oder 2] : "
read updateart
if [ "$updateart" = "1" -o "$updateart" = "1" ];then
call_stop
nohup opkg update > /dev/null
installed=$(opkg list_installed | grep oscam | grep svn)
new_aviable=$(opkg list | grep oscam | grep -v watchdog)
printf "\nDerzeit ist folgende Version installiert:\n"
printf "\n$installed\n"
printf "\nInstallierbare Versionen sind:\n"
printf "\n$new_aviable\n"
printf "\nWelche Version möchtest du installieren? [z.b. 7991] : "
read svnver
printf "Bist du dir sicher das du jetzt $Na - 1.20-svn-$svnver installieren willst? [J/N]"
read sicher1
if [ "$sicher1" = "J" -o "$sicher1" = "j" ];then
opkg remove oscam
wget $srcurl/oscam_1.20-svn-$svnver'_'$arch.ipk -O /tmp/oscam.ipk
opkg --nodeps --force-downgrade install /tmp/oscam.ipk
rm /tmp/oscam.ipk
fi
printf "\nInstallation ist beendet! Nun kannst du 'oscam start' eingeben oder 'oscam test' um die Version zu testen!\n"
fi
if [ "$updateart" = "2" -o "$updateart" = "2" ];then
call_stop
nohup opkg update > /dev/null
w_installed=$(opkg list_installed | grep oscam_watchdog)
w_new_aviable=$(opkg list | grep oscam_watchdog)
printf "\nDerzeit ist folgende Version installiert:\n"
printf "\n$w_installed\n"
printf "\nInstallierbare Versionen sind:\n"
printf "\n$w_new_aviable\n"
printf "\nWelche Version möchtest du installieren? [z.b. 1.00] : "
read wver
printf "Bist du dir sicher das du jetzt oscam_watchdog - $wver installieren willst? [J/N]"
read sicher2
if [ "$sicher2" = "J" -o "$sicher2" = "j" ];then
opkg remove oscam_watchdog
wget $srcurl/oscam'_'watchdog'_'$wver'_'$arch.ipk -O /tmp/watchdog.ipk
opkg --nodeps --force-downgrade install /tmp/watchdog.ipk
rm /tmp/watchdog.ipk
fi
printf "\nInstallation ist beendet.\n"
fi
}
call_status() {
if test $(ps | grep oscam | /bin/ash | grep -v grep | awk '{print $1}' | wc -l) -ge 2;then
printf "\n$Na ist aktiv!\n"
else
printf "\n$Na ist inaktiv!\n"
fi
if test $WATCHDOG_ENABLE -ge 1; then
if test $(ps | grep oscam_watchdog | grep -v grep | awk '{print $1}' | wc -l) -ge 1;then
printf "\nWatchdog ist aktiv!\n"
else
printf "\nWatchdog ist inaktiv jedoch in der Config aktiviert!\n"
fi
fi
if test $(ps | grep /usr/bin/usbwatch | grep -v grep | wc -l) -ge 1; then
printf "\nUsb Schnittstellenüberwachung ist aktiv!\n\n"
else
printf "\nUsb Schnittstellenüberwachung ist inaktiv!\n\n"
fi
}
call_clear_log() {
echo "------------------------------------------------------------------------------------" >> $LOGFILE.old
tail -30 $LOGFILE >> $LOGFILE.old
tail -300 $LOGFILE.old > $LOGFILE.tmp
cat $LOGFILE.tmp > $LOGFILE.tmp
rm $LOGFILE.tmp
}
call_check_reader_panic() {
sm_rc=1
check_ok=0
easymouse_error_count=0
smargo_error_count=0
pcsc_error_count=0
stamp=$(date "+%y\%m\%d_%H:%M")
reader_count=$(cat /tmp/watchdog.detect.readers | wc -l)
while [ $sm_rc -le $reader_count ]; do
reader_label=$(awk 'NR=='$sm_rc'{print $2}' /tmp/watchdog.detect.readers)
reader_id=$(awk 'NR=='$sm_rc'{print $1}' /tmp/watchdog.detect.readers)
found_error=$(tail -30 $LOGFILE | awk '/'$reader_id'/' | grep -iE "Error|error|The reader was disabled|Cannot open device|Error getting card status|read failed with error")
if test $(tail -30 $LOGFILE | awk '/'$reader_id'/' | grep -iE "The reader was disabled|Cannot open device|Error getting card status|read failed with error" | wc -l) -ge 1;then
logger "Watchdog: Logfile hat einen Readererror für $reader_label gemeldet! Details siehe /tmp/watchdog.found.errors und /tmp/oscam.log.old"
echo $found_error >> /tmp/watchdog.found.errors
if test $(grep $reader_id /tmp/watchdog.detect.readers | awk '/smartreader/ || /smargo/ {print $0}' | wc -l) -ge 1;then
let smargo_error_count=$smargo_error_count+1
fi
else
let check_ok=$check_ok+1
fi
let sm_rc=$sm_rc+1
done
if test $reader_count != $check_ok ; then
sleep 3
defekt=$(expr $reader_count - $check_ok)
logger "Watchdog: Es sind $defekt deiner $reader_count Reader fehlerhaft!"
for i in $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
echo "WATCHDOG KILLED $Na @ $stamp" > $LOGFILE
call_clear_log
if test $smargo_error_count -ge 1;then
rmmod -f ohci_hcd
sleep 1
insmod $(find /lib | grep ohci-hcd.ko)
fi
sleep 3
call_start
nohup sh /usr/bin/oscam_watchdog > /dev/null & exit
fi
}
call_check_oscam_freeze() {
stamp=$(date "+%y\%m\%d_%H:%M")
if test $(call_monitor_base_info | wc -l) -lt 8;then
echo "alarma"
fi
if test $(ps | grep usbwatch | grep -v grep | wc -l) -lt 1; then
nohup /usr/bin/usbwatch > /dev/null &
fi
}
call_check_reboot() {
curr_day=$(date | cut -c1-3 | grep Mon | wc -l)
curr_hou=$(date | cut -c12-13)
boot_hou=$(uptime | cut -c15)
boot_min=$(uptime | cut -c17-18)
if test -n $boot_hou;then
echo "Zeitpunkt für reboot ist nicht erreicht!"
else
boot_stmp=$(expr $boot_hou \* $boot_min)
if test $boot_stmp -ge 1 -o $curr_day -ge 1; then
reboot
fi
fi
}
call_getapi() {
stamp=$(date "+%y\%m\%d_%H:%M")
web_port=$(grep HttpPort $OSCAM_CONF | grep -v '#' | awk '{print $3}')
local_host=$(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
if which curl >/dev/null; then
web_user=$(grep HttpUser $OSCAM_CONF | grep -v '#' | awk '{print $3}')
web_pass=$(grep HttpPWD $OSCAM_CONF | grep -v '#' | awk '{print $3}')
api_get_curl=$(curl -s --anyauth http://$web_user:$web_pass@$local_host:$web_port/oscamapi.html?part=status -o /tmp/api.out)
else
api_get_wget=$(wget http://$local_host:$web_port/oscamapi.html?part=status -o /tmp/api.out)
fi
if test $(cat /tmp/api.out | wc-l) -lt 4;then
echo "Watchdog: $stamp - Problem beim Bezug der XML-API aufgetreten! Ist curl installiert?" >> /tmp/watchdog.found.errors
echo "Watchdog: $stamp - Problem beim Bezug der XML-API aufgetreten! Ist curl installiert?" >> /tmp/oscam.log
logger "Watchdog: Problem beim Bezug der XML-API aufgetreten! Ist curl installiert?"
fi
}
call_setup() {
new_overlay=0
old_overlay=0
swap_on=0
new_hdd=0
old_hdd=0
osc_inst=0
printf "\n\n Willkommen beim Setup!"
printf "\n Du hast hier die Möglichkeit den Speicher deines Routers zu erweitern(usb-stick),"
printf "\n Festplatten ein zu binden oder ein vorher verwendeten Stick wieder herzustellen."
printf "\n Die Festplatte/der Stick wird/muss ext4 formatiert werden/sein."
printf "\n Die Festplatte/der Stick sollte spätestens jetzt angeschlossen werden."
printf "\n Das Gerät wird später mittels uuid gemountet. Dadurch kann der Stick auch mal am anderen Port stecken."
printf "\n Was möchtest du tun?\n"
printf "\n (1) - Neue Erweiterung einrichten? (2) - Alten Stick wiederherstellen?\n"
printf "\n (3) - Neue Festplatte einbinden? (4) - Alte Festplatte wiederherstellen?\n"
printf "\n (5) - Swap Speicher einrichten? (6) - Oscam und Watchdog installieren?\n"
printf "\n (Eingabe 1,2,3,4,5 oder 6):"
read case
if [ "$case" = "1" ];then
let new_overlay=$new_overlay+1
fi
if [ "$case" = "2" ];then
let old_overlay=$old_overlay+1
fi
if [ "$case" = "3" ];then
let new_hdd=$new_hdd+1
fi
if [ "$case" = "4" ];then
let old_hdd=$old_hdd+1
fi
if [ "$case" = "5" ];then
space1=$(df -m | awk '/overlayfs:/ {print $2}')
space2=$(df -m | awk '/festplatte/ {print $2}')
if test -z $space1;then
space1=129
fi
if test -z $space2;then
space2=129
fi
if test $space1 -lt 128 -o $space1 -lt 128;then
printf "\n Dein Massenspeicher ist noch nicht erfolgreich eingebunden wurden!"
else
let swap_on=$swap_on+1
fi
fi
if [ "$case" = "6" ];then
let osc_inst=$osc_inst+1
fi
if test $new_hdd = 1;then
label=festplatte
fi
if test $new_overlay = 1;then
label=overlay
fi
if test $(opkg list_installed | grep e2fsprogs | wc -l) -lt 1; then
printf "\n\n Installiere erforderliche Pakete\n\n"
nohup opkg update >> /dev/null
nohup opkg install blkid kmod-fs-ext4 kmod-usb-storage b-mount e2fsprogs >> /dev/null
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" -o "$old_overlay" = "1" -o "$old_hdd" = "1";then
printf "\n\n Es sind folgende Massenspeicher angeschlossen:\n\n"
blkid
printf "\n Welcher dieser soll eingebunden werden? (Eingabe z.b. sda1) : "
read din
device=/dev/$din
if test "$old_overlay" = "1" -o "$old_hdd" = "1";then
device=$(blkid | sed 's/"/ /g' | awk '/'$device'/ {print $3}')
fi
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" ;then
printf "\n $device wird formatiert! Bist du dir sicher? J/N :"
read sicher1
if [ "$sicher1" = "J" -o "$sicher1" = "j" ];then
printf "\n Datenträger wird formatiert.......\n"
nohup mkfs.ext4 -L $label $device > /dev/null
fi
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" -o "$old_overlay" = "1" -o "$old_hdd" = "1";then
printf "\n Datenträger wird nun eingebunden\n"
uuid=$(blkid | grep $label | sed 's/"/ /g' | awk '{print $5}')
echo " " >> /etc/config/fstab
echo "config mount" >> /etc/config/fstab
echo " option target /$label" >> /etc/config/fstab
echo " option uuid $uuid" >> /etc/config/fstab
echo " option fstype ext4" >> /etc/config/fstab
echo " option options rw,sync" >> /etc/config/fstab
echo " option enabled 1" >> /etc/config/fstab
echo " option enabled_fsck 0" >> /etc/config/fstab
sleep 2
sync
if test $new_overlay = 1;then
mkdir /tmp/new_overlay
mkdir /tmp/old_overlay
mount $device /tmp/new_overlay
mount -o bind /overlay /tmp/old_overlay
cp -r /tmp/old_overlay/* /tmp/new_overlay -a
usleep
umount /tmp/old_overlay
umount /tmp/new_overlay
fi
printf "\n Der Vorgang ist abgeschlossen, starte Router in 10 Sekunden neu!\n"
printf "\n Du kannst nach dem Neustart deinen Swapspeicher einrichten.\n\n"
sleep 10
reboot
fi
if test $swap_on = 1;then
printf "\n Welche Größe, in MB, soll dein Swapfile haben? (Empfehlung 256) : "
read swin
sw_size=$(expr $swin \* 1024)
if test $(df -m | awk '/overlayfs:/ {print $2}') -gt 128;then
if test -e /festplatte;then
swapfile=/festplatte/swapfile
if test -e /festplatte/swapfile;then
mkswap /festplatte/swapfile
swapon /festplatte/swapfile
else
printf "\n\n Erstelle nun das Swapfile. Anhängig vom Stick kann das bis zu 20 Minuten dauern!\n\n\n"
dd if=/dev/zero of=/festplatte/swapfile bs=1024 count=$sw_size
mkswap /festplatte/swapfile
swapon /festplatte/swapfile
fi
else
swapfile=/overlay/swapfile
if test -e /overlay/swapfile;then
mkswap /overlay/swapfile
swapon /overlay/swapfile
else
printf "\n\n Erstelle nun das Swapfile. Anhängig vom Stick kann das bis zu 20 Minuten dauern!\n\n\n"
dd if=/dev/zero of=/overlay/swapfile bs=1024 count=$sw_size
mkswap /overlay/swapfile
swapon /overlay/swapfile
fi
fi
else
printf "Du hast noch kein funktionierende Speichererwiterung eingerichtet oder dieser schlug fehl.\n\n"
fi
uci set fstab.@swap[-1].device=$swapfile
uci set fstab.@swap[-1].enabled=1
uci commit fstab
printf "\n Swap Speicher sollte nun bereit stehen. Testen mit free .\n"
fi
if test $osc_inst = 1;then
if test $(grep ar71xx /etc/opkg.conf | wc -l) -ge 1;then
arch=ar71xx
fi
if test $(grep brcm63xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm63xx
fi
if test $(grep brcm47xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm47xx
fi
srcurl=$(awk '/http:/ {print $3}' /etc/opkg.conf)
nohup opkg update > /dev/null
printf "\n Folgende Versionen sind derzeit am Server Verfügbar:\n\n"
opkg list | grep oscam | grep -v watchdog
printf "\nSVN 6089 ist Oscam 1.10 welche als '"stable"' anzusehen ist!\n\n"
printf "\nWelche Version möchtest du installieren? [z.b. 6089] : "
read svnver
if test $svnver = 6089;then
ver=1.10
else
ver=1.20
fi
wget $srcurl/oscam_$ver-svn-$svnver'_'$arch.ipk -O /tmp/oscam.ipk
nohup opkg --nodeps --force-downgrade install /tmp/oscam.ipk > /dev/null
rm /tmp/oscam.ipk
nohup opkg install oscam_watchdog > /dev/null
/etc/init.d/oscam enable
nohup /etc/init.d/oscam start > /dev/null
printf "\n\n Oscam wurde gestartet und startet ab jetzt beim booten automatisch."
printf "\n Das Oscam Webinterface ist nun unter $(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'):8888 erreichbar. Viel Spaß!\n\n"
fi
}
call_monitor_get_labels() {
call_monitor_status | grep '|r|' | sed 's/|/ /g' | awk '{print $2,$5}' > /tmp/watchdog.detect.readers
}
call_monitor() {
if test -z $2;then
(echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "$1";
usleep;
echo -e "exit") | ncat -i 1 -u $LOCALHOST $MON_PORT 2>/dev/null
else
(echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "$1";
usleep;
echo -e "exit") | ncat -i $2 -u $LOCALHOST $MON_PORT 2>/dev/null
fi
}
#!/bin/sh
source /lib/oscamfunctions.sh
call_watchdog_init() {
call_monitor "status" 120 \
| if grep -q "|s|0|root|";then
logger "Watchdog: Oscam ist aktiv, starte Reader Erkennung!"
killall -s SIGINT ncat
call_watchdog_reader_detect
fi
}
call_watchdog_reader_detect() {
runde=1
call_monitor status 400ms | grep -v "logged in" > /tmp/watchdog.oscam.status
grep '|r|' /tmp/watchdog.oscam.status | sed 's/|/ /g' | awk '{print $2,$5}' > /tmp/watchdog.detect.readers
reader_count=$(grep '|r|' /tmp/watchdog.oscam.status| wc -l)
reader_count_config=0
logger "Watchdog: Es wurden $reader_count Hardware Reader erkannt:"
while test $runde -le $reader_count;do
reader_name=$(awk 'NR=='$runde'{print $2}' /tmp/watchdog.detect.readers)
reader_PPID=$(awk 'NR=='$runde'{print $1}' /tmp/watchdog.detect.readers)
reader_kind=$(grep -C 3 -i $reader_name $OSCAM_SERVER | grep -v '#' | grep -i -v Device | awk '/Protocol|protocol/ {print $3}')
logger "Watchdog: Reader '"$reader_name"' mit PID '"$reader_PPID"' ist bereit! ($reader_kind)"
let runde=$runde+1
done
for line in $(grep -iE "mouse|smartreader|smargo|pcsc" $OSCAM_SERVER | grep -v '#' | grep -i -v Device | awk '{print $1}'); do
let reader_count_config=$reader_count_config+1
done
for line in $(grep -C 3 -iE "mouse|smartreader|smargo|pcsc" $OSCAM_SERVER | grep -v '#' | grep -iE "enable = 0" | awk '{print $1}'); do
let reader_count_config=$reader_count_config-1
done
if test $reader_count_config != $reader_count;then
logger "Watchdog: ein Reader scheint beim starten verreckt zu sein!"
else
looger "Wenn Sie das lesen können ist alles gut!"
fi
echo config $reader_count_config
echo monitor $reader_count
}
call_watchdog_init
Wir verwenden Cookies und ähnliche Technologien für folgende Zwecke:
Akzeptieren Sie Cookies und diese Technologien?
Wir verwenden Cookies und ähnliche Technologien für folgende Zwecke:
Akzeptieren Sie Cookies und diese Technologien?