2 # /usr/lib/ddns/luci_dns_helper.sh
4 # Written in August 2014
5 # by Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
6 # This script is used by luci-app-ddns
7 # - getting registered IP
8 # - check if possible to get local IP
9 # - verifing given DNS- or Proxy-Server
11 # variables in small chars are read from /etc/config/ddns as parameter given here
12 # variables in big chars are defined inside these scripts as gloval vars
13 # variables in big chars beginning with "__" are local defined inside functions only
14 # set -vx #script debugger
16 [ $# -lt 2 ] && exit 1
18 . /usr/lib/ddns/dynamic_dns_functions.sh # global vars are also defined here
20 # set -vx #script debugger
22 # preset some variables, wrong or not set in dynamic_dns_functions.sh
23 SECTION_ID="lucihelper"
24 LOGFILE="$LOGDIR/$SECTION_ID.log"
25 VERBOSE_MODE=0 # no console logging
26 # global variables normally set by reading DDNS UCI configuration
27 use_syslog=0 # no syslog
28 use_logfile=0 # by default no logfile, can be changed here
33 domain=$2 # Hostname/Domain
34 use_ipv6=${3:-"0"} # Use IPv6 - default IPv4
35 force_ipversion=${4:-"0"} # Force IP Version - default 0 - No
36 force_dnstcp=${5:-"0"} # Force TCP on DNS - default 0 - No
37 dns_server=${6:-""} # DNS server - default No DNS
38 write_log 7 "-----> get_registered_ip IP"
41 echo -n "$IP" # suppress LF
44 # $2 : dns-server to verify # no need for force_dnstcp because
45 # verify with nc (netcat) uses tcp anyway
46 use_ipv6=${3:-"0"} # Use IPv6 - default IPv4
47 force_ipversion=${4:-"0"} # Force IP Version - default 0 - No
48 write_log 7 "-----> verify_dns '$2'"
52 # $2 : proxy string to verify
53 use_ipv6=${3:-"0"} # Use IPv6 - default IPv4
54 force_ipversion=${4:-"0"} # Force IP Version - default 0 - No
55 write_log 7 "-----> verify_proxy '$2'"
60 use_ipv6="$2" # Use IPv6
61 ip_source="$3" # IP source
62 ip_network="$4" # set if source = "network" otherwise "-"
63 ip_url="$5" # set if source = "web" otherwise "-"
64 ip_interface="$6" # set if source = "interface" itherwiase "-"
65 ip_script="$7" # set if source = "script" otherwise "-"
66 proxy="$8" # proxy if set
67 force_ipversion="0" # not needed but must be set
68 use_https="0" # not needed but must be set
69 [ -n "$proxy" -a "$ip_source" = "web" ] && {
70 # proxy defined, used for ip_source=web
71 export HTTP_PROXY="http://$proxy"
72 export HTTPS_PROXY="http://$proxy"
73 export http_proxy="http://$proxy"
74 export https_proxy="http://$proxy"
76 # don't need IP only the return code
77 [ "$ip_source" = "web" -o "$ip_source" = "script" ] && {
78 # we wait only 3 seconds for an
79 # answer from "web" or "script"
80 write_log 7 "-----> timeout 3 -- get_local_ip IP"
81 timeout 3 -- get_local_ip IP
83 write_log 7 "-----> get_local_ip IP"