diff --git a/nsupdate.d/sample.config.dist b/nsupdate.d/sample.config.dist
index 0cfd681..f82c58d 100755
--- a/nsupdate.d/sample.config.dist
+++ b/nsupdate.d/sample.config.dist
@@ -5,9 +5,16 @@ IP_CHECK_SITE="https://ip.dblx.io"
# use drill instead of nslookup for hostname lookup
USE_DRILL="YES"
+
+# Use IPv6 connection
IPV6="NO"
+
+# Update an MX record
MX="NO"
+# Suppress all messages
+SILENT=NO
+
# Login credentials for the inwx admin interface
INWX_USER="USERNAME"
INWX_PASS='PASSWORD'
diff --git a/nsupdate.sh b/nsupdate.sh
index 32ff655..fa4016a 100755
--- a/nsupdate.sh
+++ b/nsupdate.sh
@@ -24,116 +24,113 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-##################
-# check required #
-##################
+# check required tools
command -v curl >/dev/null 2>&1 || { echo >&2 "I require curl but it's not installed. Note: all needed items are listed in the README.md file."; exit 1; }
command -v awk >/dev/null 2>&1 || { echo >&2 "I require awk but it's not installed. Note: all needed items are listed in the README.md file."; exit 1; }
command -v drill >/dev/null 2>&1 || command -v nslookup >/dev/null 2>&1 || { echo >&2 "I need drill or nslookup installed. Note: all needed items are listed in the README.md file."; exit 1; }
-##################
-# check config #
-##################
-configfiles=$(shopt -s nullglob dotglob; echo nsupdate.d/*.config)
-if (( ! ${#configfiles} ));then
- echo "There does not seem to be any config file available." ; exit 1;
-fi
-##################
LOG=$0.log
SILENT=NO
-# Loop through configs
-for f in $(dirname $0)/nsupdate.d/*.config
-do
- 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
- 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
- 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
-
-
-
-
-
- user
-
- $INWX_USER
-
-
-
- pass
-
- $INWX_PASS
-
-
-
- id
-
- $INWX_DOMAIN_ID
-
-
-
- content
-
- $WAN_IP
-
-
-
-
-
-
- "
+# Check if there are any usable config files
+if ls $(dirname $0)/nsupdate.d/*.config 1> /dev/null 2>&1; then
- 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
- elif [ "$SILENT" == "NO" ]; then
- echo "$(date) - No update needed for $DOMAIN. Current IP: "$NSLOOKUP >> $LOG
- fi
+ # Loop through configs
+ for f in $(dirname $0)/nsupdate.d/*.config
+ do
+ if [ "$SILENT" == "NO" ]; then
+ echo "Starting nameserver update with config file $f"
+ fi
+ ## Set record type to IPv4
+ TYPE=A
+ CONNECTION_TYPE=4
- unset DOMAIN
- unset IPV6
- unset MX
- unset WAN_IP
- unset NSLOOKUP
- unset INWX_PASS
- unset INWX_USER
- unset INWX_DOMAIN_ID
-done
+ 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
+ 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
+ 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
+
+
+
+
+
+ user
+
+ $INWX_USER
+
+
+
+ pass
+
+ $INWX_PASS
+
+
+
+ id
+
+ $INWX_DOMAIN_ID
+
+
+
+ content
+
+ $WAN_IP
+
+
+
+
+
+
+ "
+
+ 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
+ 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
+else
+ echo "There does not seem to be any config file available in $(dirname $0)/nsupdate.d/." ; exit 1;
+fi