#!/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
|