ddns-scripts: also read providers from custom directory
authorFlorian Eckert <fe@dev.tdt.de>
Mon, 28 Sep 2020 13:12:03 +0000 (15:12 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Mon, 28 Sep 2020 13:28:27 +0000 (15:28 +0200)
The provider could also be read from the custom directory. To get always
the latest version of the provider config json file, we read first the custom
directory and after that we also check the default directory, if we could not
find the provider file

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh
net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh

index d59fed4408260960be4a28ec76b2c8e28ab3ecaf..a5698d7f29da38eb72f4065a5bd7c7590ccb9f91 100644 (file)
@@ -317,17 +317,18 @@ urlencode() {
 }
 
 # extract url or script for given DDNS Provider from
-# directory /usr/share/ddns/default
 # $1   Name of the provider
-# $1   Name of Variable to store url to
-# $2   Name of Variable to store script to
-# $3   Name of Variable to store service answer to
+# $2   Provider directory
+# $3   Name of Variable to store url to
+# $4   Name of Variable to store script to
+# $5   Name of Variable to store service answer to
 get_service_data() {
        local provider="$1"
        shift
+       local dir="$1"
+       shift
 
        . /usr/share/libubox/jshn.sh
-       local dir="/usr/share/ddns/default"
        local name data url answer script
 
        [ $# -ne 3 ] && write_log 12 "Error calling 'get_service_data()' - wrong number of parameters"
index 9e75552d9995f3b0b66459bfdddbcf8101b0bde2..41bc6f82568c5359a5b3696a1fa13219dd73a05f 100644 (file)
@@ -233,7 +233,11 @@ esac
 # otherwise update_url is set inside configuration (custom update url)
 # or update_script is set inside configuration (custom update script)
 [ -n "$service_name" ] && {
-       get_service_data "$service_name" update_url update_script UPD_ANSWER
+       # Check first if we have a custom service provider with this name
+       get_service_data "$service_name" "/usr/share/ddns/custom" update_url update_script UPD_ANSWER
+       if [ "$?" != "0" ]; then
+               get_service_data "$service_name" "/usr/share/ddns/default" update_url update_script UPD_ANSWER
+       fi
 }
 
 [ -z "$update_url" -a -z "$update_script" ] && write_log 14 "No update_url found/defined or no update_script found/defined!"