Add ignored domains via env statement
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 1m37s
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 1m37s
This commit is contained in:
parent
8a0924c36c
commit
594320b601
3 changed files with 43 additions and 1 deletions
|
|
@ -29,6 +29,8 @@ jobs:
|
||||||
# Имя контейнера Pi-hole
|
# Имя контейнера Pi-hole
|
||||||
DOCKER_CONTAINER: pihole
|
DOCKER_CONTAINER: pihole
|
||||||
|
|
||||||
|
IGNORE_PARTS: "doubleclick google yandex"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ jobs:
|
||||||
API_URL: http://10.100.1.2:3000/domains?domain=
|
API_URL: http://10.100.1.2:3000/domains?domain=
|
||||||
TARGET_DIR: /opt/appdata/pihole/etc/dnsmasq.d
|
TARGET_DIR: /opt/appdata/pihole/etc/dnsmasq.d
|
||||||
DOCKER_CONTAINER: pihole
|
DOCKER_CONTAINER: pihole
|
||||||
|
IGNORE_PARTS: "doubleclick google yandex"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ RESOLVE_CONF="${RESOLVE_CONF:-/tmp/92-resolve-bbrkn.conf}"
|
||||||
API_URL="${CHROME_SERVER:-http://127.0.0.1:3000}/domains?domain="
|
API_URL="${CHROME_SERVER:-http://127.0.0.1:3000}/domains?domain="
|
||||||
DNS_SERVER="${DNS_SERVER:-8.8.8.8}"
|
DNS_SERVER="${DNS_SERVER:-8.8.8.8}"
|
||||||
|
|
||||||
|
# Игнорируемые части доменов (разделитель — пробел)
|
||||||
|
IGNORE_PARTS="${IGNORE_PARTS:-}"
|
||||||
|
|
||||||
# Debug knobs
|
# Debug knobs
|
||||||
DEBUG="${DEBUG:-0}"
|
DEBUG="${DEBUG:-0}"
|
||||||
DEBUG_LOG="${DEBUG_LOG:-/tmp/generate-configs.debug.log}"
|
DEBUG_LOG="${DEBUG_LOG:-/tmp/generate-configs.debug.log}"
|
||||||
|
|
@ -32,7 +35,7 @@ if ! command -v jq >/dev/null 2>&1; then err "jq is required"; exit 2; fi
|
||||||
if [ "$DEBUG" != "0" ]; then : > "$DEBUG_LOG"; dbg "Debugging enabled"; fi
|
if [ "$DEBUG" != "0" ]; then : > "$DEBUG_LOG"; dbg "Debugging enabled"; fi
|
||||||
|
|
||||||
log "Starting generate-configs.sh"
|
log "Starting generate-configs.sh"
|
||||||
dbg "ENV: INPUT_FILE=$INPUT_FILE IPSET_CONF=$IPSET_CONF RESOLVE_CONF=$RESOLVE_CONF API_URL=$API_URL DNS_SERVER=$DNS_SERVER DRY_RUN=$DRY_RUN"
|
dbg "ENV: INPUT_FILE=$INPUT_FILE IPSET_CONF=$IPSET_CONF RESOLVE_CONF=$RESOLVE_CONF API_URL=$API_URL DNS_SERVER=$DNS_SERVER IGNORE_PARTS='$IGNORE_PARTS' DRY_RUN=$DRY_RUN"
|
||||||
|
|
||||||
if ! $DRY_RUN; then
|
if ! $DRY_RUN; then
|
||||||
: > "$IPSET_CONF"
|
: > "$IPSET_CONF"
|
||||||
|
|
@ -45,12 +48,16 @@ declare -A SOURCES
|
||||||
declare -A ERRORS
|
declare -A ERRORS
|
||||||
declare -A VALID_SITES
|
declare -A VALID_SITES
|
||||||
|
|
||||||
|
# для отчёта по игнорируемым доменам
|
||||||
|
declare -A IGNORED_DOMAINS
|
||||||
|
|
||||||
total_lines=0
|
total_lines=0
|
||||||
normalized_ok=0
|
normalized_ok=0
|
||||||
normalized_skip=0
|
normalized_skip=0
|
||||||
api_success=0
|
api_success=0
|
||||||
api_error=0
|
api_error=0
|
||||||
related_total=0
|
related_total=0
|
||||||
|
ignored_total=0
|
||||||
|
|
||||||
normalize_domain() {
|
normalize_domain() {
|
||||||
local raw="$1"
|
local raw="$1"
|
||||||
|
|
@ -64,6 +71,18 @@ normalize_domain() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
should_ignore_domain() {
|
||||||
|
local dom="$1"
|
||||||
|
for part in $IGNORE_PARTS; do
|
||||||
|
if [[ "$dom" == *"$part"* ]]; then
|
||||||
|
dbg " -> IGNORE domain '$dom' (matched '$part')"
|
||||||
|
IGNORED_DOMAINS["$dom"]="$part"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
if [ ! -f "$INPUT_FILE" ]; then
|
if [ ! -f "$INPUT_FILE" ]; then
|
||||||
err "Input file not found: $INPUT_FILE"
|
err "Input file not found: $INPUT_FILE"
|
||||||
exit 3
|
exit 3
|
||||||
|
|
@ -87,6 +106,12 @@ while IFS= read -r line || [ -n "$line" ]; do
|
||||||
normalized_ok=$((normalized_ok+1))
|
normalized_ok=$((normalized_ok+1))
|
||||||
dbg " -> NORMALIZED: $dom_norm"
|
dbg " -> NORMALIZED: $dom_norm"
|
||||||
|
|
||||||
|
# Игнорируем по подстрокам
|
||||||
|
if should_ignore_domain "$dom_norm"; then
|
||||||
|
ignored_total=$((ignored_total+1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
max_attempts=5
|
max_attempts=5
|
||||||
attempt=0
|
attempt=0
|
||||||
resp=""
|
resp=""
|
||||||
|
|
@ -155,6 +180,12 @@ while IFS= read -r line || [ -n "$line" ]; do
|
||||||
for s in "${subs[@]}"; do
|
for s in "${subs[@]}"; do
|
||||||
nd="$(normalize_domain "$s" || true)"
|
nd="$(normalize_domain "$s" || true)"
|
||||||
[ -z "$nd" ] && continue
|
[ -z "$nd" ] && continue
|
||||||
|
|
||||||
|
if should_ignore_domain "$nd"; then
|
||||||
|
ignored_total=$((ignored_total+1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
EXPANDED["$nd"]=1
|
EXPANDED["$nd"]=1
|
||||||
[ -z "${SOURCES[$nd]:-}" ] && SOURCES["$nd"]="related"
|
[ -z "${SOURCES[$nd]:-}" ] && SOURCES["$nd"]="related"
|
||||||
related_total=$((related_total+1))
|
related_total=$((related_total+1))
|
||||||
|
|
@ -177,6 +208,7 @@ echo "Raw input lines: $raw_total_lines"
|
||||||
echo "Processed lines: $total_lines"
|
echo "Processed lines: $total_lines"
|
||||||
echo "Normalized OK: $normalized_ok"
|
echo "Normalized OK: $normalized_ok"
|
||||||
echo "Normalized skipped: $normalized_skip"
|
echo "Normalized skipped: $normalized_skip"
|
||||||
|
echo "Ignored (by IGNORE_PARTS): $ignored_total"
|
||||||
echo
|
echo
|
||||||
echo "API success (sites): $api_success"
|
echo "API success (sites): $api_success"
|
||||||
echo "API error/ignored: $api_error"
|
echo "API error/ignored: $api_error"
|
||||||
|
|
@ -185,6 +217,13 @@ echo "Final unique domains: ${#ALL_DOMAINS[@]}"
|
||||||
echo
|
echo
|
||||||
echo "---- VALID BASE SITES ----"
|
echo "---- VALID BASE SITES ----"
|
||||||
printf '%s\n' "${!VALID_SITES[@]}" | sort
|
printf '%s\n' "${!VALID_SITES[@]}" | sort
|
||||||
|
echo
|
||||||
|
if [ "$ignored_total" -gt 0 ]; then
|
||||||
|
echo "---- IGNORED DOMAINS ----"
|
||||||
|
for d in $(printf '%s\n' "${!IGNORED_DOMAINS[@]}" | sort); do
|
||||||
|
printf '%s (matched: %s)\n' "$d" "${IGNORED_DOMAINS[$d]}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
echo "===== END DEBUG REPORT ====="
|
echo "===== END DEBUG REPORT ====="
|
||||||
|
|
||||||
if [ "$DEBUG" != "0" ]; then
|
if [ "$DEBUG" != "0" ]; then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue