@ -21,7 +21,7 @@
. /lib/functions/network.sh
# GLOBAL VARIABLES #
VERSION = "2.7.8-6 "
VERSION = "2.7.8-11 "
SECTION_ID = "" # hold config's section name
VERBOSE = 0 # default mode is log to console, but easily changed with parameter
MYPROG = $( basename $0 ) # my program call name
@ -319,16 +319,19 @@ urlencode() {
# $2 Name of Variable to store script to
# $3 Name of Variable to store service answer to
get_service_data( ) {
local __FILE __SERVICE __DATA __ANSWER __URL __SCRIPT __PIPE
[ $# -ne 3 ] && write_log 12 "Error calling 'get_service_data()' - wrong number of parameters"
__FILE = "/etc/ddns/services" # IPv4
[ $use_ipv6 -ne 0 ] && __FILE = "/etc/ddns/services_ipv6" # IPv6
# workaround with variables; pipe create subshell with no give back of variable content
mkfifo pipe_$$
__PIPE = " $ddns_rundir /pipe_ $$ "
mkfifo " $__PIPE "
# only grep without # or whitespace at linestart | remove "
# grep -v -E "(^#|^[[:space:]]*$)" $__FILE | sed -e s/\"//g > pipe_$$ &
sed '/^#/d; /^[ \t]*$/d; s/\"//g' $__FILE > pipe_$$ &
sed '/^#/d; /^[ \t]*$/d; s/\"//g' " $__FILE " > " $__PIPE " &
while read __SERVICE __DATA __ANSWER; do
if [ " $__SERVICE " = " $service_name " ] ; then
@ -339,11 +342,11 @@ get_service_data() {
eval " $1 =\" $__URL \" "
eval " $2 =\" $__SCRIPT \" "
eval " $3 =\" $__ANSWER \" "
rm pipe_$$
rm " $__PIPE "
return 0
fi
done < pipe_$$
rm pipe_$$
done < " $__PIPE "
rm " $__PIPE "
eval " $1 =\"\" " # no service match clear variables
eval " $2 =\"\" "
@ -533,17 +536,17 @@ verify_host_port() {
}
# extract IP address
if [ -n " $BIND_HOST " -o -n " $KNOT_HOST " ] ; then # use BIND host or Knot host if installed
__IPV4 = $( cat $DATFILE | awk -F "address " '/has address/ {print $2; exit}' )
__IPV6 = $( cat $DATFILE | awk -F "address " '/has IPv6/ {print $2; exit}' )
__IPV4 = " $( awk -F "address " '/has address/ {print $2; exit}' " $DATFILE " ) "
__IPV6 = " $( awk -F "address " '/has IPv6/ {print $2; exit}' " $DATFILE " ) "
elif [ -n " $DRILL " ] ; then # use drill if installed
__IPV4 = $( cat $DATFILE | awk '/^' " $lookup_host " '/ {print $5}' | grep -m 1 -o " $IPV4_REGEX " )
__IPV6 = $( cat $DATFILE | awk '/^' " $lookup_host " '/ {print $5}' | grep -m 1 -o " $IPV6_REGEX " )
__IPV4 = " $( awk '/^' " $__HOST " '/ {print $5}' " $DATFILE " | grep -m 1 -o " $IPV4_REGEX " ) "
__IPV6 = " $( awk '/^' " $__HOST " '/ {print $5}' " $DATFILE " | grep -m 1 -o " $IPV6_REGEX " ) "
elif [ -n " $HOSTIP " ] ; then # use hostip if installed
__IPV4 = $( cat $DATFILE | grep -m 1 -o " $IPV4_REGEX " )
__IPV6 = $( cat $DATFILE | grep -m 1 -o " $IPV6_REGEX " )
__IPV4 = " $( grep -m 1 -o " $IPV4_REGEX " " $DATFILE " ) "
__IPV6 = " $( grep -m 1 -o " $IPV6_REGEX " " $DATFILE " ) "
else # use BusyBox nslookup
__IPV4 = $( cat $DATFILE | sed -ne " /^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \( $IPV4_REGEX \).* $/\\1/p } " )
__IPV6 = $( cat $DATFILE | sed -ne " /^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \( $IPV6_REGEX \).* $/\\1/p } " )
__IPV4 = " $( sed -ne " /^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \( $IPV4_REGEX \).* $/\\1/p } " " $DATFILE " ) "
__IPV6 = " $( sed -ne " /^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \( $IPV6_REGEX \).* $/\\1/p } " " $DATFILE " ) "
fi
}