You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

99 lines
2.8 KiB

#!/bin/sh
# using function to not confuse function calls with existing ones inside /lib/functions.sh
update_ddns_config() {
udc_uci="$(which uci) -q" # ignore errors
udc_pkg="ddns"
udc_cfg=""
udc_name=""
udc_var=""
udc_val=""
package() { return 0; }
config () {
udc_cfg="$1"
udc_name="$2"
# Type = ddns Name = global
if [ "$udc_cfg" = "$udc_pkg" -a "$udc_name" = "global" ]; then
option() { return 0; }
# rename options
$udc_uci rename $udc_pkg.$udc_name.allow_local_ip="upd_privateip"
$udc_uci rename $udc_pkg.$udc_name.date_format="ddns_dateformat"
$udc_uci rename $udc_pkg.$udc_name.log_dir="ddns_logdir"
$udc_uci rename $udc_pkg.$udc_name.log_lines="ddns_loglines"
$udc_uci rename $udc_pkg.$udc_name.run_dir="ddns_rundir"
# Type = service Name = ???
elif [ "$udc_cfg" = "service" ]; then
option() {
udc_var="$1"; shift
udc_val="$*"
# fix some option service_name values
case "$udc_var" in
service_name)
case "$udc_val" in
freedns\.afraid\.org|afraid\.org)
$udc_uci set $udc_pkg.$udc_name.$udc_var="afraid.org-keyauth";;
Bind-nsupdate)
$udc_uci set $udc_pkg.$udc_name.$udc_var="bind-nsupdate";;
CloudFlare|cloudflare\.com)
$udc_uci set $udc_pkg.$udc_name.$udc_var="cloudflare.com-v1";;
dyndns\.org|dyndns\.com)
$udc_uci set $udc_pkg.$udc_name.$udc_var="dyn.com";;
free\.editdns\.net)
$udc_uci set $udc_pkg.$udc_name.$udc_var="editdns.net";;
domains\.google\.com)
$udc_uci set $udc_pkg.$udc_name.$udc_var="google.com";;
loopia\.com)
$udc_uci set $udc_pkg.$udc_name.$udc_var="loopia.se";;
NoIP\.com|No-IP\.com)
$udc_uci set $udc_pkg.$udc_name.$udc_var="no-ip.com";;
spdns\.de)
$udc_uci set $udc_pkg.$udc_name.$udc_var="spdyn.de";;
strato\.de)
$udc_uci set $udc_pkg.$udc_name.$udc_var="strato.com";;
*)
# all others leave unchanged
;;
esac
# rename option service_name to option upd_provider
# $udc_uci rename $udc_pkg.$udc_name.$udc_var="upd_provider"
;;
*)
# leave all other options currently unchanged
;;
esac
return 0
}
return 0
# ignore unknown
else
return 0
fi
}
# read package config file
udc_data=$($udc_uci -S -n export "$udc_pkg")
udc_ret="$?"
# No error and udc_data then execute (eval)
# this will call functions defined above
[ "$udc_ret" -eq 0 -a -n "$udc_data" ] && eval "$udc_data"
# add config ddns "global" (ignore error if exists)
$udc_uci set ddns.global="$udc_pkg"
# write changes to config file
$udc_uci commit "$udc_pkg"
unset udc_uci udc_pkg udc_cfg udc_name udc_var udc_val udc_ret udc_data
return 0
}
# do existing config update
update_ddns_config
# clear Ludc_uci indexcache
rm -f /tmp/luci-indexcache >/dev/null 2>&1
return 0