1
Files
qnap-rc-scripts/nvrd.sh
2016-09-04 22:20:40 +03:00

258 lines
9.4 KiB
Bash
Executable File

#!/bin/sh
# For Administration
INSTALL_FLAG_FILE=/tmp/check_install.flag
if [ -f $INSTALL_FLAG_FILE ] ; then
INSTALLING=`/bin/cat $INSTALL_FLAG_FILE`
[ x"$INSTALLING" != x"1" ] || exit 0
fi
NVR_ROOTFS=
export NVR_ROOTFS
RecordingsShare=`/sbin/getcfg SHARE_DEF defRecordings -d Qrecordings -f /etc/config/def_share.info`
ROOTFS=$NVR_ROOTFS
WGET=/usr/bin/wget-s
[ -x ${WGET} ] || WGET=/usr/bin/wget
# Set some defaults
MNT_POINT="/mnt/ext"
NVR_SOURCE="${MNT_POINT}/opt/source/nvr_app.tar.gz"
NVR_DIR="/"
ROOT_PART="/mnt/HDA_ROOT"
UPDATEPKG_DIR="${ROOT_PART}/update_pkg"
if [ "`/sbin/getcfg -f /etc/default_config/uLinux.conf NVR Support -d FALSE`" == "TRUE" ]; then
SUPPORT_NVR=yes
else
SUPPORT_NVR=no
fi
init_nvrd()
{
if [ ! -f /usr/bin/nvrd ]; then
_nvr_target=/mnt/ext/opt/nvr
_nvr_create_link=0
if [ -f ${NVR_SOURCE} ]; then
/bin/rm -rf /usr/msb 2>/dev/null; mkdir /usr/msb
cd /
/bin/tar zxf ${NVR_SOURCE} --exclude *.cab
[ -d /mnt/ext/opt/nvr ] || /bin/mkdir -p ${_nvr_target}
/bin/tar zxvf ${NVR_SOURCE} -C /mnt/ext/opt/nvr --wildcards *.cab
_nvr_create_link=1
elif [ -f ${UPDATEPKG_DIR}/nvr_app.tar.gz ]; then
/bin/rm -rf /usr/msb 2>/dev/null; mkdir /usr/msb
cd /
/bin/tar zxf ${UPDATEPKG_DIR}/nvr_app.tar.gz --exclude *.cab
[ -d /mnt/ext/opt/nvr ] || /bin/mkdir -p ${_nvr_target}
/bin/tar zxvf ${UPDATEPKG_DIR}/nvr_app.tar.gz -C /mnt/ext/opt/nvr --wildcards *.cab
_nvr_create_link=1
fi
if [ "x${_nvr_create_link}" = "x1" ]; then
/bin/rm -f /home/httpd/cgi-bin/NNVRVMon.cab 2>/dev/null
/bin/rm -f /home/httpd/cgi-bin/QNAP*.cab 2>/dev/null
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/NNVRVMon.cab /home/httpd/cgi-bin/NNVRVMon.cab
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/QNAPG726.cab /home/httpd/cgi-bin/QNAPG726.cab
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/QNAPQ264.cab /home/httpd/cgi-bin/QNAPQ264.cab
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/QNAPQIVG.cab /home/httpd/cgi-bin/QNAPQIVG.cab
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/QNAPQMP4.cab /home/httpd/cgi-bin/QNAPQMP4.cab
/bin/ln -sf ${_nvr_target}/home/httpd/cgi-bin/QNAPQVivoTek.cab /home/httpd/cgi-bin/QNAPQVivoTek.cab
fi
[ ! -f /home/httpd/ajax_obj/js/qnapui.js_bak ] || /bin/cp /home/httpd/ajax_obj/js/qnapui.js_bak /home/httpd/ajax_obj/js/qnapui.js
[ ! -f /home/httpd/cgi-bin/html/login.html_bak ] || /bin/cp /home/httpd/cgi-bin/html/login.html_bak /home/httpd/cgi-bin/html/login.html
[ ! -f /home/httpd/cgi-bin/html/login_2.html_bak ] || /bin/cp /home/httpd/cgi-bin/html/login_2.html_bak /home/httpd/cgi-bin/html/login_2.html
fi
if [ -f /home/httpd/ajax_obj/js/qnapui.js ] && [ -f /home/httpd/cgi-bin/html/login.html ]; then
[ -f /home/httpd/ajax_obj/js/qnapui.js_bak ] || /bin/cp /home/httpd/ajax_obj/js/qnapui.js /home/httpd/ajax_obj/js/qnapui.js_bak
[ -f /home/httpd/cgi-bin/html/login.html_bak ] || /bin/cp /home/httpd/cgi-bin/html/login.html /home/httpd/cgi-bin/html/login.html_bak
[ -f /home/httpd/cgi-bin/html/login_2.html_bak ] || /bin/cp /home/httpd/cgi-bin/html/login_2.html /home/httpd/cgi-bin/html/login_2.html_bak
/bin/sed -i 's/\/nssindex.html/\/cgi-bin\/camera_view.cgi/g' /home/httpd/ajax_obj/js/qnapui.js 2>/dev/null
/bin/sed -i 's/\/nssindex.html/\/cgi-bin\/camera_view.cgi/g' /home/httpd/cgi-bin/html/login.html 2>/dev/null
/bin/sed -i 's/\/nssindex.html/\/cgi-bin\/camera_view.cgi/g' /home/httpd/cgi-bin/html/login_2.html 2>/dev/null
fi
if [ "$SUPPORT_NVR" == "yes" ]; then
/bin/mkdir /play
for i in 1 2 3 4 5 6 7 8
do
/bin/mkdir /play/ch$i
/bin/mkdir /play/ch$i/record_nvr
/bin/ln -s $NVR_ROOTFS/data/record_nvr/channel$i /play/ch$i/record_nvr/channel$i
/bin/mkdir /play/ch$i/record_nvr_unk
/bin/ln -s $NVR_ROOTFS/data/record_nvr_unk/channel$i $/play/ch$i/record_nvr_unk/channel$i
/bin/mkdir /play/ch$i/record_nvr_alarm
/bin/ln -s $NVR_ROOTFS/data/record_nvr_alarm/channel$i /play/ch$i/record_nvr_alarm/channel$i
done
#ln -s $NVR_ROOTFS/data /data
#ln -s /data /home/httpd/record
#ln -s /data /home/httpd/cgi-bin/record
if [ -e /home/httpd/cgi-bin/record ]; then
/bin/rm /home/httpd/cgi-bin/record
fi
/bin/ln -s $NVR_ROOTFS/share/$RecordingsShare /home/httpd/cgi-bin/record
if [ -e /home/httpd/record ]; then
/bin/rm /home/httpd/record
fi
/bin/ln -s $NVR_ROOTFS/share/$RecordingsShare /home/httpd/record
if [ ! -e /etc/config/nvrd.xml ]; then
/bin/cp -a /etc/default_config/nvrd.xml /etc/config/
fi
if [ ! -e /etc/config/nvrstat.xml ]; then
/bin/cp -a /etc/default_config/nvrstat.xml /etc/config/
fi
if [ ! -e /var/.nvr_quota_info ]; then
/bin/mkdir /var/.nvr_quota_info
fi
if [ -e /share/$RecordingsShare/record_nvr_tmp ]; then
/bin/rm -rf /share/$RecordingsShare/record_nvr_tmp
fi
if [ -e /share/$RecordingsShare/record_nvr_unk ]; then
/bin/rm -rf /share/$RecordingsShare/record_nvr_unk
fi
if [ -e /share/$RecordingsShare/record_nvr_pre ]; then
/bin/rm -rf /share/$RecordingsShare/record_nvr_pre
fi
/usr/bin/qcmd XMLCR
/usr/bin/qcmd umsid_info
/usr/bin/qcmd DUSG
fi
}
HIDDEN_CONF_FILE=/mnt/HDA_ROOT/.conf
NVR_HIDDEN_LOG_DIR=/mnt/HDA_ROOT/.sqdatabase
NVR_VS_LOG_ROOT_DIR=/home/sqdatabase
NVR_VS_LOG_DIR=$NVR_ROOTFS$NVR_VS_LOG_ROOT_DIR
NVR_LOG_DATABASE=nvrevent.db
NVR_ORG_LOG_DATABASE=.nvrevent.db
create_nvr_log_database()
{
# create nvr log symbolic link
if [ "$SUPPORT_NVR" == "yes" ]; then
if [ -f $HIDDEN_CONF_FILE ]; then
#check log dir
if [ ! -d $NVR_HIDDEN_LOG_DIR ]; then
echo $NVR_HIDDEN_LOG_DIR not create, create $NVR_HIDDEN_LOG_DIR... [OK]
/bin/mkdir -p $NVR_HIDDEN_LOG_DIR
fi
# create NVR_VS_LOG_DIR
if [ ! -f $NVR_HIDDEN_LOG_DIR/$NVR_LOG_DATABASE ]; then
echo sqdatabase file not found, create symboloc link $NVR_VS_LOG_DIR... [OK]
/bin/cp $NVR_VS_LOG_DIR/$NVR_ORG_LOG_DATABASE $NVR_HIDDEN_LOG_DIR/$NVR_LOG_DATABASE
/bin/rm -rf $NVR_VS_LOG_DIR
/bin/ln -sf $NVR_HIDDEN_LOG_DIR $NVR_VS_LOG_DIR
else
# NVR_VS_LOG_DIR link not exist
echo log hidden config directory exist, create symboloc link $NVR_VS_LOG_DIR... [OK]
/bin/rm -rf $NVR_VS_LOG_DIR
/bin/ln -sf $NVR_HIDDEN_LOG_DIR $NVR_VS_LOG_DIR
fi
else
/bin/mv $NVR_VS_LOG_DIR/$NVR_ORG_LOG_DATABASE $NVR_VS_LOG_DIR/$NVR_LOG_DATABASE
echo check no HD exist... [OK]
fi
if [ "$NVR_ROOTFS" != "" ]; then
if [ ! -e $NVR_VS_LOG_ROOT_DIR ]; then
/bin/rm -rf $NVR_VS_LOG_ROOT_DIR
/bin/ln -s $NVR_VS_LOG_DIR $NVR_VS_LOG_ROOT_DIR
fi
fi
fi
}
case "$1" in
init)
touch /home/httpd/cgi-bin/http_stream_start.cgi
touch /home/httpd/cgi-bin/http_stream_stop.cgi
chmod +x /home/httpd/cgi-bin/http_stream_start.cgi
chmod +x /home/httpd/cgi-bin/http_stream_stop.cgi
[ -f /usr/bin/nvrd ] && create_nvr_log_database
;;
start)
# only mount if no previous mount
APP_RUNTIME_CONF="/var/.application.conf"
NSS_Hide=`/sbin/getcfg DISABLE survielance -d 0 -f $APP_RUNTIME_CONF`
if [ "x$NSS_Hide" = "x1" ]; then
/sbin/setcfg NVR Enable FALSE
fi
if [ `/sbin/getcfg NVR Enable -u -d FALSE` = TRUE ]; then
# dont't do reentry control here!, do it in nvrd
[ -f /usr/bin/nvrd ] || init_nvrd
/usr/bin/qcmd XMLCR
/usr/bin/sysadm init
/usr/bin/sysadm start
create_nvr_log_database
echo -n "Starting nvrd services:"
/bin/kill -HUP `pidof proftpd`
/bin/touch /tmp/.nvrd_alive
/sbin/daemon_mgr.nvr evtLogd start "/usr/bin/evtLogd"
/sbin/daemon_mgr.nvr nvrd start "/usr/bin/nvrd 2>/dev/null"
/sbin/daemon_mgr.nvr qplayd start "/usr/bin/qplayd 2>/dev/null"
# start http streaming here
count=30;
while [ $count -gt 0 ]; do
${WGET} -4 -N http://127.0.0.1:`/sbin/getcfg System "Web Access Port" -d 8080`/cgi-bin/http_stream_start.cgi >& /dev/null
if [ -e /home/httpd/cgi-bin/getstream.cgi ]; then
count=0
else
/bin/sleep 1
count=$(($count-1));
fi
done
echo -n " nvrd"
echo "."
fi
/etc/init.d/refresh_nvr_crontab.sh
/etc/init.d/ftp.sh reconfig
;;
stop)
echo -n "Shutting down nvrd services:"
# stop http streaming here
count=30;
while [ $count -gt 0 ]; do
${WGET} -4 -N http://127.0.0.1:`/sbin/getcfg System "Web Access Port" -d 8080`/cgi-bin/http_stream_stop.cgi >& /dev/null
if [ -e /home/httpd/cgi-bin/getstream.cgi ]; then
/bin/sleep 1
count=$(($count-1));
else
count=0
fi
done
/sbin/daemon_mgr.nvr qplayd stop /usr/bin/qplayd
/sbin/daemon_mgr.nvr nvrd stop /usr/bin/nvrd
echo -n " nvrd"
echo "."
count=30;
while [ $count -gt 0 ] && [ "`pidof nvrd`" != "" ]; do
/bin/sleep 1
count=$(($count-1));
done
if [ $count -gt 0 ]; then
/bin/kill -9 `pidof nvrd` > /dev/null 2> /dev/null
fi
/sbin/daemon_mgr.nvr evtLogd stop /usr/bin/evtLogd
if [ "`pidof evtLogd`" != "" ]; then
/bin/kill -9 `pidof evtLogd` > /dev/null 2> /dev/null
fi
/etc/init.d/refresh_nvr_crontab.sh
/usr/bin/sysadm stop
/usr/bin/sysadm uninit
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/nvrd {start|stop|restart}"
exit 1
esac
exit 0