[packages] ddns-scripts: Introduce retry_interval option to periodically retry DDNS update, if it fails (#10848)

git-svn-id: svn://svn.openwrt.org/openwrt/packages@29977 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
acinonyx 2012-01-31 20:00:02 +00:00
parent b4d8e64581
commit 8c51b40c1e
2 changed files with 45 additions and 8 deletions

View File

@ -48,14 +48,16 @@
# it) and how often we need to force an update ( many services
# will expire your domain if you don't connect and do an update
# every so often). Use the "check_interval" to specify how
# often to check whether an update is necessary, and the
# "force_interval" option to specify how often to force an
# update. Specify the units for these values with the "check_unit"
# and the "force_unit" options. Units can be "days", "hours",
# "minutes" or "seconds". The default force_unit is hours and the
# default check_unit is seconds. The default check_interval is
# 600 seconds, or ten minutes. The default force_interval is
# 72 hours or 3 days.
# often to check whether an update is necessary, the "retry_interval"
# to specify how often to retry in case the update has failed, and
# the "force_interval" option to specify how often to force an
# update. Specify the units for these values with the "check_unit",
# the "retry_init" and the "force_unit" options. Units can be
# "days", "hours", "minutes" or "seconds". The default force_unit
# is hours, the default retry_unit is seconds and the default
# check_unit is seconds. The default check_interval is 600 seconds,
# or ten minutes. The default retry_interval is 60 seconds, or one
# minute. The default force_interval is 72 hours or 3 days.
#
#
#########################################################
@ -77,6 +79,8 @@ config service "myddns"
option force_unit "hours"
option check_interval "10"
option check_unit "minutes"
option retry_interval "60"
option retry_unit "seconds"
#option ip_source "interface"
#option ip_interface "eth0.1"

View File

@ -68,6 +68,11 @@ then
check_interval=600
fi
if [ -z "$retry_interval" ]
then
retry_interval=60
fi
if [ -z "$check_unit" ]
then
check_unit="seconds"
@ -203,6 +208,28 @@ esac
#compute retry interval in seconds
case "$retry_unit" in
"days" )
retry_interval_seconds=$(($retry_interval*60*60*24))
;;
"hours" )
retry_interval_seconds=$(($retry_interval*60*60))
;;
"minutes" )
retry_interval_seconds=$(($retry_interval*60))
;;
"seconds" )
retry_interval_seconds=$retry_interval
;;
* )
#default is seconds
retry_interval_seconds=$retry_interval
;;
esac
verbose_echo "force seconds = $force_interval_seconds"
verbose_echo "check seconds = $check_interval_seconds"
@ -289,6 +316,12 @@ do
#here we actually connect, and perform the update
update_output=$( $retrieve_prog "$final_url" )
if [ $? -gt 0 ]
then
verbose_echo "update failed"
sleep $retry_interval_seconds
continue
fi
verbose_echo "Update Output:"
verbose_echo "$update_output"