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
# Временные конфиги (куда пишутся generate-configs.sh)
IPSET_CONF: 91-ipset-bbrkn.conf
RESOLVE_CONF: 92-resolve-bbrkn.conf
IPSET_CONF: /tmp/91-ipset-bbrkn.conf
RESOLVE_CONF: /tmp/92-resolve-bbrkn.conf
# DNS-сервер для резолвинга
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
DEPLOY_SCRIPT := ./scripts/deploy-to-gateway.sh
# --- Переменные окружения (с дефолтами для локального запуска) ---
IPSET_CONF ?= /tmp/91-ipset-bbrkn.conf
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
RESOLVE_CONF := 92-resolve-bbrkn.conf
# Экспортируем переменные, чтобы они были доступны внутри shell-скриптов
export IPSET_CONF RESOLVE_CONF CHROME_SERVER DOMAINS_FILE
# Генерация конфигов
generate:
@echo ">>> Генерация конфигурационных файлов из $(DOMAINS)"
$(GEN_SCRIPT)
# --- Основные цели ---
.PHONY: all clean check generate deploy
# Тестовый прогон (генерация + просмотр кусков файлов, но без деплоя)
test: generate
@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)) строк)"
all: generate deploy
@echo "✅ Конфиги успешно сгенерированы и задеплоены"
# Проверка: только сводка из generate-configs.sh
check:
@echo ">>> Проверка списка доменов (без генерации файлов)"
$(GEN_SCRIPT) --dry-run
# Деплой на шлюз (Pi-hole)
deploy: generate
@echo ">>> Деплой на шлюз"
$(DEPLOY_SCRIPT)
# Полный цикл: генерация + деплой
all: deploy
# Уборка временных файлов
clean:
@echo ">>> Удаление временных файлов"
@echo "🧹 Очистка временных файлов"
@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.fastlylb.net
netify.ai
public-family.api.account.microsoft.com
family.microsoft.com
router-switch.com
fast.com
hetzner.com
@ -46,24 +44,13 @@ youtubei.googleapis.com
ytimg.com
yt3.ggpht.com
yt4.ggpht.com
youtube.com
youtubeembeddedplayer.googleapis.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
akamai.steamstatic.com
api.telegram.org
api.themoviedb.org
api.twitter.com
app.telegram.org
artifacts.elastic.co
a.telegram.org
autoconfig.telegram.org
autodiscover.telegram.org
booktracker.org
bt1.t-ru.org
bt2.rutracker.cc
@ -72,99 +59,56 @@ bt3.rutracker.cc
bt3.t-ru.org
bt4.rutracker.cc
bt4.t-ru.org
b.telegram.org
bt.rutracker.cc
bt.t-ru.org
canva.com
cdn-client.medium.com
cdn.cookielaw.org
cdn.telegram.org
cloud.ibm.com
cloud.telegram.org
core.telegram.org
cpanel.telegram.org
cp.telegram.org
c.telegram.org
currenttime.tv
dellcdn.com
dell.com
demo.telegram.org
desktop.telegram.org
de.telegram.org
dnm.telegram.org
desktop.telegram.org
download.dell.com
download.freebsd.org
download.telegram.org
doxajournal.ru
duckduckgo.com
dw.com
dyn.telegram.org
echo.msk.ru
en.telegram.org
flibusta.is
flora-1.web.telegram.org
forum.telegram.org
forum.xda-developers.com
git.FreeBSD.org
googleapis.com
googlevideo.com
go.telegram.org
graph.instagram.com
gvt1.com
hdclub.org
help.telegram.org
hide.me
home.telegram.org
i.dell.com
id.trimble.com
images.telegram.org
image.tmdb.org
img.telegram.org
inbound.telegram.org
info.telegram.org
infra-cdn.elastic.co
ipic.su
ip.telegram.org
ipv6.telegram.org
i.ytimg.com
kinogo.by
kinozal.me
kinozal.tv
linkedin.com
linuxserver.io
liveupdate.telegram.org
login.sketchup.co
login.telegram.org
lostfilm.tv
mdm.telegram.org
media.telegram.org
medium.com
meduza.io
miped.ru
ml.telegram.org
mobile.telegram.org
mods.linuxserver.io
mongo.telegram.org
m.telegram.org
mysql.telegram.org
newstudio.tv
nnm-club.me
nnmclub.to
nyaa.si
office.telegram.org
old.telegram.org
openvswitch.org
outlook.telegram.org
pbs.twimg.com
pluto-1.web.telegram.org
pluto.web.telegram.org
poligon.media
pop3.telegram.org
pornhub.com
portal.telegram.org
rarbg.to
remote.telegram.org
ru.linkedin.com
rutor.info
rutor.rg
@ -173,20 +117,11 @@ rutracker.org
rutrk.org
scontent-hel3-1.cdninstagram.com
seasonvar.ru
secure.telegram.org
server1.telegram.org
server.telegram.org
shop.telegram.org
sip.telegram.org
sketchup.com
snap.licdn.com
sonic-net.github.io
ssl.telegram.org
sslvpn.telegram.org
stage.telegram.org
static.cdninstagram.com
static.rutracker.cc
static.telegram.org
static.t-ru.org
steamstatic.com
store.akamai.steamstatic.com
@ -209,22 +144,7 @@ tracker.pirateparty.gr
t-ru.org
tvrain.ru
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
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
www2.telegram.org
www.autodesk.com
@ -248,11 +168,6 @@ www.svoboda.org
www.torproject.org
www.youtube.com
xda-developers.com
youtu.be
youtube.com
youtubeeducation.com
youtubekids.com
youtube-nocookie.com
youtube-ui.l.google.com
yt3.ggpht.com
yt.be

View file

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

View file

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