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