Browse Source

ddns-scripts: also read providers from custom directory

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>
lilik-openwrt-22.03
Florian Eckert 4 years ago
parent
commit
8d10cdda08
2 changed files with 11 additions and 6 deletions
  1. +6
    -5
      net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh
  2. +5
    -1
      net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh

+ 6
- 5
net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_functions.sh View File

@ -317,17 +317,18 @@ urlencode() {
} }
# extract url or script for given DDNS Provider from # extract url or script for given DDNS Provider from
# directory /usr/share/ddns/default
# $1 Name of the provider # $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() { get_service_data() {
local provider="$1" local provider="$1"
shift shift
local dir="$1"
shift
. /usr/share/libubox/jshn.sh . /usr/share/libubox/jshn.sh
local dir="/usr/share/ddns/default"
local name data url answer script local name data url answer script
[ $# -ne 3 ] && write_log 12 "Error calling 'get_service_data()' - wrong number of parameters" [ $# -ne 3 ] && write_log 12 "Error calling 'get_service_data()' - wrong number of parameters"


+ 5
- 1
net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh View File

@ -233,7 +233,11 @@ esac
# otherwise update_url is set inside configuration (custom update url) # otherwise update_url is set inside configuration (custom update url)
# or update_script is set inside configuration (custom update script) # or update_script is set inside configuration (custom update script)
[ -n "$service_name" ] && { [ -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!" [ -z "$update_url" -a -z "$update_script" ] && write_log 14 "No update_url found/defined or no update_script found/defined!"


Loading…
Cancel
Save