You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
4.5 KiB

#!/bin/sh
. /etc/init.d/globals
# Camd-Fileflags
FLAGDIR="/var/etc"
F_OPENVPN=".openvpn"
F_DOSCAM=".doscam"
F_OSCAM=".oscam"
F_OSMOD=".osmod"
F_NCAM=".ncam"
F_MGCAMD=".mgcamd"
F_CCCAM=".cccam"
F_GBOX=".gbox"
doscam_action()
{
case $1 in
"start" )
SHOWINFO "start camd_datefix"
/etc/init.d/camd_datefix start doscam
SHOWINFO "start doscam"
/var/bin/doscam -b -w0
if [ -e $FLAGDIR/$F_MGCAMD ]; then
sleep 15
fi
;;
"stop" )
SHOWINFO "stop camd_datefix"
/etc/init.d/camd_datefix stop doscam
SHOWINFO "stop doscam"
killall doscam
sleep 1
rm -rf /tmp/doscam.*
rm -rf /tmp/ecm.info
;;
* )
doscam_action "stop"
sleep 1
doscam_action "start"
;;
esac
}
oscam_action()
{
case $1 in
"start" )
SHOWINFO "start camd_datefix"
/etc/init.d/camd_datefix start oscam
SHOWINFO "start oscam"
/var/bin/oscam -b
if [ -e $FLAGDIR/$F_MGCAMD ]; then
sleep 15
fi
;;
"stop" )
SHOWINFO "stop camd_datefix"
/etc/init.d/camd_datefix stop oscam
SHOWINFO "stop oscam"
killall oscam
sleep 1
rm -rf /tmp/oscam.*
rm -rf /tmp/ecm.info
;;
* )
oscam_action "stop"
sleep 1
oscam_action "start"
;;
esac
}
osmod_action()
{
case $1 in
"start" )
SHOWINFO "start camd_datefix"
/etc/init.d/camd_datefix start osmod
SHOWINFO "start osmod"
/var/bin/osmod -b
if [ -e $FLAGDIR/$F_MGCAMD ]; then
sleep 15
fi
;;
"stop" )
SHOWINFO "stop camd_datefix"
/etc/init.d/camd_datefix stop osmod
SHOWINFO "stop osmod"
killall osmod
sleep 1
rm -rf /tmp/osmod.*
rm -rf /tmp/ecm.info
;;
* )
osmod_action "stop"
sleep 1
osmod_action "start"
;;
esac
}
ncam_action()
{
case $1 in
"start" )
SHOWINFO "start camd_datefix"
/etc/init.d/camd_datefix start ncam
SHOWINFO "start ncam"
/var/bin/ncam -b
if [ -e $FLAGDIR/$F_MGCAMD ]; then
sleep 15
fi
;;
"stop" )
SHOWINFO "stop camd_datefix"
/etc/init.d/camd_datefix stop ncam
SHOWINFO "stop ncam"
killall ncam
sleep 1
rm -rf /tmp/ncam.*
rm -rf /tmp/ecm.info
;;
* )
ncam_action "stop"
sleep 1
ncam_action "start"
;;
esac
}
mgcamd_action()
{
case $1 in
"start" )
SHOWINFO "start mgcamd"
{ /var/bin/mgcamd; pzapit -rz; } &
;;
"stop" )
SHOWINFO "stop mgcamd"
kill $( cat /tmp/mgcamd.pid )
sleep 1
rm -rf /tmp/mgstat.info
rm -rf /tmp/mgshare.info
rm -rf /tmp/ecm.info
rm -rf /tmp/pid.info
rm -rf /tmp/ca_cache.list
rm -rf /tmp/cccam.info
rm -rf /tmp/ecm.info
rm -rf /tmp/mg.info
;;
* )
mgcamd_action "stop"
sleep 1
mgcamd_action "start"
;;
esac
}
cccam_action()
{
case $1 in
"start" )
SHOWINFO "start cccam"
/var/bin/cccam &
sleep 5
;;
"stop" )
SHOWINFO "stop cccam"
killall cccam
;;
* )
cccam_action "stop"
sleep 1
cccam_action "start"
;;
esac
}
gbox_action()
{
case $1 in
"start" )
SHOWINFO "start gbox"
/var/bin/gbox &
sleep 10
;;
"stop" )
SHOWINFO "stop gbox"
touch /tmp/gbox.kill
sleep 1
rm -rf /tmp/pid.info
rm -rf /tmp/ecm.info
rm -rf /tmp/gbox.pid
rm -rf /tmp/gbox.ver
rm -rf /tmp/gbox.kill
;;
* )
gbox_action "stop"
sleep 1
gbox_action "start"
;;
esac
}
check_openvpn()
{
if [ -e $FLAGDIR/$F_OPENVPN ]; then
# wait i seconds for openvpn
i=10
while [ $i -gt 0 ]; do
if pidof openvpn > /dev/null; then
SHOWINFO "openvpn is started"
i=-1 # leave loop
else
SHOWINFO "wait for openvpn ... $i"
sleep 1
fi
i=$(($i-1))
if [ $i = 0 ]; then
SHOWINFO "continue without openvpn"
fi
done
fi
}
camd_action()
{
case $1 in
"doscam")
doscam_action $ACTION
;;
"oscam")
oscam_action $ACTION
;;
"osmod")
osmod_action $ACTION
;;
"ncam")
ncam_action $ACTION
;;
"mgcamd")
mgcamd_action $ACTION
;;
"cccam")
cccam_action $ACTION
;;
"gbox")
gbox_action $ACTION
;;
*)
if [ -e $FLAGDIR/$F_DOSCAM ]; then
doscam_action $ACTION
fi
if [ -e $FLAGDIR/$F_OSCAM ]; then
oscam_action $ACTION
fi
if [ -e $FLAGDIR/$F_OSMOD ]; then
osmod_action $ACTION
fi
if [ -e $FLAGDIR/$F_NCAM ]; then
ncam_action $ACTION
fi
if [ -e $FLAGDIR/$F_MGCAMD ]; then
mgcamd_action $ACTION
fi
if [ -e $FLAGDIR/$F_CCCAM ]; then
cccam_action $ACTION
fi
if [ -e $FLAGDIR/$F_GBOX ]; then
gbox_action $ACTION
fi
;;
esac
}
case $1 in
"start")
ACTION="start"
check_openvpn
camd_action $2
;;
"stop")
ACTION="stop"
camd_action $2
;;
*)
ACTION="restart"
camd_action $2
;;
esac