Skip to content

Commit

Permalink
Merge pull request #5 from Brinkyeti/master
Browse files Browse the repository at this point in the history
added support for mx records and some sort of silent ouput/logs
  • Loading branch information
chrisb86 committed Jan 12, 2015
2 parents 5ce650f + 10127f4 commit ba24522
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
1 change: 1 addition & 0 deletions nsupdate.d/sample.config.dist
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ IP_CHECK_SITE="https://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"
Expand Down
33 changes: 26 additions & 7 deletions nsupdate.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/local/bin/bash
#!/bin/bash

# Update a nameserver entry at inwx with the current WAN IP (DynDNS)

Expand Down Expand Up @@ -39,32 +39,50 @@ fi
##################

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
CONNECTION_TYPE=6
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="<?xml version=\"1.0\"?>
<methodCall>
<methodName>nameserver.updateRecord</methodName>
Expand Down Expand Up @@ -101,16 +119,17 @@ do
</param>
</params>
</methodCall>"

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
Expand Down

0 comments on commit ba24522

Please sign in to comment.