From 4c10634d85fd25a44cb6c688927abd6278453a7e Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 21 Nov 2016 15:49:11 +0100 Subject: [PATCH 1/7] Convert domain names to lower case before checking validity of the domain --- advanced/Scripts/list.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) mode change 100644 => 100755 advanced/Scripts/list.sh diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh old mode 100644 new mode 100755 index 24f6d055..cfcea424 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -51,8 +51,11 @@ EOM } HandleOther(){ - #check validity of domain - validDomain=$(echo "$1" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/') + # First, convert everything to lowercase + domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1") + + #check validity of domain + validDomain=$(echo "$domain" | perl -ne'print if /\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 From 7b26b308ad393aae6977073c5d564c6210fb0ca3 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 21 Nov 2016 15:50:05 +0100 Subject: [PATCH 2/7] No need for echo and pipe here! --- advanced/Scripts/list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index cfcea424..35f2ceaa 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -55,7 +55,7 @@ HandleOther(){ domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1") #check validity of domain - validDomain=$(echo "$domain" | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/') + validDomain=$(perl -ne "print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/" <<< "$domain") if [ -z "${validDomain}" ]; then echo "::: $1 is not a valid argument or domain name" else From c8ad6f23a88f1e292796f508dd3cafc99c5765de Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 2 Dec 2016 12:57:04 +0100 Subject: [PATCH 3/7] Properly escape any special characters before using them in regexp manner --- advanced/Scripts/list.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index 35f2ceaa..82f11fa7 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -50,6 +50,12 @@ EOM exit 1 } +EscapeRegexp() { + # This way we may safely insert an arbitrary + # string in our regular expressions + echo $* | sed 's/[]\.|$(){}?+*^]/\\&/g' | sed 's/\//\\\//g' +} + HandleOther(){ # First, convert everything to lowercase domain=$(sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" <<< "$1") @@ -80,12 +86,12 @@ PoplistFile() { } AddDomain() { - list="$2" + domain=$(EscapeRegexp "$1") bool=true #Is the domain in the list we want to add it to? - grep -Ex -q "$1" ${list} > /dev/null 2>&1 || bool=false + grep -Ex -q "${domain}" ${list} > /dev/null 2>&1 || bool=false if [[ "${bool}" == false ]]; then #domain not found in the whitelist file, add it! @@ -104,14 +110,16 @@ AddDomain() { RemoveDomain() { list="$2" + domain=$(EscapeRegexp "$1") bool=true - #Is it in the other list? Logic follows that if its whitelisted it should not be blacklisted and vice versa - grep -Ex -q "$1" ${list} > /dev/null 2>&1 || bool=false + #Is it in the list? Logic follows that if its whitelisted it should not be blacklisted and vice versa + grep -Ex -q "${domain}" ${list} > /dev/null 2>&1 || bool=false if [[ "${bool}" == true ]]; then # Remove it from the other one echo "::: Removing $1 from $list..." - echo "$1" | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' ${list} + # /I flag: search case-insensitive + sed -i "/${domain}/Id" ${list} reload=true else if [[ "${verbose}" == true ]]; then From 629ca970a11ee6ff6f6b56f8c998f3005cafc719 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 2 Dec 2016 14:08:54 +0100 Subject: [PATCH 4/7] Changed from single quoted filter expression to double quotes as reqeusted by codacy --- advanced/Scripts/list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index 82f11fa7..32e7e877 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -53,7 +53,7 @@ EOM EscapeRegexp() { # This way we may safely insert an arbitrary # string in our regular expressions - echo $* | sed 's/[]\.|$(){}?+*^]/\\&/g' | sed 's/\//\\\//g' + echo $* | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" } HandleOther(){ From 2061daa902f9dc0f56daccfb024eeaca3ea1398d Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 2 Dec 2016 14:11:17 +0100 Subject: [PATCH 5/7] Don't forget to escape also the slash "/" --- advanced/Scripts/list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index 32e7e877..37a17a0f 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -53,7 +53,7 @@ EOM EscapeRegexp() { # This way we may safely insert an arbitrary # string in our regular expressions - echo $* | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" + echo $* | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g" } HandleOther(){ From 509cfd15f27f07f4e6d99fd431b821024be86280 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 2 Dec 2016 14:17:34 +0100 Subject: [PATCH 6/7] Simplified EscapeRegexp() --- advanced/Scripts/list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index 37a17a0f..ca038ef3 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -53,7 +53,7 @@ EOM EscapeRegexp() { # This way we may safely insert an arbitrary # string in our regular expressions - echo $* | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g" + echo $* | sed "s/[]\\.|$(){}?+*^]\\//\\\\&/g" } HandleOther(){ From 78cb43d0dc014dcf6d470f81bde188e795807491 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 3 Dec 2016 00:32:37 +0100 Subject: [PATCH 7/7] Revert "Simplified EscapeRegexp()" This reverts commit 509cfd15f27f07f4e6d99fd431b821024be86280. --- advanced/Scripts/list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/list.sh b/advanced/Scripts/list.sh index ca038ef3..37a17a0f 100755 --- a/advanced/Scripts/list.sh +++ b/advanced/Scripts/list.sh @@ -53,7 +53,7 @@ EOM EscapeRegexp() { # This way we may safely insert an arbitrary # string in our regular expressions - echo $* | sed "s/[]\\.|$(){}?+*^]\\//\\\\&/g" + echo $* | sed "s/[]\\.|$(){}?+*^]/\\\\&/g" | sed "s/\\//\\\\\//g" } HandleOther(){