3 g_pslfile
=/usr
/share
/public_suffix_list.dat.gz
4 [ -f "$g_pslfile" ] || g_pslfile
="$(dirname $0)/public_suffix_list.dat.gz"
9 # modify timer settings from interval and unit to dhms format
12 # $2 Unit of time interval
15 days
) t
=$
(( $1 * 86400 ));;
16 hours
) t
=$
(( $1 * 3600 ));;
17 minutes
) t
=$
(( $1 * 60 ));;
21 local d
=$
(( $t / 86400 ))
22 local h
=$
(( $t % 86400 / 3600 ))
23 local m
=$
(( $t % 3600 / 60 ))
24 local s
=$
(( $t % 60 ))
25 if [ $d -gt 0 ]; then printf "%dd %02dh %02dm %02ds" "$d" "$h" "$m" "$s"
26 elif [ $h -gt 0 ]; then printf "%dh %02dm %02ds" "$h" "$m" "$s"
27 elif [ $m -gt 0 ]; then printf "%dm %02ds" "$m" "$s"
28 else printf "%ds" "$s"; fi
34 # using function to not confuse function calls with existing ones inside /lib/functions.sh
36 uc_uci
="$(which uci) -q" # ignore errors
41 package
() { return 0; }
46 # Type = ddns Name = global
47 if [ "$uc_cfg" = "$g_cfgfile" -a "$uc_name" = "global" ]; then
52 allow_local_ip
) $uc_uci rename
$g_cfgfile.
$uc_name.
$uc_var="upd_privateip";;
53 date_format
) $uc_uci rename
$g_cfgfile.
$uc_name.
$uc_var="ddns_dateformat";;
54 log_lines
) $uc_uci rename
$g_cfgfile.
$uc_name.
$uc_var="ddns_loglines";;
55 log_dir
) $uc_uci rename
$g_cfgfile.
$uc_name.
$uc_var="ddns_logdir";;
56 run_dir
) $uc_uci rename
$g_cfgfile.
$uc_name.
$uc_var="ddns_rundir";;
57 # leave all other options currently unchanged
62 # Type = service Name = ???
63 elif [ "$uc_cfg" = "service" ]; then
68 # fix some option service_name values
69 # and some settings for specific providers
70 service_name|upd_provider
)
72 freedns\.afraid\.org|afraid\.org
)
73 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="afraid.org-keyauth";;
75 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="bind-nsupdate";;
76 dyndns\.org|dyndns\.com
)
77 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="dyn.com";;
79 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="editdns.net";;
81 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="freedns.42.pl";;
83 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="google.com";;
85 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="loopia.se";;
87 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="no-ip.com";;
89 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="spdyn.de";;
91 $uc_uci set $g_cfgfile.
$uc_name.
$uc_var="strato.com";;
93 # all others leave unchanged
96 # rename option service_name to option upd_provider
97 # $uc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_provider"
100 # verify if lookup_host is set
101 $uc_uci get
$g_cfgfile.
$uc_name.lookup_host
>/dev
/null
2>&1 || \
102 $uc_uci set $g_cfgfile.
$uc_name.lookup_host
="$uc_val"
103 if [ -f "$g_pslfile" ]; then
104 # if service_name/upd_provider cloudflare_v1 then change domain/upd_object to new syntax
105 # there is no sort order inside uci data so we need multiple checks
106 uco_provider
=$
($uc_uci get
$g_cfgfile.
$uc_name.upd_provider
2>/dev
/null
) || \
107 uco_provider
=$
($uc_uci get
$g_cfgfile.
$uc_name.service_name
2>/dev
/null
)
110 # rename option domain to option upd_object
111 # $uc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_object"
114 # # if bind-nsupdate takeover old "dns_server" value as new "upd_nsupd_server" value
115 # uco_provider=$($uc_uci get $g_cfgfile.$uc_name.upd_provider 2>/dev/null) || \
116 # uco_provider=$($uc_uci get $g_cfgfile.$uc_name.service_name 2>/dev/null)
117 # [ "$uco_provider" = "Bind-nsupdate" -o \
118 # "$uco_provider" = "bind-nsupdate" ] && \
119 # $uc_uci set $g_cfgfile.$uc_name.upd_nsupd_server="$uc_val"
120 # # rename option dns_server to new option global_dnssvr
121 # $udc_uci rename $g_cfgfile.$uc_name.$uc_var="global_dnssvr"
124 # $udc_uci set $g_cfgfile.$uc_name.upd_url_bindnet="$uc_val"
125 # $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_url_bindnet"
128 # # proxy value must include protocoll
129 # $udc_uci set $g_cfgfile.$uc_name.$uc_var="http://$uc_val"
130 # $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_proxy"
133 # $udc_uci set $g_cfgfile.$uc_name.$uc_var="$(( 4 + ( 2 * $uc_val ) ))"
134 # $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_ipversion"
136 # TODO update_script)
138 # TODO lookup_host) -> rip_host
139 # enabled) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_enabled";;
140 # force_dnstcp) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="rip_host_dnstcp";;
141 # is_glue) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="rip_host_isglue";;
142 # ip_interface) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_iface";;
143 # ip_network) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="lip_net";;
144 # use_https) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_secure";;
145 # cacert) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_url_cacert";;
146 # username) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_username";;
147 # password) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_password";;
148 # param_opt) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_paramopt";;
149 # param_enc) $udc_uci rename $g_cfgfile.$uc_name.$uc_var="upd_paramenc";;
151 # leave all other options currently unchanged
165 uc_data
=$
($uc_uci -S -n export "$g_cfgfile")
167 # Error then create config file
168 [ $uc_ret -ne 0 ] && {
169 touch /etc
/config
/$uc_cfgfile
170 chmod 644 /etc
/config
/$uc_cfgfile
172 # No error and uc_data then execute (eval)
173 # this will call functions defined above
174 [ $uc_ret -eq 0 -a -n "$uc_data" ] && eval "$uc_data"
176 # add config ddns "global" (ignore error if exists)
177 $uc_uci set ddns.global
="$g_cfgfile"
179 # write changes to config file
180 $uc_uci commit
"$g_cfgfile"
182 unset uc_uci uc_cfg uc_name uc_var uc_val uc_ret uc_data
186 # clear LuCI indexcache
187 rm -f /tmp
/luci-indexcache
>/dev
/null
2>&1
193 [ $g_pslerr -ne 0 ] && {
194 unset g_pslfile g_pslerr g_cfgfile
198 [ -f "$g_pslfile" ] && rm -f "$g_pslfile"
199 unset g_pslfile g_pslerr g_cfgfile