mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +00:00
use start-stop-daemon to avoid hanging web page if ez-ipupdate tool is blocking
This commit is contained in:
parent
4ca76b9c76
commit
411abfe954
@ -26,6 +26,7 @@ STATUSFILE="${CFGDIR}${TOOLNAME}.status"
|
|||||||
LASTUPDATE="${CFGDIR}/last-update"
|
LASTUPDATE="${CFGDIR}/last-update"
|
||||||
HELPERCFG="${CFGDIR}${TOOLNAME}-plinth.cfg"
|
HELPERCFG="${CFGDIR}${TOOLNAME}-plinth.cfg"
|
||||||
CRONJOB="/etc/cron.d/${TOOLNAME}"
|
CRONJOB="/etc/cron.d/${TOOLNAME}"
|
||||||
|
PIDFILE="/var/run/ez-ipupdate.pid"
|
||||||
|
|
||||||
doReadCFG()
|
doReadCFG()
|
||||||
{
|
{
|
||||||
@ -104,7 +105,6 @@ doWriteCFG()
|
|||||||
echo "user=${user}:${pass}" >> $FILE
|
echo "user=${user}:${pass}" >> $FILE
|
||||||
echo "service-type=gnudip" >> $FILE
|
echo "service-type=gnudip" >> $FILE
|
||||||
echo "retrys=5" >> $FILE
|
echo "retrys=5" >> $FILE
|
||||||
echo "execute=$0 success" >> $FILE
|
|
||||||
echo "wildcard" >> $FILE
|
echo "wildcard" >> $FILE
|
||||||
|
|
||||||
#check if we are behind a NAT Router
|
#check if we are behind a NAT Router
|
||||||
@ -124,6 +124,7 @@ doWriteCFG()
|
|||||||
echo "interface=$DEFAULT" >> $FILE
|
echo "interface=$DEFAULT" >> $FILE
|
||||||
#if this line is added to config file, ez-ipupdate will be launched on startup via init.d
|
#if this line is added to config file, ez-ipupdate will be launched on startup via init.d
|
||||||
echo "daemon" >> $FILE
|
echo "daemon" >> $FILE
|
||||||
|
echo "execute=$0 success" >> $FILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -166,42 +167,45 @@ case $cmd in
|
|||||||
doReadCFG
|
doReadCFG
|
||||||
OLDIP=`cat $IPFILE`
|
OLDIP=`cat $IPFILE`
|
||||||
doGetWANIP
|
doGetWANIP
|
||||||
|
echo $WANIP > $IPFILE
|
||||||
[ -f $CFG_disabled ] && FILE=$CFG_disabled
|
[ -f $CFG_disabled ] && FILE=$CFG_disabled
|
||||||
[ -f $CFG ] && FILE=$CFG
|
[ -f $CFG ] && FILE=$CFG
|
||||||
RESULT=0
|
cat $FILE |grep -v execute > ${FILE}.tmp
|
||||||
|
mv ${FILE}.tmp ${FILE}
|
||||||
|
echo "execute=$0 success ${WANIP}" >> $FILE
|
||||||
#if we know our WAN IP, only update if IP changes
|
#if we know our WAN IP, only update if IP changes
|
||||||
if [ "$OLDIP" != "$WANIP" -a "${WANIP}" != ${NOIP} ];then
|
if [ "${OLDIP}" != "${WANIP}" -a "${WANIP}" != ${NOIP} ];then
|
||||||
${UPDATE_TOOL} -c $FILE
|
start-stop-daemon -S -x ${UPDATE_TOOL} -m -p ${PIDFILE} -- -c $FILE
|
||||||
RESULT=$?
|
|
||||||
[ $RESULT -eq 0 ] && $0 success $WANIP
|
|
||||||
cat /proc/uptime |awk '{print $1}' |cut -d . -f 1 > $LASTUPDATE
|
|
||||||
fi
|
fi
|
||||||
#if we don't know our WAN IP do a blind update once a hour
|
#if we don't know our WAN IP do a blind update once a hour
|
||||||
if [ "${WANIP}" = ${NOIP} ];then
|
if [ "${WANIP}" = ${NOIP} ];then
|
||||||
UPTIME=`cat /proc/uptime |cut -d . -f 1`
|
UPTIME=`cat /proc/uptime |cut -d . -f 1`
|
||||||
LAST=0
|
LAST=0
|
||||||
[ -f $LASTUPDATE ] && LAST=`cat $LASTUPDATE`
|
[ -f ${LASTUPDATE} ] && LAST=`cat $LASTUPDATE`
|
||||||
DIFF=`expr $UPTIME - $LAST`
|
DIFF=`expr $UPTIME - $LAST`
|
||||||
if [ $DIFF -gt $UPDATEMINUTESUNKNOWN ];then
|
if [ $DIFF -gt $UPDATEMINUTESUNKNOWN ];then
|
||||||
${UPDATE_TOOL} -c $FILE
|
start-stop-daemon -S -x ${UPDATE_TOOL} -m -p ${PIDFILE} -- -c $FILE
|
||||||
RESULT=$?
|
|
||||||
[ $RESULT -eq 0 ] && $0 success $WANIP
|
|
||||||
cat /proc/uptime |awk '{print $1}' |cut -d . -f 1> $LASTUPDATE
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ $RESULT -ne 0 ];then
|
|
||||||
$0 failed
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
rm $CRONJOB 2> /dev/null
|
rm $CRONJOB 2> /dev/null
|
||||||
/etc/init.d/${TOOLNAME} stop
|
/etc/init.d/${TOOLNAME} stop
|
||||||
|
kill $(cat ${PIDFILE}) 2> /dev/null
|
||||||
mv $CFG $CFG_disabled
|
mv $CFG $CFG_disabled
|
||||||
;;
|
;;
|
||||||
success)
|
success)
|
||||||
DATE=`date`
|
DATE=`date`
|
||||||
echo "last update done ($DATE)" > $STATUSFILE
|
echo "last update done ($DATE)" > $STATUSFILE
|
||||||
echo $1 > $IPFILE
|
cat /proc/uptime |awk '{print $1}' |cut -d . -f 1 > $LASTUPDATE
|
||||||
|
#if called from cronjob, the current IP is given as parameter
|
||||||
|
if [ $# -eq 1 ];then
|
||||||
|
echo $1 > $IPFILE
|
||||||
|
else
|
||||||
|
#if called from ez-ipupdate daemon, no WAN IP is given as parameter
|
||||||
|
doGetWANIP
|
||||||
|
echo $WANIP > $IPFILE
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
failed)
|
failed)
|
||||||
DATE=`date`
|
DATE=`date`
|
||||||
@ -211,7 +215,7 @@ case $cmd in
|
|||||||
if [ -f $STATUSFILE ];then
|
if [ -f $STATUSFILE ];then
|
||||||
cat $STATUSFILE
|
cat $STATUSFILE
|
||||||
else
|
else
|
||||||
echo "no update recorded since last config change"
|
echo "no successful update recorded since last config change"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user