From 99ed481d975fe9d80cdc98c5097d150de2222674 Mon Sep 17 00:00:00 2001 From: Kevin MacMartin Date: Wed, 24 May 2017 10:44:38 -0400 Subject: [PATCH] Clean up formatting and add missing dependencies to buildhosts --- buildhosts | 7 +++--- p2p-to-hosts | 60 +++++++++++++++++++++++++++++----------------------- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/buildhosts b/buildhosts index a9ef0ec..5e072f8 100755 --- a/buildhosts +++ b/buildhosts @@ -29,7 +29,7 @@ default_sources=( 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext' ) -script_dependencies=('curl' 'sed') +script_dependencies=('curl' 'mv' 'sed' 'sort') # Set the script name script_name="${0//*\/}" @@ -121,6 +121,7 @@ function buildhosts_build { # Download the the current source into $source_data and fail if the result is empty source_data=$(curl -C - -s "$source" | tr -d "\r") + [[ -n "$source_data" ]] \ || buildhosts_error "Could not download list @ $source" @@ -203,7 +204,7 @@ done } # Fail if run with no commands -[[ -z "$1" ]] && buildhosts_error "A valid command must be provided" 1 +[[ -z "$1" ]] && buildhosts_error 'A valid command must be provided' 1 # Run the command entered by the user case "$1" in @@ -217,6 +218,6 @@ case "$1" in buildhosts_help 1 ;; *) - buildhosts_error "Invalid command" 1 + buildhosts_error 'Invalid command' 1 ;; esac diff --git a/p2p-to-hosts b/p2p-to-hosts index 21e3a98..bdd92c8 100755 --- a/p2p-to-hosts +++ b/p2p-to-hosts @@ -1,44 +1,52 @@ #!/usr/bin/env bash -if [[ -z "$1" ]] || [[ -z "$2" ]]; then - echo "Error: Run this scrip with a blocklist URL in p2p format and an output file as arguments" +[[ -z "$1" || -z "$2" ]] && { + printf '%s\n' 'Error: Run this scrip with a blocklist URL in p2p format and an output file as arguments' >&2 exit 1 -fi +} -P2PLIST=$(sed 's|^.*:||' < <(wget -q -O - "$1" | gunzip) | grep -E "^[0-9]*.[0-9]*.[0-9]*.[0-9]*-[0-9]*.[0-9]*.[0-9]*.[0-9]*$") -[[ ! $(grep -E "^[0-9]*.[0-9]*.[0-9]*.[0-9]*-[0-9]*.[0-9]*.[0-9]*.[0-9]*$" <<< "$P2PLIST") ]] && echo "Error: The URL ${1} does not appear to contain a P2P-formatted blocklist" && exit 1 +p2plist=$(sed 's|^.*:||' < <(wget -q -O - "$1" | gunzip) | grep -E "^[0-9]*.[0-9]*.[0-9]*.[0-9]*-[0-9]*.[0-9]*.[0-9]*.[0-9]*$") -for address_range in ${P2PLIST[@]}; do - IP1=$(cut -d '-' -f 1 <<< "$address_range") - IP1_1=$(cut -d '.' -f 1 <<< "$IP1") - IP1_2=$(cut -d '.' -f 2 <<< "$IP1") - IP1_3=$(cut -d '.' -f 3 <<< "$IP1") - IP1_4=$(cut -d '.' -f 4 <<< "$IP1") +grep -q -E "^[0-9]*.[0-9]*.[0-9]*.[0-9]*-[0-9]*.[0-9]*.[0-9]*.[0-9]*$" <<< "$p2plist" || { + printf '%s\n' "Error: The URL $1 does not appear to contain a P2P-formatted blocklist" >&2 + exit 1 +} - IP2=$(cut -d '-' -f 2 <<< "$address_range") +for address_range in "${p2plist[@]}"; do + ip1=$(cut -d '-' -f 1 <<< "$address_range") + ip1_1=$(cut -d '.' -f 1 <<< "$ip1") + ip1_2=$(cut -d '.' -f 2 <<< "$ip1") + ip1_3=$(cut -d '.' -f 3 <<< "$ip1") + ip1_4=$(cut -d '.' -f 4 <<< "$ip1") + ip2=$(cut -d '-' -f 2 <<< "$address_range") - echo "127.0.0.1 ${IP1_1}.${IP1_2}.${IP1_3}.${IP1_4}" >> "$2" - while [ ! "${IP1_1}.${IP1_2}.${IP1_3}.${IP1_4}" = "$IP2" ]; do - if [ "$IP1_4" -lt 255 ]; then - IP1_4=$(expr $IP1_4 + 1) + printf '%s\n' "127.0.0.1 ${ip1_1}.${ip1_2}.${ip1_3}.${ip1_4}" >> "$2" + + while [[ ! "${ip1_1}.${ip1_2}.${ip1_3}.${ip1_4}" = "$ip2" ]]; do + if (( ip1_4 < 255 )); then + ip1_4=$(( ip1_4 + 1 )) else - IP1_4=0 - if [ "$IP1_3" -lt 255 ]; then - IP1_3=$(expr $IP1_3 + 1) + ip1_4=0 + + if (( ip1_3 < 255 )); then + ip1_3=$(( ip1_3 + 1 )) else - IP1_3=0 - if [ "$IP1_2" -lt 255 ]; then - IP1_2=$(expr $IP1_2 + 1) + ip1_3=0 + + if (( ip1_2 < 255 )); then + ip1_2=$(( ip1_2 + 1 )) else - IP1_2=0 - if [ "$IP1_1" -lt 255 ]; then - IP1_1=$(expr $IP1_1 + 1) + ip1_2=0 + + if (( ip1_1 < 255 )); then + ip1_1=$(( ip1_1 + 1 )) else break fi fi fi fi - echo "127.0.0.1 ${IP1_1}.${IP1_2}.${IP1_3}.${IP1_4}" >> "$2" + + printf '%s\n' "127.0.0.1 ${ip1_1}.${ip1_2}.${ip1_3}.${ip1_4}" >> "$2" done done