From 5731d0e52d924f90258adb8d44843bd9f85bd025 Mon Sep 17 00:00:00 2001 From: Christian Schoenebeck Date: Tue, 10 Feb 2015 22:06:02 +0100 Subject: [PATCH] ddns-scripts: update to version 2.3.0-1 new option "use_curl" to force the use of curl if GNU Wget and curl are installed fix initscript reload(): reload and not restart if killall -1 fails BusyBox nc not support -v in every compiled version Signed-off-by: Christian Schoenebeck --- net/ddns-scripts/Makefile | 6 +-- net/ddns-scripts/files/ddns.init | 1 + .../files/dynamic_dns_functions.sh | 37 ++++++++++++------- net/ddns-scripts/files/dynamic_dns_updater.sh | 2 +- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/net/ddns-scripts/Makefile b/net/ddns-scripts/Makefile index d0d9fad7f..7c834c2ab 100644 --- a/net/ddns-scripts/Makefile +++ b/net/ddns-scripts/Makefile @@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-scripts # Version == major.minor.patch # increase on new functionality (minor) or patches (patch) -PKG_VERSION:=2.2.0 +PKG_VERSION:=2.3.0 # Release == build # increase on changes of services files or tld_names.dat PKG_RELEASE:=1 @@ -51,7 +51,7 @@ endef define Package/$(PKG_NAME)_CloudFlare $(call Package/$(PKG_NAME)/Default) TITLE:=DDNS extension for CloudFlare - DEPENDS:=+$(PKG_NAME) + DEPENDS:=$(PKG_NAME) endef define Package/$(PKG_NAME)_CloudFlare/description Dynamic DNS Client scripts extension for CloudFlare @@ -60,7 +60,7 @@ endef define Package/$(PKG_NAME)_No-IP_com $(call Package/$(PKG_NAME)/Default) TITLE:=DDNS extension for No-IP.com - DEPENDS:=+$(PKG_NAME) + DEPENDS:=$(PKG_NAME) endef define Package/$(PKG_NAME)_No-IP_com/description Dynamic DNS Client scripts extension for No-IP.com diff --git a/net/ddns-scripts/files/ddns.init b/net/ddns-scripts/files/ddns.init index 361862116..84abfd5e5 100644 --- a/net/ddns-scripts/files/ddns.init +++ b/net/ddns-scripts/files/ddns.init @@ -8,6 +8,7 @@ boot() { reload() { killall -1 dynamic_dns_updater.sh 2>/dev/null # send SIGHUP + return 0 } restart() { diff --git a/net/ddns-scripts/files/dynamic_dns_functions.sh b/net/ddns-scripts/files/dynamic_dns_functions.sh index 2df699ac6..9bd2f818b 100644 --- a/net/ddns-scripts/files/dynamic_dns_functions.sh +++ b/net/ddns-scripts/files/dynamic_dns_functions.sh @@ -32,14 +32,6 @@ SECTION_ID="" # hold config's section name VERBOSE_MODE=1 # default mode is log to console, but easily changed with parameter - # allow NON-public IP's -ALLOW_LOCAL_IP=$(uci -q get ddns.global.allow_local_ip) || ALLOW_LOCAL_IP=0 - # directory to store run information to. -RUNDIR=$(uci -q get ddns.global.run_dir) || RUNDIR="/var/run/ddns" -[ -d $RUNDIR ] || mkdir -p -m755 $RUNDIR - # directory to store log files -LOGDIR=$(uci -q get ddns.global.log_dir) || LOGDIR="/var/log/ddns" -[ -d $LOGDIR ] || mkdir -p -m755 $LOGDIR LOGFILE="" # logfile - all files are set in dynamic_dns_updater.sh PIDFILE="" # pid file UPDFILE="" # store UPTIME of last update @@ -47,10 +39,6 @@ DATFILE="" # save stdout data of WGet and other external programs called ERRFILE="" # save stderr output of WGet and other external programs called TLDFILE=/usr/lib/ddns/tld_names.dat # TLD file used by split_FQDN - # number of lines to before rotate logfile -LOGLINES=$(uci -q get ddns.global.log_lines) || LOGLINES=250 -LOGLINES=$((LOGLINES + 1)) # correct sed handling - CHECK_SECONDS=0 # calculated seconds out of given FORCE_SECONDS=0 # interval and unit RETRY_SECONDS=0 # in configuration @@ -71,6 +59,21 @@ ERR_UPDATE=0 # error counter on different local and registered ip PID_SLEEP=0 # ProcessID of current background "sleep" +# allow NON-public IP's +ALLOW_LOCAL_IP=$(uci -q get ddns.global.allow_local_ip) || ALLOW_LOCAL_IP=0 + +# directory to store run information to. +RUNDIR=$(uci -q get ddns.global.run_dir) || RUNDIR="/var/run/ddns" +[ -d $RUNDIR ] || mkdir -p -m755 $RUNDIR + +# directory to store log files +LOGDIR=$(uci -q get ddns.global.log_dir) || LOGDIR="/var/log/ddns" +[ -d $LOGDIR ] || mkdir -p -m755 $LOGDIR + +# number of lines to before rotate logfile +LOGLINES=$(uci -q get ddns.global.log_lines) || LOGLINES=250 +LOGLINES=$((LOGLINES + 1)) # correct sed handling + # format to show date information in log and luci-app-ddns default ISO 8601 format DATE_FORMAT=$(uci -q get ddns.global.date_format) || DATE_FORMAT="%F %R" DATE_PROG="date +'$DATE_FORMAT'" @@ -84,6 +87,11 @@ IPV6_REGEX="\(\([0-9A-Fa-f]\{1,4\}:\)\{1,\}\)\(\([0-9A-Fa-f]\{1,4\}\)\{0,1\}\)\( # detect if called by dynamic_dns_lucihelper.sh script, disable retrys (empty variable == false) [ "$(basename $0)" = "dynamic_dns_lucihelper.sh" ] && LUCI_HELPER="TRUE" || LUCI_HELPER="" +# USE_CURL if GNU Wget and cURL installed normally Wget is used by do_transfer() +# to change this use global option use_curl '1' +USE_CURL=$(uci -q get ddns.global.use_curl) || USE_CURL=0 # read config +[ -x /usr/bin/curl ] || USE_CURL=0 # check for cURL + # loads all options for a given package and section # also, sets all_option_variables to a list of the variable names # $1 = ddns, $2 = SECTION_ID @@ -510,7 +518,7 @@ verify_host_port() { [ $force_ipversion -ne 0 -a $use_ipv6 -ne 0 -o -z "$__IPV4" ] && __IP=$__IPV6 || __IP=$__IPV4 if [ -n "$__NCEXT" ]; then # BusyBox nc compiled with extensions (timeout support) - __RUNPROG="/usr/bin/nc -vw 1 $__IP $__PORT $DATFILE 2>$ERRFILE" + __RUNPROG="/usr/bin/nc -w 1 $__IP $__PORT $DATFILE 2>$ERRFILE" write_log 7 "#> $__RUNPROG" eval $__RUNPROG __ERR=$? @@ -633,7 +641,8 @@ do_transfer() { [ $# -ne 1 ] && write_log 12 "Error in 'do_transfer()' - wrong number of parameters" # lets prefer GNU Wget because it does all for us - IPv4/IPv6/HTTPS/PROXY/force IP version - if /usr/bin/wget --version 2>&1 | grep "\+ssl" >/dev/null 2>&1 ; then + grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 # check for Wget with SSL support + if [ $? -eq 0 -a $USE_CURL -eq 0 ]; then # except global option use_curl is set to "1" __PROG="/usr/bin/wget -nv -t 1 -O $DATFILE -o $ERRFILE" # non_verbose no_retry outfile errfile # force network/ip to use for communication if [ -n "$bind_network" ]; then diff --git a/net/ddns-scripts/files/dynamic_dns_updater.sh b/net/ddns-scripts/files/dynamic_dns_updater.sh index d4941a133..a0143a73c 100644 --- a/net/ddns-scripts/files/dynamic_dns_updater.sh +++ b/net/ddns-scripts/files/dynamic_dns_updater.sh @@ -201,7 +201,7 @@ write_log 7 "retry counter : $retry_count times" # kill old process if it exists & set new pid file stop_section_processes "$SECTION_ID" -[ $? -gt 0 ] && write_log 7 "Send 'SIGTERM' was send to old process" || write_log 7 "No old process" +[ $? -gt 0 ] && write_log 7 "'SIGTERM' was send to old process" || write_log 7 "No old process" echo $$ > $PIDFILE # determine when the last update was