From 18ae8bb9934bbe7cd02ff5d5d0d900de286e0624 Mon Sep 17 00:00:00 2001 From: Christian Baer Date: Wed, 12 Oct 2022 22:34:33 +0200 Subject: [PATCH] Added support for WAN_IP_COMMAND directive. --- README.md | 1 - nsupdate.sh | 15 +++++++++++---- nsupdate/conf.d/sub.example.com_AAAA.conf.dist | 8 ++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a417a7d..6079525 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,6 @@ With `crontab -e` you can add the following line for running the script every 5 - The code is now structured in functions which makes it more maintainable and modular. - Backwards compatibility should be given. - Avoid using awk and get rid of dependency -- NOTE: The IPCOMMAND directive is not implemented yet **2021-12-11** diff --git a/nsupdate.sh b/nsupdate.sh index 2608c79..2aa5558 100755 --- a/nsupdate.sh +++ b/nsupdate.sh @@ -105,11 +105,18 @@ get_domain_info () { ## File name for tempory file to store the XML from API tmp_file="${domain}_${record_type}_$(date +%s).xml" - ## Get connection type by record type - if [ "${record_type}" = "AAAA" ]; then - wan_ip="${wan_ip6}" + ## Check if WAN_IP_COMMAND is set and use it for retrieving the IP + if [ -z $WAN_IP_COMMAND ]; then + WAN_IP_COMMAND="${IPCOMMAND:-${WAN_IP_COMMAND}}" ## for backwards compatibility + wan_ip="${WAN_IP_COMMAND}" else - wan_ip="${wan_ip4}" + ## Otherwise use IP retrieved from web site + ## Get connection type by record type + if [ "${record_type}" = "AAAA" ]; then + wan_ip="${wan_ip6}" + else + wan_ip="${wan_ip4}" + fi fi chat 3 "Found xmllint. Using curl for retrieving data from INWX API." diff --git a/nsupdate/conf.d/sub.example.com_AAAA.conf.dist b/nsupdate/conf.d/sub.example.com_AAAA.conf.dist index 453185b..52b8a60 100644 --- a/nsupdate/conf.d/sub.example.com_AAAA.conf.dist +++ b/nsupdate/conf.d/sub.example.com_AAAA.conf.dist @@ -8,7 +8,7 @@ MAIN_DOMAIN="example.com" DOMAIN="sub.example.com" -# The next options must only be set if they differ from the global config in nsupdate.conf +# The following options must only be set if they differ from the global config in nsupdate.conf # Login credentials for the INWX API # These can be left undefined if you specified them globally in the nsupdate.conf @@ -23,4 +23,8 @@ RECORD_TYPE="AAAA" # default TTL setting by INWX is 3600 (1 hour) # minimum TTL allowed by INWX is 300 (5 minutes) for regular nameserver record updates # If unspecified, nsupdate uses a TTL of 300 -#RECORD_TTL="300" \ No newline at end of file +#RECORD_TTL="300" + +# Use a shell command to retrieve the WAN IP (eg. by SSHing to the router and get the IP from the WAN interface) +# Otherwise the IP retrieved by website will be used +#WAN_IP_COMMAND=$(ssh user@10.0.3.1 ifconfig pppoe1 | grep 'inet ' | cut -d' ' -f2) \ No newline at end of file