From a9a4326038dbd49f0f3e928aef276b4d9fe59fe1 Mon Sep 17 00:00:00 2001 From: Laine Gholson Date: Thu, 5 Nov 2015 15:54:29 -0600 Subject: [PATCH 1/4] Support rDNS with mDNS and Bonjour mDNS (mac) --- testssl.sh | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/testssl.sh b/testssl.sh index dfea8f8..79daaf9 100755 --- a/testssl.sh +++ b/testssl.sh @@ -4411,10 +4411,12 @@ get_a_record() { OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 if [[ "$NODE" == *.local ]]; then - if which avahi-resolve &>/dev/null; then - ip4=$(filter_ip4_address $(avahi-resolve -4 -n $NODE 2>/dev/null | awk '{ print $2 }')) + if which dig &>/dev/null; then + ip4=$(filter_ip4_address $(dig @224.0.0.251 -p 5353 +short -t a +notcp "$1" 2>/dev/null | sed '/^;;/d')) + elif which avahi-resolve &>/dev/null; then + ip4=$(filter_ip4_address $(avahi-resolve -4 -n "$1" 2>/dev/null | awk '{ print $2 }')) else - fatal "Local hostname given but no 'avahi-resolve' avaliable." + fatal "Local hostname given but no 'avahi-resolve' or 'dig' avaliable." fi fi if [[ -z "$ip4" ]]; then @@ -4443,10 +4445,12 @@ get_aaaa_record() { OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 if [[ -z "$ip6" ]]; then if [[ "$NODE" == *.local ]]; then - if which avahi-resolve &>/dev/null; then - ip6=$(filter_ip6_address $(avahi-resolve -6 -n $NODE 2>/dev/null | awk '{ print $2 }')) + if which dig &>/dev/null; then + ip6=$(filter_ip6_address $(dig @ff02::fb -p 5353 -t aaaa +short +notcp "$NODE")) + elif which avahi-resolve &>/dev/null; then + ip6=$(filter_ip6_address $(avahi-resolve -6 -n "$NODE" 2>/dev/null | awk '{ print $2 }')) else - fatal "Local hostname given but no 'avahi-resolve' avaliable." + fatal "Local hostname given but no 'avahi-resolve' or 'dig' avaliable." fi elif which host &> /dev/null ; then ip6=$(filter_ip6_address $(host -t aaaa "$NODE" | grep -v alias | grep -v "no AAAA record" | sed 's/^.*address //')) @@ -4511,7 +4515,13 @@ determine_rdns() { local saved_openssl_conf="$OPENSSL_CONF" OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 - if which dig &> /dev/null; then + if [[ "$NODEIP" == 192.168.*.* ]] ]]; then + if which dig &>/dev/null; then + rDNS=$(dig -x $NODEIP @224.0.0.251 -p 5353 +notcp +noall +answer | awk '/PTR/ { print $NF }') + elif which avahi-resolve &>/dev/null; then + rDNS=$(avahi-resolve -a $NODEIP 2>/dev/null | awk '{ print $2 }') + fi + elif which dig &> /dev/null; then rDNS=$(dig -x $NODEIP +noall +answer | awk '/PTR/ { print $NF }') # +short returns also CNAME, e.g. openssl.org elif which host &> /dev/null; then rDNS=$(host -t PTR $NODEIP 2>/dev/null | awk '/pointer/ { print $NF }') From d9dfe438e55e733c9ed6f9eaf0e77bc65edfa4eb Mon Sep 17 00:00:00 2001 From: Laine Gholson Date: Thu, 5 Nov 2015 19:04:04 -0600 Subject: [PATCH 2/4] Prefer 'avahi-resolve' over 'dig' for mDNS --- testssl.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/testssl.sh b/testssl.sh index 79daaf9..e030841 100755 --- a/testssl.sh +++ b/testssl.sh @@ -4411,10 +4411,10 @@ get_a_record() { OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 if [[ "$NODE" == *.local ]]; then - if which dig &>/dev/null; then - ip4=$(filter_ip4_address $(dig @224.0.0.251 -p 5353 +short -t a +notcp "$1" 2>/dev/null | sed '/^;;/d')) - elif which avahi-resolve &>/dev/null; then + if which avahi-resolve &>/dev/null; then ip4=$(filter_ip4_address $(avahi-resolve -4 -n "$1" 2>/dev/null | awk '{ print $2 }')) + elif which dig &>/dev/null; then + ip4=$(filter_ip4_address $(dig @224.0.0.251 -p 5353 +short -t a +notcp "$1" 2>/dev/null | sed '/^;;/d')) else fatal "Local hostname given but no 'avahi-resolve' or 'dig' avaliable." fi @@ -4445,10 +4445,10 @@ get_aaaa_record() { OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 if [[ -z "$ip6" ]]; then if [[ "$NODE" == *.local ]]; then - if which dig &>/dev/null; then - ip6=$(filter_ip6_address $(dig @ff02::fb -p 5353 -t aaaa +short +notcp "$NODE")) - elif which avahi-resolve &>/dev/null; then + if which avahi-resolve &>/dev/null; then ip6=$(filter_ip6_address $(avahi-resolve -6 -n "$NODE" 2>/dev/null | awk '{ print $2 }')) + elif which dig &>/dev/null; then + ip6=$(filter_ip6_address $(dig @ff02::fb -p 5353 -t aaaa +short +notcp "$NODE")) else fatal "Local hostname given but no 'avahi-resolve' or 'dig' avaliable." fi @@ -4516,10 +4516,10 @@ determine_rdns() { OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 if [[ "$NODEIP" == 192.168.*.* ]] ]]; then - if which dig &>/dev/null; then - rDNS=$(dig -x $NODEIP @224.0.0.251 -p 5353 +notcp +noall +answer | awk '/PTR/ { print $NF }') - elif which avahi-resolve &>/dev/null; then + if which avahi-resolve &>/dev/null; then rDNS=$(avahi-resolve -a $NODEIP 2>/dev/null | awk '{ print $2 }') + elif which dig &>/dev/null; then + rDNS=$(dig -x $NODEIP @224.0.0.251 -p 5353 +notcp +noall +answer | awk '/PTR/ { print $NF }') fi elif which dig &> /dev/null; then rDNS=$(dig -x $NODEIP +noall +answer | awk '/PTR/ { print $NF }') # +short returns also CNAME, e.g. openssl.org From 457fcacf3f3ab024c57e096a48093c481df41c24 Mon Sep 17 00:00:00 2001 From: Laine Gholson Date: Thu, 5 Nov 2015 19:39:26 -0600 Subject: [PATCH 3/4] Fix error --- testssl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testssl.sh b/testssl.sh index e030841..cdf603f 100755 --- a/testssl.sh +++ b/testssl.sh @@ -4515,7 +4515,7 @@ determine_rdns() { local saved_openssl_conf="$OPENSSL_CONF" OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 - if [[ "$NODEIP" == 192.168.*.* ]] ]]; then + if [[ "$NODEIP" == 192.168.*.* ]]; then if which avahi-resolve &>/dev/null; then rDNS=$(avahi-resolve -a $NODEIP 2>/dev/null | awk '{ print $2 }') elif which dig &>/dev/null; then From e122d65f52d622b1411f430279f62a7e3fe78bcf Mon Sep 17 00:00:00 2001 From: Laine Gholson Date: Fri, 6 Nov 2015 19:16:21 -0600 Subject: [PATCH 4/4] Only use local rDNS with .local domain --- testssl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testssl.sh b/testssl.sh index cdf603f..e0615f3 100755 --- a/testssl.sh +++ b/testssl.sh @@ -4515,7 +4515,7 @@ determine_rdns() { local saved_openssl_conf="$OPENSSL_CONF" OPENSSL_CONF="" # see https://github.com/drwetter/testssl.sh/issues/134 - if [[ "$NODEIP" == 192.168.*.* ]]; then + if [[ "$NODE" == *.local ]]; then if which avahi-resolve &>/dev/null; then rDNS=$(avahi-resolve -a $NODEIP 2>/dev/null | awk '{ print $2 }') elif which dig &>/dev/null; then