Remove a lot of TG domainsm, rewrite scripts
All checks were successful
Deploy DNS Configuration / deploy (push) Successful in 2m15s

This commit is contained in:
Kirill Kodanev 2025-09-12 15:30:31 +03:00
parent 72bbdc2457
commit 5f0e287b98
5 changed files with 61 additions and 139 deletions

View file

@ -13,8 +13,8 @@ jobs:
INPUT_FILE: domains.txt INPUT_FILE: domains.txt
# Временные конфиги (куда пишутся generate-configs.sh) # Временные конфиги (куда пишутся generate-configs.sh)
IPSET_CONF: 91-ipset-bbrkn.conf IPSET_CONF: /tmp/91-ipset-bbrkn.conf
RESOLVE_CONF: 92-resolve-bbrkn.conf RESOLVE_CONF: /tmp/92-resolve-bbrkn.conf
# DNS-сервер для резолвинга # DNS-сервер для резолвинга
DNS_SERVER: 8.8.8.8 DNS_SERVER: 8.8.8.8

View file

@ -1,46 +1,47 @@
# ========================== # ===============================
# Makefile для проекта BBRKN # Makefile для управления dnsmasq-конфигами
# ========================== # ===============================
DOMAINS := domains.txt # --- Переменные окружения (с дефолтами для локального запуска) ---
GEN_SCRIPT := ./scripts/generate-configs.sh IPSET_CONF ?= /tmp/91-ipset-bbrkn.conf
DEPLOY_SCRIPT := ./scripts/deploy-to-gateway.sh RESOLVE_CONF ?= /tmp/92-resolve-bbrkn.conf
CHROME_SERVER ?= http://10.100.1.2:3000
DOMAINS_FILE ?= domains.txt
IPSET_CONF := 91-ipset-bbrkn.conf # Экспортируем переменные, чтобы они были доступны внутри shell-скриптов
RESOLVE_CONF := 92-resolve-bbrkn.conf export IPSET_CONF RESOLVE_CONF CHROME_SERVER DOMAINS_FILE
# Генерация конфигов # --- Основные цели ---
generate: .PHONY: all clean check generate deploy
@echo ">>> Генерация конфигурационных файлов из $(DOMAINS)"
$(GEN_SCRIPT)
# Тестовый прогон (генерация + просмотр кусков файлов, но без деплоя) all: generate deploy
test: generate @echo "✅ Конфиги успешно сгенерированы и задеплоены"
@echo ">>> Тестовый прогон (без деплоя)"
@echo "--- IPSET CONFIG ($(IPSET_CONF)) ---"
@head -n 10 $(IPSET_CONF) || true
@echo "... (всего $$(wc -l < $(IPSET_CONF)) строк)"
@echo
@echo "--- RESOLVE CONFIG ($(RESOLVE_CONF)) ---"
@head -n 10 $(RESOLVE_CONF) || true
@echo "... (всего $$(wc -l < $(RESOLVE_CONF)) строк)"
# Проверка: только сводка из generate-configs.sh
check:
@echo ">>> Проверка списка доменов (без генерации файлов)"
$(GEN_SCRIPT) --dry-run
# Деплой на шлюз (Pi-hole)
deploy: generate
@echo ">>> Деплой на шлюз"
$(DEPLOY_SCRIPT)
# Полный цикл: генерация + деплой
all: deploy
# Уборка временных файлов
clean: clean:
@echo ">>> Удаление временных файлов" @echo "🧹 Очистка временных файлов"
@rm -f $(IPSET_CONF) $(RESOLVE_CONF) @rm -f $(IPSET_CONF) $(RESOLVE_CONF)
.PHONY: generate test check deploy all clean check:
@echo "🔍 Проверка файла доменов ($(DOMAINS_FILE))"
@if [ ! -f "$(DOMAINS_FILE)" ]; then \
echo "Ошибка: файл $(DOMAINS_FILE) не найден"; \
exit 1; \
fi
@grep -v '^#' $(DOMAINS_FILE) | grep -v '^$$' | while read domain; do \
if ! echo "$$domain" | grep -qE '^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$$'; then \
echo "Ошибка: Неверный формат домена: $$domain"; \
exit 1; \
fi \
done
@echo "✔ Файл доменов прошёл проверку"
generate:
@echo "⚙ Генерация dnsmasq-конфигов"
@chmod +x scripts/generate-configs.sh
@./scripts/generate-configs.sh
deploy:
@echo "🚀 Деплой конфигов в систему"
@chmod +x scripts/deploy-to-gateway.sh
@./scripts/deploy-to-gateway.sh

