Compare commits
5 commits
e82618a096
...
c3a30da18f
| Author | SHA1 | Date | |
|---|---|---|---|
| c3a30da18f | |||
| 01d6bf5cd8 | |||
| 884be83ff6 | |||
| d91dbf066b | |||
| cb804b1eec |
2 changed files with 35 additions and 2 deletions
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue