mirror of
https://github.com/C24Be/AS_Network_List.git
synced 2026-03-26 11:20:59 +03:00
79 lines
2.7 KiB
Bash
79 lines
2.7 KiB
Bash
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
# Source files for name-based VK filtering
|
|
AUTO_ALL_V4_FILE="${SCRIPT_DIR}/auto/all-ru-ipv4.txt"
|
|
AUTO_ALL_V6_FILE="${SCRIPT_DIR}/auto/all-ru-ipv6.txt"
|
|
AUTO_RIPE_V4_FILE="${SCRIPT_DIR}/auto/ripe-ru-ipv4.txt"
|
|
VK_NAME_PATTERN='VK[[:space:]-]*CLOUD|VKCOMPANY|VKONTAKTE'
|
|
|
|
# Additional VK-only text blacklists
|
|
VK_INPUT_FILE="${SCRIPT_DIR}/blacklists/blacklist-vk.txt"
|
|
VK_INPUT_V4_FILE="${SCRIPT_DIR}/blacklists/blacklist-vk-v4.txt"
|
|
VK_INPUT_V6_FILE="${SCRIPT_DIR}/blacklists/blacklist-vk-v6.txt"
|
|
|
|
# Output directory and files
|
|
ROUTES_OUTPUT_DIR="${SCRIPT_DIR}/blacklists_route"
|
|
ROUTES_V4_FILE="${ROUTES_OUTPUT_DIR}/blacklist-vk-v4.routes"
|
|
ROUTES_V6_FILE="${ROUTES_OUTPUT_DIR}/blacklist-vk-v6.routes"
|
|
|
|
mkdir -p "${ROUTES_OUTPUT_DIR}" "${SCRIPT_DIR}/blacklists"
|
|
|
|
echo "Generating VK route blacklists..."
|
|
|
|
# Build additional VK-only blacklist from network names in auto/*.txt files
|
|
TMP_VK_FILE="$(mktemp "${SCRIPT_DIR}/blacklists/.blacklist-vk.XXXXXX")"
|
|
for source_file in "${AUTO_ALL_V4_FILE}" "${AUTO_ALL_V6_FILE}" "${AUTO_RIPE_V4_FILE}"; do
|
|
[ -f "${source_file}" ] || continue
|
|
awk -v pattern="${VK_NAME_PATTERN}" 'BEGIN { IGNORECASE = 1 } $0 ~ pattern { print $1 }' "${source_file}" >> "${TMP_VK_FILE}"
|
|
done
|
|
|
|
sort -u "${TMP_VK_FILE}" > "${VK_INPUT_FILE}"
|
|
grep ':' "${VK_INPUT_FILE}" | sort -u > "${VK_INPUT_V6_FILE}" || true
|
|
grep -v ':' "${VK_INPUT_FILE}" | sort -u > "${VK_INPUT_V4_FILE}" || true
|
|
rm -f "${TMP_VK_FILE}"
|
|
|
|
# Generate IPv4 routes file (route VK prefixes to loopback via 127.0.0.1)
|
|
cat > "${ROUTES_V4_FILE}" << EOF
|
|
# Linux routes for VK networks (IPv4)
|
|
# Auto-generated by $(basename "$0")
|
|
# Last updated: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
|
|
#
|
|
# Apply:
|
|
# sudo sh $(basename "${ROUTES_V4_FILE}")
|
|
#
|
|
|
|
EOF
|
|
|
|
while IFS= read -r network; do
|
|
[ -n "${network}" ] || continue
|
|
printf 'ip route replace %s via 127.0.0.1 dev lo onlink\n' "${network}" >> "${ROUTES_V4_FILE}"
|
|
done < "${VK_INPUT_V4_FILE}"
|
|
|
|
# Generate IPv6 routes file (route VK prefixes to loopback via ::1)
|
|
cat > "${ROUTES_V6_FILE}" << EOF
|
|
# Linux routes for VK networks (IPv6)
|
|
# Auto-generated by $(basename "$0")
|
|
# Last updated: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
|
|
#
|
|
# Apply:
|
|
# sudo sh $(basename "${ROUTES_V6_FILE}")
|
|
#
|
|
|
|
EOF
|
|
|
|
while IFS= read -r network; do
|
|
[ -n "${network}" ] || continue
|
|
printf 'ip -6 route replace %s via ::1 dev lo\n' "${network}" >> "${ROUTES_V6_FILE}"
|
|
done < "${VK_INPUT_V6_FILE}"
|
|
|
|
echo "✓ Generated: ${ROUTES_V4_FILE} (entries: $(wc -l < "${VK_INPUT_V4_FILE}" | tr -d ' '))"
|
|
echo "✓ Generated: ${ROUTES_V6_FILE} (entries: $(wc -l < "${VK_INPUT_V6_FILE}" | tr -d ' '))"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " sudo sh ${ROUTES_V4_FILE}"
|
|
echo " sudo sh ${ROUTES_V6_FILE}"
|