From 85b3fef08d6b6dd145e66e9cc7e5db9db3c408e3 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 28 Jan 2017 00:39:10 +0100 Subject: [PATCH 1/3] Use perl instead of grep? --- advanced/Scripts/list.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index dce274c5..828bb2bc 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -66,11 +66,11 @@ HandleOther(){ domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1") #check validity of domain - validDomain=$(echo "${domain}" | grep -P '^(?!.*[^a-z0-9-\.].*)\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b') + validDomain=$(echo "${domain}" | perl -lne 'print $1 if /^(?!.*[^a-z0-9-\.].*)\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/') if [ -z "${validDomain}" ]; then echo "::: $1 is not a valid argument or domain name" else - domList=("${domList[@]}" ${validDomain}) + domList=("${domList[@]}" ${domain}) fi } From 1bf43b04254559896f5e3a59667a18520401cb78 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 28 Jan 2017 21:48:19 +0100 Subject: [PATCH 2/3] Improved regex: Remove all leading points from domain (.....xyz => .xyz). Return not only a part, but fill validated domain --- advanced/Scripts/list.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index 828bb2bc..d2438a43 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -58,7 +58,7 @@ EscapeRegexp() { # This way we may safely insert an arbitrary # string in our regular expressions # Also remove leading "." if present - echo $* | sed 's/^\.//' | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g" + echo $* | sed 's/^\.*//' | sed "s/[]\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g" } HandleOther(){ @@ -66,11 +66,12 @@ HandleOther(){ domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1") #check validity of domain - validDomain=$(echo "${domain}" | perl -lne 'print $1 if /^(?!.*[^a-z0-9-\.].*)\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/') + validDomain=$(echo "${domain}" | perl -lne 'print if /^(?!.*[^a-z0-9-\.].*)\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)*[a-z]{2,63}\b/') + echo $validDomain if [ -z "${validDomain}" ]; then echo "::: $1 is not a valid argument or domain name" else - domList=("${domList[@]}" ${domain}) + domList=("${domList[@]}" ${validDomain}) fi } From 08cddba2005f9ffe3a527bf080f9d178445c1cc9 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 28 Jan 2017 21:49:31 +0100 Subject: [PATCH 3/3] There should be no echo here --- advanced/Scripts/list.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index d2438a43..c916e021 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -67,7 +67,6 @@ HandleOther(){ #check validity of domain validDomain=$(echo "${domain}" | perl -lne 'print if /^(?!.*[^a-z0-9-\.].*)\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)*[a-z]{2,63}\b/') - echo $validDomain if [ -z "${validDomain}" ]; then echo "::: $1 is not a valid argument or domain name" else