From 7bff744e375b954ce8ef6a9d13d0443105f2c836 Mon Sep 17 00:00:00 2001 From: arul Date: Tue, 13 May 2025 21:29:14 +0530 Subject: [PATCH] Fixed ipv6 entries not falling on /etc/hosts. now domain leak won't happen considering ipv6 entries are appended by blocker script on /etc/hosts --- blocker | 131 +++++++++++++++++++++++++++++++----------------- domains.txt | 90 ++++++++++++++++++--------------- domains.txt.bak | 13 +++++ extend-domains | 5 +- 4 files changed, 149 insertions(+), 90 deletions(-) diff --git a/blocker b/blocker index a62184b..78e240e 100755 --- a/blocker +++ b/blocker @@ -9,61 +9,101 @@ fi DOMAINS_FILE="domains.txt" HOSTS_FILE="/etc/hosts" -TMP_FILE=$(mktemp) TMP_HOSTS=$(mktemp) -cp "$HOSTS_FILE" "$TMP_HOSTS" # Work on a temp copy + +cp "$HOSTS_FILE" "$TMP_HOSTS" CURRENT_CATEGORY="" declare -a CATEGORY_DOMAINS=() +log() { + echo "🔧 $1" +} + +add_ipv4_block() { + local ip="127.0.0.1" + local comment="$1" + + log "Adding IPv4 entries under category: $comment" + + if grep -Fxq "$comment" "$TMP_HOSTS"; then + END_LINE=$(awk -v cat="$comment" ' + $0 == cat { found=1; next } + found && $0 ~ /^#/ { exit } + found { line=NR } + END { print (line ? line : 0) } + ' "$TMP_HOSTS") + INSERT_LINE=$((END_LINE + 1)) + + for domain in "${CATEGORY_DOMAINS[@]}"; do + if ! grep -qE "^[[:space:]]*$ip[[:space:]]+$domain\$" "$TMP_HOSTS"; then + log " ➕ Inserting $ip $domain at line $INSERT_LINE" + sed -i "${INSERT_LINE}i$ip $domain" "$TMP_HOSTS" + ((INSERT_LINE++)) + else + log " âš ī¸ Skipping duplicate: $ip $domain" + fi + done + else + log " 🔹 Category not found, appending new category: $comment" + echo "" >> "$TMP_HOSTS" + echo "$comment" >> "$TMP_HOSTS" + for domain in "${CATEGORY_DOMAINS[@]}"; do + echo "$ip $domain" >> "$TMP_HOSTS" + log " ➕ Appended $ip $domain" + done + fi +} + +add_ipv6_block() { + local ip="::1" + local comment="$1 ipv6" + + log "Adding IPv6 entries under category: $comment" + + if grep -Fxq "$comment" "$TMP_HOSTS"; then + END_LINE=$(awk -v cat="$comment" ' + $0 == cat { found=1; next } + found && $0 ~ /^#/ { exit } + found { line=NR } + END { print (line ? line : 0) } + ' "$TMP_HOSTS") + INSERT_LINE=$((END_LINE + 1)) + + for domain in "${CATEGORY_DOMAINS[@]}"; do + if ! grep -qE "^[[:space:]]*$ip[[:space:]]+$domain\$" "$TMP_HOSTS"; then + log " ➕ Inserting $ip $domain at line $INSERT_LINE" + sed -i "${INSERT_LINE}i$ip $domain" "$TMP_HOSTS" + ((INSERT_LINE++)) + else + log " âš ī¸ Skipping duplicate: $ip $domain" + fi + done + else + log " 🔹 IPv6 category not found, appending: $comment" + echo "" >> "$TMP_HOSTS" + echo "$comment" >> "$TMP_HOSTS" + for domain in "${CATEGORY_DOMAINS[@]}"; do + echo "$ip $domain" >> "$TMP_HOSTS" + log " ➕ Appended $ip $domain" + done + fi +} + flush_category() { [[ -z "$CURRENT_CATEGORY" ]] && return - IPV4_COMMENT="$CURRENT_CATEGORY" - IPV6_COMMENT="${CURRENT_CATEGORY} ipv6" + log "đŸ“Ļ Flushing category: $CURRENT_CATEGORY" + add_ipv4_block "$CURRENT_CATEGORY" + add_ipv6_block "$CURRENT_CATEGORY" - # Only add if not already in file - add_block() { - local ip="$1" - local comment="$2" - if grep -Fxq "$comment" "$TMP_HOSTS"; then - # Find insertion point - END_LINE=$(awk -v cat="$comment" ' - $0 == cat { found=1; next } - found && $0 ~ /^#/ { exit } - found { line=NR } - END { print (line ? line : 0) } - ' "$TMP_HOSTS") - INSERT_LINE=$((END_LINE + 1)) - for domain in "${CATEGORY_DOMAINS[@]}"; do - if ! grep -qE "^[[:space:]]*$ip[[:space:]]+$domain\$" "$TMP_HOSTS"; then - sed -i "${INSERT_LINE}i$ip $domain" "$TMP_HOSTS" - ((INSERT_LINE++)) - fi - done - else - { - echo "" - echo "$comment" - for domain in "${CATEGORY_DOMAINS[@]}"; do - if ! grep -qE "^[[:space:]]*$ip[[:space:]]+$domain\$" "$TMP_HOSTS"; then - echo "$ip $domain" - fi - done - } >> "$TMP_HOSTS" - fi - } - - add_block "127.0.0.1" "$IPV4_COMMENT" - add_block "::1" "$IPV6_COMMENT" - - # Reset CURRENT_CATEGORY="" CATEGORY_DOMAINS=() } +# Read and process domains.txt while IFS= read -r line || [ -n "$line" ]; do - line=$(echo "$line" | sed 's/^[ \t]*//;s/[ \t]*$//') + line=$(echo "$line" | sed 's/^[ \t]*//;s/[ \t]*$//') # Trim spaces [[ -z "$line" ]] && continue if [[ "$line" == \#* ]]; then @@ -76,11 +116,12 @@ done < "$DOMAINS_FILE" flush_category -# Backup and replace hosts file +# Backup and replace /etc/hosts cp "$HOSTS_FILE" "${HOSTS_FILE}.bak" -cat "$TMP_HOSTS" > "$HOSTS_FILE" +cp "$TMP_HOSTS" "$HOSTS_FILE" -echo "✅ Domains have been categorized and added (IPv4 & IPv6) to $HOSTS_FILE." +log "✅ Hosts file updated with IPv4 and IPv6 domain blocks under categories." +log "đŸ—‚ī¸ Backup created at ${HOSTS_FILE}.bak" -rm "$TMP_FILE" "$TMP_HOSTS" +rm "$TMP_HOSTS" diff --git a/domains.txt b/domains.txt index d60862f..96c8b9b 100644 --- a/domains.txt +++ b/domains.txt @@ -1,42 +1,4 @@ -#socialmedia -facebook.com -www.facebook.com -m.facebook.com -mobile.facebook.com -fb.com -www.fb.com -instagram.com -www.instagram.com -tiktok.com -www.tiktok.com -snapchat.com -www.snapchat.com -reddit.com -www.reddit.com -twitter.com -www.twitter.com -x.com -www.x.com -pinterest.com -www.pinterest.com -linkedin.com -www.linkedin.com -threads.net -www.threads.net -youtube.com -www.youtube.com -youtu.be -discord.com -www.discord.com -web.whatsapp.com -whatsapp.com -www.whatsapp.com -messenger.com -www.messenger.com -odysee.com -www.odysee.com - #pornsites 0.nextyourcontent.com 0.oldgyhogola.com @@ -18438,7 +18400,6 @@ gayforit.eu gayforsex.com gayfreeporn.tv gayfuck.tv -gayfuckporn.com gayfuckporn.tv gayfun.net gayfuror.com @@ -37635,7 +37596,6 @@ porn-granny-tube.com porn-gratis.info porn-hab.com porn-hd-videos.info -porn-hd.xxx porn-hit.com porn-hub.be porn-hub.dk @@ -88349,7 +88309,6 @@ xhamster-com.zproxy.org xhamster-teens.com xhamster.blog.br xhamster.co.hu -xhamster.com xhamster.desi xhamster.dev xhamster.fm @@ -90882,3 +90841,52 @@ zzpornpics.com zzsyw.com zzztube.com zzztube.tv +fuckedtube.xxx +www.fuckedtube.xxx +fuckvideos.xxx +www.fuckvideos.xxx +befuck.video +www.befuck.video +porn-hd.xxx +www.porn-hd.xxx +fra.xhamster.com +gayfuckporn.com +www.gayfuckporn.com + +#socialmedia +facebook.com +www.facebook.com +m.facebook.com +mobile.facebook.com +fb.com +www.fb.com +instagram.com +www.instagram.com +tiktok.com +www.tiktok.com +snapchat.com +www.snapchat.com +reddit.com +www.reddit.com +twitter.com +www.twitter.com +x.com +www.x.com +pinterest.com +www.pinterest.com +linkedin.com +www.linkedin.com +threads.net +www.threads.net +youtube.com +www.youtube.com +youtu.be +discord.com +www.discord.com +web.whatsapp.com +whatsapp.com +www.whatsapp.com +messenger.com +www.messenger.com +odysee.com +www.odysee.com diff --git a/domains.txt.bak b/domains.txt.bak index 3ac64d2..47e7ed9 100644 --- a/domains.txt.bak +++ b/domains.txt.bak @@ -1,4 +1,17 @@ +#pornsites +fuckedtube.xxx +www.fuckedtube.xxx +fuckvideos.xxx +www.fuckvideos.xxx +befuck.video +www.befuck.video +porn-hd.xxx +www.porn-hd.xxx +fra.xhamster.com +gayfuckporn.com +www.gayfuckporn.com + #socialmedia facebook.com www.facebook.com diff --git a/extend-domains b/extend-domains index ae0828b..202df78 100755 --- a/extend-domains +++ b/extend-domains @@ -64,7 +64,4 @@ fi rm "$TMP_DOMAINS" -# Apply block -echo "🔒 Updating /etc/hosts..." -./blocker - +echo "â„šī¸ Run sudo ./blocker to add entries to /etc/hosts"