ddns-scripts: Respect config option 'ip_source' 6889/head
authorJacek Politowski <dev@jpol.net.pl>
Mon, 27 Aug 2018 17:47:41 +0000 (19:47 +0200)
committerJacek Politowski <dev@jpol.net.pl>
Mon, 27 Aug 2018 17:47:41 +0000 (19:47 +0200)
Option 'ip_source' was silently ignored during public IP discovery.

Discovery (in spite of chosen 'ip_source') was based only on
'ip_network', 'ip_interface', 'ip_script' or 'ip_url' options (in this
order) if they were set. This could lead to misleading log entries
"Detect local IP on '$ip_source'" pointing to source that wasn't really
used.

Now only option relevant to configured 'ip_source' is taken into
account.

Signed-off-by: Jacek Politowski <dev@jpol.net.pl>
net/ddns-scripts/Makefile
net/ddns-scripts/files/dynamic_dns_functions.sh

index 2cd899e9933818bc33dc82a03b5ef777418e61ad..d72cab2607dc025241f45c3b9bcaa377ffdce82c 100755 (executable)
@@ -12,7 +12,7 @@ PKG_NAME:=ddns-scripts
 PKG_VERSION:=2.7.8
 # Release == build
 # increase on changes of services files or tld_names.dat
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=
index 28d048b72781cdbe6b923ca9be9d1736762f4606..31b6f1974e92c292d7ff05490cdc781875be5c48 100755 (executable)
@@ -21,7 +21,7 @@
 . /lib/functions/network.sh
 
 # GLOBAL VARIABLES #
-VERSION="2.7.8-3"
+VERSION="2.7.8-4"
 SECTION_ID=""          # hold config's section name
 VERBOSE=0              # default mode is log to console, but easily changed with parameter
 MYPROG=$(basename $0)  # my program call name
@@ -928,7 +928,7 @@ get_local_ip () {
        write_log 7 "Detect local IP on '$ip_source'"
 
        while : ; do
-               if [ -n "$ip_network" ]; then
+               if [ -n "$ip_network" -a "$ip_source" = "network" ]; then
                        # set correct program
                        network_flush_cache     # force re-read data from ubus
                        [ $use_ipv6 -eq 0 ] && __RUNPROG="network_get_ipaddr" \
@@ -936,7 +936,7 @@ get_local_ip () {
                        eval "$__RUNPROG __DATA $ip_network" || \
                                write_log 13 "Can not detect local IP using $__RUNPROG '$ip_network' - Error: '$?'"
                        [ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected on network '$ip_network'"
-               elif [ -n "$ip_interface" ]; then
+               elif [ -n "$ip_interface" -a "$ip_source" = "interface" ]; then
                        local __DATA4=""; local __DATA6=""
                        if [ -n "$(which ip)" ]; then           # ip program installed
                                write_log 7 "#> ip -o addr show dev $ip_interface scope global >$DATFILE 2>$ERRFILE"
@@ -1015,7 +1015,7 @@ get_local_ip () {
                        fi
                        [ $use_ipv6 -eq 0 ] && __DATA="$__DATA4" || __DATA="$__DATA6"
                        [ -n "$__DATA" ] && write_log 7 "Local IP '$__DATA' detected on interface '$ip_interface'"
-               elif [ -n "$ip_script" ]; then
+               elif [ -n "$ip_script" -a "$ip_source" = "script" ]; then
                        write_log 7 "#> $ip_script >$DATFILE 2>$ERRFILE"
                        eval $ip_script >$DATFILE 2>$ERRFILE
                        __ERR=$?
@@ -1026,7 +1026,7 @@ get_local_ip () {
                                write_log 3 "$ip_script Error: '$__ERR'"
                                write_log 7 "$(cat $ERRFILE)"           # report error
                        fi
-               elif [ -n "$ip_url" ]; then
+               elif [ -n "$ip_url" -a "$ip_source" = "web" ]; then
                        do_transfer "$ip_url"
                        # use correct regular expression
                        [ $use_ipv6 -eq 0 ] \