diff --git a/nsupdate.d/sample.config.dist b/nsupdate.d/sample.config.dist index 6861db9..92b6690 100755 --- a/nsupdate.d/sample.config.dist +++ b/nsupdate.d/sample.config.dist @@ -6,6 +6,7 @@ IP_CHECK_SITE="http://ip.dblx.io" # use drill instead of nslookup for hostname lookup USE_DRILL="YES" IPV6="NO" +MX="NO" # Login credentials for the inwx admin interface INWX_USER="USERNAME" @@ -14,4 +15,4 @@ INWX_PASS="PASSWORD" # The hostname that you want to update and it's ID from the inwx interface # You get the ID when you edit the given nameserver entry and hover the save button. DOMAIN="DOMAIN" -INWX_DOMAIN_ID="123456789" \ No newline at end of file +INWX_DOMAIN_ID="123456789" diff --git a/nsupdate.sh b/nsupdate.sh index f9f9e3b..252680c 100755 --- a/nsupdate.sh +++ b/nsupdate.sh @@ -1,4 +1,4 @@ -#!/usr/local/bin/bash +#!/bin/bash # Update a nameserver entry at inwx with the current WAN IP (DynDNS) @@ -25,17 +25,24 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. LOG=$0.log - +SILENT=NO # Loop through configs for f in $(dirname $0)/nsupdate.d/*.config do - echo "Starting nameserver update with config file $f" + if [ "$SILENT" == "NO" ]; then + echo "Starting nameserver update with config file $f" + fi ## Set record type to IPv4 TYPE=A CONNECTION_TYPE=4 source $f + ## Set record type to MX + if [[ "$MX" == "YES" ]]; then + TYPE=MX + fi + ## Set record type to IPv6 if [[ "$IPV6" == "YES" ]]; then TYPE=AAAA @@ -43,14 +50,25 @@ do fi if [[ "$USE_DRILL" == "YES" ]]; then - NSLOOKUP=$(drill $DOMAIN @ns.inwx.de $TYPE | head -7 | tail -1 | awk '{print $5}') + if [[ "$TYPE" == "MX" ]]; then + echo looking up MX records with drill currently not supported! + exit 1; + else + NSLOOKUP=$(drill $DOMAIN @ns.inwx.de $TYPE | head -7 | tail -1 | awk '{print $5}') + fi else - NSLOOKUP=$(nslookup -sil -type=$TYPE $DOMAIN - ns.inwx.de | tail -2 | head -1 | cut -d' ' -f2) + if [[ "$TYPE" == "MX" ]]; then + PART_NSLOOKUP=$(nslookup -sil -type=$TYPE $DOMAIN - ns.inwx.de | tail -2 | head -1 | cut -d' ' -f5) + NSLOOKUP=${PART_NSLOOKUP%"."} + else + NSLOOKUP=$(nslookup -sil -type=$TYPE $DOMAIN - ns.inwx.de | tail -2 | head -1 | cut -d' ' -f2) + fi fi # WAN_IP=`curl -s -$CONNECTION_TYPE ${IP_CHECK_SITE}| grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'` WAN_IP=`curl -s -$CONNECTION_TYPE ${IP_CHECK_SITE}` + API_XML=" nameserver.updateRecord @@ -87,19 +105,20 @@ do " - + if [ ! "$NSLOOKUP" == "$WAN_IP" ]; then curl -silent -v -XPOST -H"Content-Type: application/xml" -d "$API_XML" https://api.domrobot.com/xmlrpc/ echo "$(date) - $DOMAIN updated. Old IP: "$NSLOOKUP "New IP: "$WAN_IP >> $LOG - else + elif [ "$SILENT" == "NO" ]; then echo "$(date) - No update needed for $DOMAIN. Current IP: "$NSLOOKUP >> $LOG fi unset DOMAIN unset IPV6 + unset MX unset WAN_IP unset NSLOOKUP unset INWX_PASS unset INWX_USER unset INWX_DOMAIN_ID -done \ No newline at end of file +done