View file

@ -29,8 +29,6 @@ spotify.com.edgesuite.net
spotify.map.fastly.net spotify.map.fastly.net
spotify.map.fastlylb.net spotify.map.fastlylb.net
netify.ai netify.ai
public-family.api.account.microsoft.com
family.microsoft.com
router-switch.com router-switch.com
fast.com fast.com
hetzner.com hetzner.com
@ -46,24 +44,13 @@ youtubei.googleapis.com
ytimg.com ytimg.com
yt3.ggpht.com yt3.ggpht.com
yt4.ggpht.com yt4.ggpht.com
youtube.com
youtubeembeddedplayer.googleapis.com
ytimg.l.google.com ytimg.l.google.com
jnn-pa.googleapis.com
youtube-nocookie.com
youtube-ui.l.google.com
yt-video-upload.l.google.com
wide-youtube.l.google.com
1337x.to 1337x.to
akamai.steamstatic.com akamai.steamstatic.com
api.telegram.org api.telegram.org
api.themoviedb.org api.themoviedb.org
api.twitter.com api.twitter.com
app.telegram.org
artifacts.elastic.co artifacts.elastic.co
a.telegram.org
autoconfig.telegram.org
autodiscover.telegram.org
booktracker.org booktracker.org
bt1.t-ru.org bt1.t-ru.org
bt2.rutracker.cc bt2.rutracker.cc
@ -72,99 +59,56 @@ bt3.rutracker.cc
bt3.t-ru.org bt3.t-ru.org
bt4.rutracker.cc bt4.rutracker.cc
bt4.t-ru.org bt4.t-ru.org
b.telegram.org
bt.rutracker.cc bt.rutracker.cc
bt.t-ru.org bt.t-ru.org
canva.com canva.com
cdn-client.medium.com cdn-client.medium.com
cdn.cookielaw.org cdn.cookielaw.org
cdn.telegram.org
cloud.ibm.com cloud.ibm.com
cloud.telegram.org
core.telegram.org
cpanel.telegram.org
cp.telegram.org
c.telegram.org
currenttime.tv currenttime.tv
dellcdn.com dellcdn.com
dell.com dell.com
demo.telegram.org
desktop.telegram.org
de.telegram.org
dnm.telegram.org
desktop.telegram.org
download.dell.com download.dell.com
download.freebsd.org download.freebsd.org
download.telegram.org
doxajournal.ru doxajournal.ru
duckduckgo.com duckduckgo.com
dw.com dw.com
dyn.telegram.org
echo.msk.ru echo.msk.ru
en.telegram.org
flibusta.is flibusta.is
flora-1.web.telegram.org
forum.telegram.org
forum.xda-developers.com forum.xda-developers.com
git.FreeBSD.org git.FreeBSD.org
googleapis.com googleapis.com
googlevideo.com googlevideo.com
go.telegram.org
graph.instagram.com graph.instagram.com
gvt1.com gvt1.com
hdclub.org hdclub.org
help.telegram.org
hide.me hide.me
home.telegram.org
i.dell.com i.dell.com
id.trimble.com id.trimble.com
images.telegram.org
image.tmdb.org image.tmdb.org
img.telegram.org
inbound.telegram.org
info.telegram.org
infra-cdn.elastic.co infra-cdn.elastic.co
ipic.su ipic.su
ip.telegram.org
ipv6.telegram.org
i.ytimg.com i.ytimg.com
kinogo.by kinogo.by
kinozal.me kinozal.me
kinozal.tv kinozal.tv
linkedin.com linkedin.com
linuxserver.io linuxserver.io
liveupdate.telegram.org
login.sketchup.co login.sketchup.co
login.telegram.org
lostfilm.tv lostfilm.tv
mdm.telegram.org
media.telegram.org
medium.com medium.com
meduza.io meduza.io
miped.ru miped.ru
ml.telegram.org
mobile.telegram.org
mods.linuxserver.io mods.linuxserver.io
mongo.telegram.org
m.telegram.org
mysql.telegram.org
newstudio.tv newstudio.tv
nnm-club.me nnm-club.me
nnmclub.to nnmclub.to
nyaa.si nyaa.si
office.telegram.org
old.telegram.org
openvswitch.org openvswitch.org
outlook.telegram.org
pbs.twimg.com pbs.twimg.com
pluto-1.web.telegram.org
pluto.web.telegram.org
poligon.media poligon.media
pop3.telegram.org
pornhub.com pornhub.com
portal.telegram.org
rarbg.to rarbg.to
remote.telegram.org
ru.linkedin.com ru.linkedin.com
rutor.info rutor.info
rutor.rg rutor.rg
@ -173,20 +117,11 @@ rutracker.org
rutrk.org rutrk.org
scontent-hel3-1.cdninstagram.com scontent-hel3-1.cdninstagram.com
seasonvar.ru seasonvar.ru
secure.telegram.org
server1.telegram.org
server.telegram.org
shop.telegram.org
sip.telegram.org
sketchup.com sketchup.com
snap.licdn.com snap.licdn.com
sonic-net.github.io sonic-net.github.io
ssl.telegram.org
sslvpn.telegram.org
stage.telegram.org
static.cdninstagram.com static.cdninstagram.com
static.rutracker.cc static.rutracker.cc
static.telegram.org
static.t-ru.org static.t-ru.org
steamstatic.com steamstatic.com
store.akamai.steamstatic.com store.akamai.steamstatic.com
@ -209,22 +144,7 @@ tracker.pirateparty.gr
t-ru.org t-ru.org
tvrain.ru tvrain.ru
twitter.com twitter.com
upload.telegram.org
venus-1.web.telegram.org
venus.web.telegram.org
vesta-1.web.telegram.org
vesta.web.telegram.org
video.google.com video.google.com
vpn.telegram.org
wap.telegram.org
webdisk.telegram.org
webmail.telegram.org
web.telegram.org
whm.telegram.org
wiki.telegram.org
wp.telegram.org
ww1.telegram.org
www1.telegram.org
www1.thepiratebay3.to www1.thepiratebay3.to
www2.telegram.org www2.telegram.org
www.autodesk.com www.autodesk.com
@ -248,11 +168,6 @@ www.svoboda.org
www.torproject.org www.torproject.org
www.youtube.com www.youtube.com
xda-developers.com xda-developers.com
youtu.be
youtube.com
youtubeeducation.com
youtubekids.com
youtube-nocookie.com
youtube-ui.l.google.com youtube-ui.l.google.com
yt3.ggpht.com yt3.ggpht.com
yt.be yt.be

