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

This commit is contained in:
arul 2025-05-13 21:29:14 +05:30
parent b8596ef89e
commit 7bff744e37
4 changed files with 149 additions and 90 deletions

93
blocker
View File

@ -9,25 +9,24 @@ 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=()
flush_category() {
[[ -z "$CURRENT_CATEGORY" ]] && return
log() {
echo "🔧 $1"
}
IPV4_COMMENT="$CURRENT_CATEGORY"
IPV6_COMMENT="${CURRENT_CATEGORY} ipv6"
add_ipv4_block() {
local ip="127.0.0.1"
local comment="$1"
log "Adding IPv4 entries under category: $comment"
# 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 }
@ -35,35 +34,76 @@ flush_category() {
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
{
echo ""
echo "$comment"
log " 🔹 Category not found, appending new category: $comment"
echo "" >> "$TMP_HOSTS"
echo "$comment" >> "$TMP_HOSTS"
for domain in "${CATEGORY_DOMAINS[@]}"; do
if ! grep -qE "^[[:space:]]*$ip[[:space:]]+$domain\$" "$TMP_HOSTS"; then
echo "$ip $domain"
fi
echo "$ip $domain" >> "$TMP_HOSTS"
log " Appended $ip $domain"
done
} >> "$TMP_HOSTS"
fi
}
add_block "127.0.0.1" "$IPV4_COMMENT"
add_block "::1" "$IPV6_COMMENT"
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
log "📦 Flushing category: $CURRENT_CATEGORY"
add_ipv4_block "$CURRENT_CATEGORY"
add_ipv6_block "$CURRENT_CATEGORY"
# 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"

View File

@ -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

View File

@ -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

View File

@ -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"