|
@@ -32,14 +32,6 @@
|
32
|
32
|
SECTION_ID="" # hold config's section name
|
33
|
33
|
VERBOSE_MODE=1 # default mode is log to console, but easily changed with parameter
|
34
|
34
|
|
35
|
|
- # allow NON-public IP's
|
36
|
|
-ALLOW_LOCAL_IP=$(uci -q get ddns.global.allow_local_ip) || ALLOW_LOCAL_IP=0
|
37
|
|
- # directory to store run information to.
|
38
|
|
-RUNDIR=$(uci -q get ddns.global.run_dir) || RUNDIR="/var/run/ddns"
|
39
|
|
-[ -d $RUNDIR ] || mkdir -p -m755 $RUNDIR
|
40
|
|
- # directory to store log files
|
41
|
|
-LOGDIR=$(uci -q get ddns.global.log_dir) || LOGDIR="/var/log/ddns"
|
42
|
|
-[ -d $LOGDIR ] || mkdir -p -m755 $LOGDIR
|
43
|
35
|
LOGFILE="" # logfile - all files are set in dynamic_dns_updater.sh
|
44
|
36
|
PIDFILE="" # pid file
|
45
|
37
|
UPDFILE="" # store UPTIME of last update
|
|
@@ -47,10 +39,6 @@ DATFILE="" # save stdout data of WGet and other external programs called
|
47
|
39
|
ERRFILE="" # save stderr output of WGet and other external programs called
|
48
|
40
|
TLDFILE=/usr/lib/ddns/tld_names.dat # TLD file used by split_FQDN
|
49
|
41
|
|
50
|
|
- # number of lines to before rotate logfile
|
51
|
|
-LOGLINES=$(uci -q get ddns.global.log_lines) || LOGLINES=250
|
52
|
|
-LOGLINES=$((LOGLINES + 1)) # correct sed handling
|
53
|
|
-
|
54
|
42
|
CHECK_SECONDS=0 # calculated seconds out of given
|
55
|
43
|
FORCE_SECONDS=0 # interval and unit
|
56
|
44
|
RETRY_SECONDS=0 # in configuration
|
|
@@ -71,6 +59,21 @@ ERR_UPDATE=0 # error counter on different local and registered ip
|
71
|
59
|
|
72
|
60
|
PID_SLEEP=0 # ProcessID of current background "sleep"
|
73
|
61
|
|
|
62
|
+# allow NON-public IP's
|
|
63
|
+ALLOW_LOCAL_IP=$(uci -q get ddns.global.allow_local_ip) || ALLOW_LOCAL_IP=0
|
|
64
|
+
|
|
65
|
+# directory to store run information to.
|
|
66
|
+RUNDIR=$(uci -q get ddns.global.run_dir) || RUNDIR="/var/run/ddns"
|
|
67
|
+[ -d $RUNDIR ] || mkdir -p -m755 $RUNDIR
|
|
68
|
+
|
|
69
|
+# directory to store log files
|
|
70
|
+LOGDIR=$(uci -q get ddns.global.log_dir) || LOGDIR="/var/log/ddns"
|
|
71
|
+[ -d $LOGDIR ] || mkdir -p -m755 $LOGDIR
|
|
72
|
+
|
|
73
|
+# number of lines to before rotate logfile
|
|
74
|
+LOGLINES=$(uci -q get ddns.global.log_lines) || LOGLINES=250
|
|
75
|
+LOGLINES=$((LOGLINES + 1)) # correct sed handling
|
|
76
|
+
|
74
|
77
|
# format to show date information in log and luci-app-ddns default ISO 8601 format
|
75
|
78
|
DATE_FORMAT=$(uci -q get ddns.global.date_format) || DATE_FORMAT="%F %R"
|
76
|
79
|
DATE_PROG="date +'$DATE_FORMAT'"
|
|
@@ -84,6 +87,11 @@ IPV6_REGEX="\(\([0-9A-Fa-f]\{1,4\}:\)\{1,\}\)\(\([0-9A-Fa-f]\{1,4\}\)\{0,1\}\)\(
|
84
|
87
|
# detect if called by dynamic_dns_lucihelper.sh script, disable retrys (empty variable == false)
|
85
|
88
|
[ "$(basename $0)" = "dynamic_dns_lucihelper.sh" ] && LUCI_HELPER="TRUE" || LUCI_HELPER=""
|
86
|
89
|
|
|
90
|
+# USE_CURL if GNU Wget and cURL installed normally Wget is used by do_transfer()
|
|
91
|
+# to change this use global option use_curl '1'
|
|
92
|
+USE_CURL=$(uci -q get ddns.global.use_curl) || USE_CURL=0 # read config
|
|
93
|
+[ -x /usr/bin/curl ] || USE_CURL=0 # check for cURL
|
|
94
|
+
|
87
|
95
|
# loads all options for a given package and section
|
88
|
96
|
# also, sets all_option_variables to a list of the variable names
|
89
|
97
|
# $1 = ddns, $2 = SECTION_ID
|
|
@@ -510,7 +518,7 @@ verify_host_port() {
|
510
|
518
|
[ $force_ipversion -ne 0 -a $use_ipv6 -ne 0 -o -z "$__IPV4" ] && __IP=$__IPV6 || __IP=$__IPV4
|
511
|
519
|
|
512
|
520
|
if [ -n "$__NCEXT" ]; then # BusyBox nc compiled with extensions (timeout support)
|
513
|
|
- __RUNPROG="/usr/bin/nc -vw 1 $__IP $__PORT </dev/null >$DATFILE 2>$ERRFILE"
|
|
521
|
+ __RUNPROG="/usr/bin/nc -w 1 $__IP $__PORT </dev/null >$DATFILE 2>$ERRFILE"
|
514
|
522
|
write_log 7 "#> $__RUNPROG"
|
515
|
523
|
eval $__RUNPROG
|
516
|
524
|
__ERR=$?
|
|
@@ -633,7 +641,8 @@ do_transfer() {
|
633
|
641
|
[ $# -ne 1 ] && write_log 12 "Error in 'do_transfer()' - wrong number of parameters"
|
634
|
642
|
|
635
|
643
|
# lets prefer GNU Wget because it does all for us - IPv4/IPv6/HTTPS/PROXY/force IP version
|
636
|
|
- if /usr/bin/wget --version 2>&1 | grep "\+ssl" >/dev/null 2>&1 ; then
|
|
644
|
+ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 # check for Wget with SSL support
|
|
645
|
+ if [ $? -eq 0 -a $USE_CURL -eq 0 ]; then # except global option use_curl is set to "1"
|
637
|
646
|
__PROG="/usr/bin/wget -nv -t 1 -O $DATFILE -o $ERRFILE" # non_verbose no_retry outfile errfile
|
638
|
647
|
# force network/ip to use for communication
|
639
|
648
|
if [ -n "$bind_network" ]; then
|