View file

@ -2,27 +2,33 @@
set -euo pipefail set -euo pipefail
# ============================== # ==============================
# Конфигурация через переменные # Конфигурация через переменные окружения
# ============================== # ==============================
TARGET_DIR="${TARGET_DIR:-/opt/appdata/pihole/etc/dnsmasq.d}" TARGET_DIR="${TARGET_DIR:-/opt/appdata/pihole/etc/dnsmasq.d}"
IPSET_CONF="${IPSET_CONF:-91-ipset-bbrkn.conf}" IPSET_CONF="${IPSET_CONF:-/tmp/91-ipset-bbrkn.conf}"
RESOLVE_CONF="${RESOLVE_CONF:-92-resolve-bbrkn.conf}" RESOLVE_CONF="${RESOLVE_CONF:-/tmp/92-resolve-bbrkn.conf}"
DOCKER_CONTAINER="${DOCKER_CONTAINER:-pihole}" DOCKER_CONTAINER="${DOCKER_CONTAINER:-pihole}"
echo "Deploying configuration files to $TARGET_DIR" echo "Deploying configuration files to $TARGET_DIR"
# Бэкап существующих файлов # Проверка существования сгенерированных файлов
if [ -f "$TARGET_DIR/$IPSET_CONF" ]; then if [ ! -f "$IPSET_CONF" ] || [ ! -f "$RESOLVE_CONF" ]; then
cp "$TARGET_DIR/$IPSET_CONF" "$TARGET_DIR/$IPSET_CONF.backup.$(date +%Y%m%d-%H%M%S)" echo "Error: one or both config files not found!"
exit 1
fi fi
if [ -f "$TARGET_DIR/$RESOLVE_CONF" ]; then
cp "$TARGET_DIR/$RESOLVE_CONF" "$TARGET_DIR/$RESOLVE_CONF.backup.$(date +%Y%m%d-%H%M%S)" # Бэкап существующих файлов
if [ -f "$TARGET_DIR/$(basename "$IPSET_CONF")" ]; then
cp "$TARGET_DIR/$(basename "$IPSET_CONF")" "$TARGET_DIR/$(basename "$IPSET_CONF").backup.$(date +%Y%m%d-%H%M%S)"
fi
if [ -f "$TARGET_DIR/$(basename "$RESOLVE_CONF")" ]; then
cp "$TARGET_DIR/$(basename "$RESOLVE_CONF")" "$TARGET_DIR/$(basename "$RESOLVE_CONF").backup.$(date +%Y%m%d-%H%M%S)"
fi fi
# Копирование новых файлов # Копирование новых файлов
cp "/tmp/$IPSET_CONF" "$TARGET_DIR/$IPSET_CONF" cp "$IPSET_CONF" "$TARGET_DIR/"
cp "/tmp/$RESOLVE_CONF" "$TARGET_DIR/$RESOLVE_CONF" cp "$RESOLVE_CONF" "$TARGET_DIR/"
# Перезапуск контейнера # Перезапуск контейнера
echo "Restarting $DOCKER_CONTAINER container..." echo "Restarting $DOCKER_CONTAINER container..."
@ -35,5 +41,5 @@ if ! docker ps | grep -q "$DOCKER_CONTAINER"; then
fi fi
echo "Deployment completed successfully" echo "Deployment completed successfully"
DOMAIN_COUNT=$(grep -c '^ipset=' "$TARGET_DIR/$IPSET_CONF" || echo "0") DOMAIN_COUNT=$(grep -c '^ipset=' "$TARGET_DIR/$(basename "$IPSET_CONF")" || echo "0")
echo "Applied configuration for $DOMAIN_COUNT domains" echo "Applied configuration for $DOMAIN_COUNT domains"

View file

@ -2,14 +2,14 @@
set -euo pipefail set -euo pipefail
# ============================== # ==============================
# Конфигурация через переменные # Конфигурация через переменные окружения
# ============================== # ==============================
INPUT_FILE="${INPUT_FILE:-domains.txt}" INPUT_FILE="${DOMAINS_FILE:-domains.txt}"
IPSET_CONF="${IPSET_CONF:-/tmp/91-ipset-bbrkn.conf}" IPSET_CONF="${IPSET_CONF:-/tmp/91-ipset-bbrkn.conf}"
RESOLVE_CONF="${RESOLVE_CONF:-/tmp/92-resolve-bbrkn.conf}" RESOLVE_CONF="${RESOLVE_CONF:-/tmp/92-resolve-bbrkn.conf}"
API_URL="${API_URL:-http://10.100.1.2: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}"
DRY_RUN=false DRY_RUN=false