#!/usr/bin/env bash [[ -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 } 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 -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 } 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") 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 < 255 )); then ip1_3=$(( ip1_3 + 1 )) else ip1_3=0 if (( ip1_2 < 255 )); then ip1_2=$(( ip1_2 + 1 )) else ip1_2=0 if (( ip1_1 < 255 )); then ip1_1=$(( ip1_1 + 1 )) else break fi fi fi fi printf '%s\n' "127.0.0.1 ${ip1_1}.${ip1_2}.${ip1_3}.${ip1_4}" >> "$2" done done