Compare commits

..

5 commits

Author SHA1 Message Date
c3a30da18f fix ordered domain 2026-03-22 22:59:49 +03:00
01d6bf5cd8 Update domains.txt
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 7m47s
2026-03-22 22:04:46 +03:00
884be83ff6 Update domains.txt
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 7m42s
2026-03-22 16:57:43 +03:00
d91dbf066b ADD DOMAIN: notebooklm.google
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 7m43s
2026-03-22 07:25:35 +03:00
cb804b1eec Merge pull request 'refactor' (#10) from refactor into main
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 7m41s
Reviewed-on: #10
2026-03-21 22:15:14 +03:00
2 changed files with 35 additions and 2 deletions

View file

@ -1,4 +1,7 @@
ab.chatgpt.com ab.chatgpt.com
chatgpt.com
chat.openai.com
searchgpt.com
api.telegram.org api.telegram.org
api.themoviedb.org api.themoviedb.org
artifacts.elastic.co artifacts.elastic.co
@ -170,3 +173,6 @@ i.ytimg.com
www.chess.com www.chess.com
marketplace.visualstudio.com marketplace.visualstudio.com
files.oaiusercontent.com files.oaiusercontent.com
notebooklm.google
notebooklm.google.com
maps-cdn.zepp.com

View file

@ -250,15 +250,21 @@ declare -a ORDERED_DOMS=()
for dom in $(printf '%s\n' "${!EXPANDED[@]}" | sort -u); do for dom in $(printf '%s\n' "${!EXPANDED[@]}" | sort -u); do
[[ "${SOURCES[$dom]:-}" == "related" ]] && continue [[ "${SOURCES[$dom]:-}" == "related" ]] && continue
# Базовый домен мог быть добавлен как related другим базовым доменом раньше по
# алфавиту — пропускаем, чтобы не дублировать запись в конфиге.
[[ -n "${WRITTEN[$dom]:-}" ]] && continue
# Собираем ещё не записанные связанные домены. # Собираем ещё не записанные связанные домены.
# while выполняется в subshell — читает снимок WRITTEN, что корректно исключает # while выполняется в subshell — читает снимок WRITTEN, что корректно исключает
# домены, уже занятые предыдущим базовым доменом. # домены, уже занятые предыдущим базовым доменом.
# Базовые домены (SOURCES==base) пропускаем — у них будет своя секция.
mapfile -t base_related < <( mapfile -t base_related < <(
if [[ -n "${SITE_RELATED[$dom]:-}" ]]; then if [[ -n "${SITE_RELATED[$dom]:-}" ]]; then
tr ' ' '\n' <<< "${SITE_RELATED[$dom]}" | grep -v '^$' | sort -u | \ tr ' ' '\n' <<< "${SITE_RELATED[$dom]}" | grep -v '^$' | sort -u | \
while IFS= read -r rd; do while IFS= read -r rd; do
[[ -z "${WRITTEN[$rd]:-}" ]] && printf '%s\n' "$rd" [[ -n "${WRITTEN[$rd]:-}" ]] && continue
[[ "${SOURCES[$rd]:-}" == "base" ]] && continue
printf '%s\n' "$rd"
done done
fi fi
) )
@ -281,6 +287,27 @@ done
mapfile -t ALL_DOMAINS < <(printf "%s\n" "${!EXPANDED[@]}" | sort -u) mapfile -t ALL_DOMAINS < <(printf "%s\n" "${!EXPANDED[@]}" | sort -u)
# ==============================
# Проверка уникальности ORDERED_DOMS перед записью
# ==============================
declare -A _seen=()
declare -a _dups=()
for _d in "${ORDERED_DOMS[@]}"; do
if [[ -n "${_seen[$_d]:-}" ]]; then
_dups+=("$_d")
fi
_seen["$_d"]=1
done
unset _seen
if [[ ${#_dups[@]} -gt 0 ]]; then
err "BUG: ${#_dups[@]} duplicate domain(s) found in output list — config NOT written"
for _d in "${_dups[@]}"; do
err " duplicate: $_d"
done
exit 5
fi
# Записываем конфиги одним батчем (не по одной строке через >>) # Записываем конфиги одним батчем (не по одной строке через >>)
if ! $DRY_RUN; then if ! $DRY_RUN; then
{ {