diff --git a/README.md b/README.md index 4e7cd6b..c40ac99 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

3dp-manager preview

-![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) +![Version](https://img.shields.io/badge/version-1.0.1-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) # 3DP-MANAGER @@ -10,11 +10,13 @@ **Поддержать проект** -- Реквизиты / донаты: +- Банковским переводом: - Карта МИР: `2204320436318077` - Карта MasterCard: `5395452209474530` +- На электронный кошелек: - ЮМоney: `4100116897060652` - PayPal: `vasiljevdenisx@gmail.com` +- Криптовалютой: - USDT | ETH (ERC20 | BEP20): `0x6fe140040f6Cdc1E1Ff2136cd1d60C0165809463` - USDT | TRX (TRC20): `TEWxXmJxvkAmhshp7E61XJGHB3VyM9hNAb` - Bitcoin: `bc1qctntwncsv2yn02x2vgnkrqm00c4h04c0afkgpl` @@ -32,7 +34,7 @@ Все подключения объединяются в одну подписку со статичным URL. Бот работает с панелью `3x-ui` и не вмешивается в её работу напрямую, используя открытое API панели. -Вторичная цель — стабильность подключения: клиент получает 10 вариантов поключений и может выбрать любое из них. +Вторичная цель — стабильность подключения: клиент получает 10 вариантов подключений и может выбрать любое из них. Дополнительно: бот можно использовать в каскадной схеме. Сервис перенаправления автоматически настроит переадресацию подписки и трафика к основному серверу. @@ -51,14 +53,15 @@ ## Требования -- Ubuntu 20.04 (и выше) -- Панель `3x-ui` +- Ubuntu 20.04 (и выше), Debian 12.11 (и выше) +- Панель `3x-ui` v2.8.4 (и выше) - Домен + SSL сертификат (опционально) --- ## Установка +У вас должны быть установлены пакеты на сервере `curl`, `jq` командой: `apt install curl jq` и панель управления `3x-ui`, которую можно установить командой: `bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)` Установите проект на сервер командой: ```bash @@ -91,6 +94,9 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main ## Установка сервиса перенаправления (forwarding) +> [!WARNING] +> Сервис перенаправления работает на промежуточном сервере. + Сервис перенаправления позволяет проксировать входящие порты с промежуточного сервера на основной. ```bash @@ -127,7 +133,7 @@ cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' - node get_domains.js ``` -Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Неободим `Node.js` для работы скрипта. +Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим `Node.js` для работы скрипта. ## Использование собственного белого списка @@ -138,7 +144,7 @@ node get_domains.js cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt ``` -Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новыи списком, выполните `docker exec -it node sh` и затем `node index.js`. +Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новым списком, выполните `docker exec -it node sh` и затем `node index.js`. --- diff --git a/README_CN.md b/README_CN.md index e4d0b75..dbd90c4 100644 --- a/README_CN.md +++ b/README_CN.md @@ -2,7 +2,7 @@

3dp-manager preview

-![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) +![Version](https://img.shields.io/badge/version-1.0.1.1-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) # 3DP-MANAGER diff --git a/README_EN.md b/README_EN.md index 42919be..d6de078 100644 --- a/README_EN.md +++ b/README_EN.md @@ -2,7 +2,7 @@

3dp-manager preview

-![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) +![Version](https://img.shields.io/badge/version-1.0.1-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) # 3DP-MANAGER diff --git a/README_IR.md b/README_IR.md index f65de74..e573987 100644 --- a/README_IR.md +++ b/README_IR.md @@ -2,7 +2,7 @@

3dp-manager preview

-![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) +![Version](https://img.shields.io/badge/version-1.0.1-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) # 3DP-MANAGER diff --git a/README_TK.md b/README_TK.md index 7b5617e..18545bc 100644 --- a/README_TK.md +++ b/README_TK.md @@ -2,7 +2,7 @@

3dp-manager preview

-![Version](https://img.shields.io/badge/version-1.0-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) +![Version](https://img.shields.io/badge/version-1.0.1-blue.svg) [![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0) [![Telegram](https://img.shields.io/badge/Telegram-26A5E4?style=flat&logo=telegram&logoColor=white)](https://t.me/denpiligrim_web) [![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCOv2tFFYDY4mXOM60PVz8zw)](https://www.youtube.com/@denpiligrim) # 3DP-MANAGER diff --git a/app/index.js b/app/index.js index 56afa2e..0ef17cc 100644 --- a/app/index.js +++ b/app/index.js @@ -76,7 +76,10 @@ async function getFreePort(used) { while (true) { const p = Math.floor(Math.random() * (60000 - 10000)) + 10000; if (used.has(p)) continue; - if (await isPortFree(p)) return p; + if (await isPortFree(p)) { + used.add(p); + return p; + } } } @@ -187,8 +190,7 @@ async function rotate() { for (const b of builders) { const domain = pickDomain(whitelist); - const inbound = await b(domain); - usedPorts.add(inbound.port); + const inbound = await b(domain); const idOrPass = inbound.settings ? JSON.parse(inbound.settings).clients?.[0]?.id || JSON.parse(inbound.settings).clients?.[0]?.password : ""; // Build the link depending on the protocol @@ -210,8 +212,15 @@ async function rotate() { // Initial run rotate(); -let interval = parseInt(process.env.ROTATE_INTERVAL) || 30; -if (interval < 10) interval = 10; +let interval = parseInt(process.env.ROTATE_INTERVAL, 10); -const cronExpression = `*/${interval} * * * *`; -cron.schedule(cronExpression, rotate); \ No newline at end of file +if (isNaN(interval) || interval < 10) { + console.warn('⚠ Интервал некорректен или меньше 10 минут. Используется значение по умолчанию 30 минут.'); + interval = 30; +} + +const intervalMs = interval * 60 * 1000; + +console.log(`✔ Интервал ротации установлен: ${interval} минут`); + +setInterval(rotate, intervalMs); \ No newline at end of file diff --git a/delete.sh b/delete.sh index c3212b3..10fcbb2 100644 --- a/delete.sh +++ b/delete.sh @@ -17,7 +17,7 @@ need_root() { [[ $EUID -eq 0 ]] || die "Запускать только от root" } -read -r -p "Вы уверены, что хотите удалить? (y/N): " answer +read -r -p "Вы уверены, что хотите удалить? (y/n): " answer case "$answer" in y|Y) diff --git a/forwarding_delete.sh b/forwarding_delete.sh index 1854467..fd7bf78 100644 --- a/forwarding_delete.sh +++ b/forwarding_delete.sh @@ -14,7 +14,7 @@ warn() { echo -e "\033[1;33m[WARN]\033[0m $1"; } [[ $EUID -eq 0 ]] || { echo "Запускать нужно от root"; exit 1; } -read -r -p "Вы уверены, что хотите удалить? (y/N): " answer +read -r -p "Вы уверены, что хотите удалить? (y/n): " answer case "$answer" in y|Y) diff --git a/forwarding_install.sh b/forwarding_install.sh index debc6fd..c5e1d5b 100644 --- a/forwarding_install.sh +++ b/forwarding_install.sh @@ -15,6 +15,12 @@ die() { echo -e "\033[1;31m[ERROR]\033[0m $1"; exit 1; } [[ $EUID -eq 0 ]] || die "Запускать нужно от root" +# Check OS and set release variable +. /etc/os-release +if [[ "$ID" != "ubuntu" && "$ID" != "debian" ]]; then + die "Этот скрипт поддерживает только Ubuntu или Debian: $ID" +fi + ################################# # ASCII-баннер ################################# @@ -292,19 +298,33 @@ log "Проверка Docker" if command -v docker >/dev/null 2>&1; then log "Docker уже установлен" else - log "Docker не найден, будет установлен" + log "Docker не найден, будет установлен из официального репозитория" + # Add Docker's official GPG key: apt update - apt install -y docker.io || die "Ошибка установки docker.io" - systemctl enable docker - systemctl restart docker -fi + apt install ca-certificates curl + install -m 0755 -d /etc/apt/keyrings + if [[ "$ID" == "ubuntu" ]]; then + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker" + else + curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker" + fi + chmod a+r /etc/apt/keyrings/docker.asc -if docker compose version >/dev/null 2>&1; then - log "docker compose v2 доступен" -else - log "Устанавливаем docker-compose-v2" - apt install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \ - docker-compose-v2 || warn "docker-compose-v2 не установлен, возможно уже есть плагин" + # Add the repository to Apt sources: + CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} + tee /etc/apt/sources.list.d/docker.sources </dev/null 2>&1; then + echo "❌ Панель 3x-ui не найдена или не работает." + echo " Чтобы установить, выполните:" + echo "bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)" + exit 1 +fi + +echo "✔ Панель 3x-ui найдена и работает" + ################################# # ASCII-баннер ################################# @@ -45,9 +60,9 @@ echo "" ################################# # Function to get panel URL from 3x-ui get_xui_url() { - local output=$(x-ui settings 2>/dev/null) + local output=$(x-ui settings 2>/dev/null || true) - echo "$output" | sed 's/\x1b\[[0-9;]*m//g' | grep "Access URL:" | grep -oE 'https?://[^[:space:]]+' | head -n1 + echo "$output" | sed 's/\x1b\[[0-9;]*m//g' | grep "Access URL:" | grep -oE 'https?://[^[:space:]]+' | head -n1 || true } echo "Определяем URL панели 3x-ui..." @@ -60,21 +75,25 @@ if [[ -z "$UI_URL" ]]; then fi UI_URL=$(echo "$UI_URL" | sed -E 's/[[:space:]]*$//; s|/*$||') - -echo "URL панели 3x-ui: $UI_URL" - # Validate URL correctness validate_url "$UI_URL" || die "Некорректный URL панели 3x-ui: $UI_URL" +echo "URL панели 3x-ui: $UI_URL" + read -rp "Логин 3x-ui: " UI_LOGIN read -rsp "Пароль 3x-ui: " UI_PASSWORD echo [[ -z "$UI_LOGIN" || -z "$UI_PASSWORD" ]] && die "Логин/пароль обязательны" # Check login -LOGIN_RESPONSE=$(curl -s -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}") +if ! command -v curl >/dev/null 2>&1; then + echo "❌ curl не установлен. Установите curl и повторите попытку" + echo " apt install -y curl" + exit 1 +fi + +LOGIN_RESPONSE=$(curl -s -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}" || true) -# Проверка успешного логина по ключевому полю "success" или наличию куки if ! echo "$LOGIN_RESPONSE" | grep -q '"success":true'; then echo "Не удалось залогиниться в 3x-ui. Проверьте URL, логин и пароль." exit 1 @@ -109,7 +128,7 @@ fi # Input rotation interval read -rp "Интервал генерации инбаундов в минутах (от 10, по умолчанию 30): " ROTATE_INTERVAL -ROTATE_INTERVAL="${ROTATE_INTERVAL:-30}" # по умолчанию 30 +ROTATE_INTERVAL="${ROTATE_INTERVAL:-30}" # Check that it's a number and ≥10 if ! [[ "$ROTATE_INTERVAL" =~ ^[0-9]+$ ]] || [ "$ROTATE_INTERVAL" -lt 10 ]; then @@ -135,7 +154,13 @@ COUNTRY_FLAG="" IP_JSON=$(curl -s --fail http://ip-api.com/json/ || true) [ -z "$IP_JSON" ] && exit 0 -COUNTRY_CODE=$(echo "$IP_JSON" | jq -r '.countryCode // empty' 2>/dev/null) +if ! command -v jq >/dev/null 2>&1; then + echo "❌ Не найден jq. Для работы скрипта необходимо установить jq." + echo " apt install -y jq" + exit 1 +fi + +COUNTRY_CODE=$(echo "$IP_JSON" | jq -r '.countryCode // empty' 2>/dev/null || true) [ -z "$COUNTRY_CODE" ] && exit 0 # Flags JSON URL @@ -144,19 +169,22 @@ FLAGS_JSON_URL="$REPO_BASE/app/assets/flags.json" FLAGS_JSON=$(curl -s "$FLAGS_JSON_URL" || true) [ -z "$FLAGS_JSON" ] && exit 0 -# Ищем emoji +# emoji COUNTRY_FLAG=$(echo "$FLAGS_JSON" | jq -r --arg code "$COUNTRY_CODE" '.[] | select(.code == $code) | .emoji // empty' 2>/dev/null | head -n1) ################################# # Whitelist ################################# -curl -fsSL "$REPO_BASE/whitelist.txt" -o whitelist.txt -log "whitelist.txt скопирован" +if curl -fsSL "$REPO_BASE/whitelist.txt" -o whitelist.txt; then + log "whitelist.txt скопирован" +else + log "⚠ Не удалось скачать whitelist.txt" +fi ################################# # TOKEN GENERATION ################################# -SUB_TOKEN="$(openssl rand -hex 24)" +SUB_TOKEN=$(date +%s%N | sha256sum | cut -c1-16) log "Сгенерирован токен подписки" ################################# @@ -167,21 +195,33 @@ log "Проверка Docker" if command -v docker >/dev/null 2>&1; then log "Docker уже установлен" else - log "Docker не найден, будет установлен" + log "Docker не найден, будет установлен из официального репозитория" + # Add Docker's official GPG key: apt update - apt install -y docker.io || die "Ошибка установки docker.io" - systemctl enable docker - systemctl restart docker -fi + apt install ca-certificates curl + install -m 0755 -d /etc/apt/keyrings + if [[ "$ID" == "ubuntu" ]]; then + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker" + else + curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc || die "Ошибка добавления ключа Docker" + fi + chmod a+r /etc/apt/keyrings/docker.asc -# Check docker compose v2 -if docker compose version >/dev/null 2>&1; then - log "docker compose v2 доступен" -else - log "Устанавливаем docker-compose-v2" - # решаем конфликт с docker-compose-plugin - apt install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \ - docker-compose-v2 || warn "docker-compose-v2 не установлен, возможно уже есть плагин" + # Add the repository to Apt sources: + CODENAME=${UBUNTU_CODENAME:-$VERSION_CODENAME} + tee /etc/apt/sources.list.d/docker.sources </dev/null | grep -q "Status: active"; then + echo "UFW найден и активен. Открываем порты..." + ufw allow 443/tcp + ufw allow 443/udp + ufw allow 8443/tcp + ufw allow 8443/udp + ufw allow "$NGINX_PORT"/tcp + ufw allow 10000:60000/tcp + ufw allow 10000:60000/udp +fi + ################################# # RUN ################################# diff --git a/update.sh b/update.sh index e44211e..3b4eda0 100644 --- a/update.sh +++ b/update.sh @@ -17,6 +17,12 @@ need_root() { [[ $EUID -eq 0 ]] || die "Запускать только от root" } +if ! command -v curl >/dev/null 2>&1; then + echo "❌ curl не установлен. Установите curl и повторите попытку" + echo " apt install -y curl" + exit 1 +fi + ################################# # CONFIG ################################# diff --git a/whitelist.txt b/whitelist.txt index 856a652..e825d34 100644 --- a/whitelist.txt +++ b/whitelist.txt @@ -1,452 +1,100 @@ -2gis.com -2gis.ru -300.ya.ru -3475482542.mc.yandex.ru -742231.ms.ok.ru -a.auth-nsdi.ru -a.res-nsdi.ru -a.wb.ru -adm.digital.gov.ru -adm.mp.rzd.ru -admin.cs7777.vk.ru -admin.tau.vk.ru -ads.vk.ru +ir.ozone.ru +ozon.ru +refersion.com +st.ozone.ru +stats.vk-portal.net +www.vk.com ads.x5.ru -adv.ozon.ru -ai-gpt1.vepene.site -ai4.vepene.site -akashi.vk-portal.net -alfabank.ru -aliusfilms.ru -ams2-cdn.2gis.com -an.yandex.ru -analytics.vk.ru api-maps.yandex.ru -api.2gis.ru -api.avito.ru -api.browser.yandex.com -api.browser.yandex.ru -api.cs7777.vk.ru -api.events.plus.yandex.net -api.fastload.site -api.furypay.ru -api.max.ru -api.nodesecure.ru -api.ok.ru -api.photo.2gis.com -api.plus.kinopoisk.ru -api.reviews.2gis.com -api.s3.yandex.net -api.speedload.online -api.speedload.ru -api.tau.vk.ru -api.uxfeedback.yandex.net -api.vk.ru -apiok.ru -apple.com -at.ultima.foundation -auto.ru -autodiscover.ord.ozon.ru -avatars.mds.yandex.com -avatars.mds.yandex.net -avito.ru -avito.st -away.cs7777.vk.ru -away.tau.vk.ru -b.auth-nsdi.ru -b.res-nsdi.ru -bank.ozon.ru -banners-website.wildberries.ru -bfds.sberbank.ru -bg.fasssst.ru -bot.gosuslugi.ru -botapi.max.ru -bro-bg-store.s3.yandex.com -bro-bg-store.s3.yandex.net -bro-bg-store.s3.yandex.ru -brontp-pre.yandex.ru -browser.yandex.com -browser.yandex.ru -business.vk.ru -cargo.rzd.ru -catalog.api.2gis.com -cdn-de.maviks.ru -cdn.fastload.site -cdn.glorypay.ru -cdn.kickdown.click -cdn.lemanapro.ru -cdn.m1space.ru -cdn.s3.yandex.net -cdn.speedload.ru -cdn.tbank.ru -cdn.yandex.ru -cdncloudone.serverstats.ru -cdncloudthree.serverstats.ru -cdncloudtwo.serverstats.ru -cdnfive.serverstats.ru -cdnmsk.serverstats.ru -cdnrhkgfkkpupuotntfj.svc.cdn.yandex.net -cdnsix.vk-com.ru -cdntwo.dnsttlocate.ru -cdntwo.speedstream.ru -ch.fjdjdjfjd.icu -chat-prod.wildberries.ru -chat.speedload.ru -chat3.vtb.ru -cloud.cdn.yandex.com -cloud.cdn.yandex.net -cloud.cdn.yandex.ru -cloud.vk.com -cloud.vk.ru -cloudcdn-ams19.cdn.yandex.net -cloudcdn-m9-10.cdn.yandex.net -cloudcdn-m9-12.cdn.yandex.net -cloudcdn-m9-13.cdn.yandex.net -cloudcdn-m9-14.cdn.yandex.net -cloudcdn-m9-15.cdn.yandex.net -cloudcdn-m9-2.cdn.yandex.net -cloudcdn-m9-3.cdn.yandex.net -cloudcdn-m9-4.cdn.yandex.net -cloudcdn-m9-5.cdn.yandex.net -cloudcdn-m9-6.cdn.yandex.net -cloudcdn-m9-7.cdn.yandex.net -cloudcdn-m9-9.cdn.yandex.net -cloudlane.xyz -cms-res-web.online.sberbank.ru -cobrowsing.tbank.ru -collections.yandex.com -collections.yandex.ru -company.rzd.ru -connect.cs7777.vk.ru -contacts.rzd.ru -contract.gosuslugi.ru -crowdtest.payment-widget-smarttv.plus.tst.kinopoisk.ru -crowdtest.payment-widget.plus.tst.kinopoisk.ru -cs.avito.ru -cs7777.vk.ru -csp.yandex.net -d-assets.2gis.ru -dating.ok.ru -de1.vepene.site -dev.cs7777.vk.ru -dev.max.ru -dev.tau.vk.ru -digital.gov.ru -disk.2gis.com -disk.rzd.ru -dmp.dmpkit.lemanapro.ru -dnd.wb.ru -download.max.ru -dr.yandex.net -dr2.yandex.net -dropbox.com -dzen.ru -edgeport.xyz +career.ozon.ru +dancer.sbrf-cdn342.ru egress.yandex.net eh.vk.com eh.vk.ru -ekmp-a-51.rzd.ru -enterprise.api-maps.yandex.ru -esa-res.online.sberbank.ru -esia.gosuslugi.ru -event.yandex.ru -expert.vk.ru -external-api.mediabilling.kinopoisk.ru -external-api.plus.kinopoisk.ru -fastsync.xyz -favicon.yandex.com -favicon.yandex.net -favicon.yandex.ru -favorites.api.2gis.com -filekeeper-vod.2gis.com -finance.wb.ru -fr.connectvpn.tech -frontend.vh.yandex.ru -fw.wb.ru -gbr.fasssst.online -germany1.cdn.yandexdns.ru -germany2.cdn.yandexdns.ru -gos9.portal-guard.com -gosuslugi.ru -gosweb.gosuslugi.ru -gotraf.nodesecure.ru -goya.rutube.ru -gpt-plus.vepene.site -gpt3.vepene.site -graphql-web.kinopoisk.ru -graphql.kinopoisk.ru -greone.dnsttlocate.ru -gretwo.dnsttlocate.ru -gu-st.ru -hd.kinopoisk.ru -hello.opengate.tech -help.max.ru -hkg.tunnelguard.ru -hlb.tunnelguard.ru -hls-svod.itunes.apple.com -hrc.tbank.ru -http-check-headers.yandex.ru -i.max.ru -i0.photo.2gis.com -i1.photo.2gis.com -i1ugrwg2dj.a.trbcdn.net -i2.photo.2gis.com -i3.photo.2gis.com -i4.photo.2gis.com -i5.photo.2gis.com -i6.photo.2gis.com -i7.photo.2gis.com -i8.photo.2gis.com -i9.photo.2gis.com -id.cs7777.vk.ru -id.sber.ru -id.tau.vk.ru -id.tbank.ru -id.vk.ru -ietf.org -images.apple.com -imgproxy.cdn-tinkoff.ru -informer.yandex.ru -invest.ozon.ru -io.ozone.ru -ir.ozone.ru -izbirkom.ru -jam.api.2gis.com -jitsi.wb.ru -keys.api.2gis.com -kiks.yandex.com -kiks.yandex.ru -kinopoisk.ru -knix.fasssst.online -le.tbank.ru -learning.ozon.ru -legal.max.ru -lemanapro.ru -link.max.ru -link.mp.rzd.ru -live.com -live.ok.ru -lk.gosuslugi.ru -log.strm.yandex.ru -login.cs7777.vk.ru -login.tau.vk.ru -login.vk.com -login.vk.ru -lv2.ultima.foundation -lva.tunnelguard.ru -m.47news.ru -m.avito.ru -m.cs7777.vk.ru -m.ok.ru -m.tau.vk.ru +google.com +ign.com +ir-2.ozone.ru +m.ok.com m.vk.com -m.vk.ru -m.vkvideo.cs7777.vk.ru -ma.kinopoisk.ru -mail.yandex.com -mail.yandex.ru -map.gosuslugi.ru -mapgl.2gis.com -mapi.learning.ozon.ru -market.rzd.ru -maviks.ru max.ru -mc.yandex.com -mc.yandex.ru -me.cs7777.vk.ru -mediafeeds.yandex.com -mediafeeds.yandex.ru -mediarush.xyz -megafon.ru -metrics.alfabank.ru -microapps.kinopoisk.ru -mp.rzd.ru -ms.cs7777.vk.ru -msk.t2.ru -mts.ru -multitest.ok.ru -music.vk.ru music.yandex.ru -my.oversecure.pro -my.rzd.ru -mynode.nodesecure.ru -mynoderu.nodesecure.ru -neself.nodesecure.ru -neuro.translate.yandex.ru -nl.ultima.foundation -nl3.truservice.top -nla.tunnelguard.ru -novorossiya.gosuslugi.ru -nr9.strelkavpn.ru -oauth.cs7777.vk.ru -oauth.tau.vk.ru -oauth2.cs7777.vk.ru -ok.ufavpn.ru -oneclick-payment.kinopoisk.ru -online.sberbank.ru -ord.ozon.ru -ord.vk.ru -oversecure.pro -owa.ozon.ru -ozon.ru -partners.gosuslugi.ru -partners.lemanapro.ru -pay.ozon.ru -payment-widget-smarttv.plus.kinopoisk.ru -payment-widget.kinopoisk.ru -payment-widget.plus.kinopoisk.ru -pic.rutubelist.ru -pl-res.online.sberbank.ru -playself.nodesecure.ru -plb.tunnelguard.ru -plr.strelkavpn.ru -pos.gosuslugi.ru -powodzenia.xyz -pptest.userapi.com -preview.rutube.ru -prodvizhenie.rzd.ru -public-api.reviews.2gis.com -pulse.mp.rzd.ru -push.vk.ru -queuev4.vk.com -quiz.kinopoisk.ru -r.vk.ru -r0.mradx.net -receive-sentry.lmru.tech -reserve.ayagut.ovh -rontgen.fasssst.ru -ru.ultima.foundation -runstream.xyz -rutube.ru -rzd.ru -s.vtb.ru -s0.bss.2gis.com -s1.bss.2gis.com -s3.t2.ru -s3.yandex.net -sba.yandex.com -sba.yandex.net -sba.yandex.ru -sberbank.ru -secure-cloud.rzd.ru -secure.rzd.ru -securepay.ozon.ru -selfpl.speedload.online -seller.ozon.ru -sfd.gosuslugi.ru -shiftline.xyz -smartcaptcha.yandexcloud.net -sntr.avito.ru -softpipe.xyz -speller.yandex.net -sso-app4.vtb.ru -sso-app5.vtb.ru -sso.auto.ru -sso.dzen.ru -sso.passport.yandex.ru -ssp.rutube.ru -st-im.kinopoisk.ru -st-ok.cdn-vk.ru -st.avito.ru -st.kinopoisk.ru -st.max.ru -st.okcdn.ru -st.ozone.ru -st.vk.com -static-mon.yandex.net -static.lemanapro.ru +news.ufa-help.ru +ob06vexvjl.a.trbcdn.net static.rutube.ru -stats.avito.ru -stats.vk-portal.net -sto.eu-ffast.com -storage.ape.yandex.net -streamport.xyz -strm-rad-23.strm.yandex.net -strm.yandex.net -strm.yandex.ru -styles.api.2gis.com -suggest.dzen.ru -suggest.sso.dzen.ru -sun6-20.userapi.com sun6-21.userapi.com sun6-22.userapi.com -sun9-101.userapi.com sun9-38.userapi.com -surveys.yandex.ru -sync.browser.yandex.net -tamtam.ok.ru -target.vk.ru -team.rzd.ru -tech.vk.ru -tgju.org -ticket.rzd.ru -tickets.widget.kinopoisk.ru -tile0.maps.2gis.com -tile1.maps.2gis.com -tile2.maps.2gis.com -tile3.maps.2gis.com -tile4.maps.2gis.com tradingview.com -travel.rzd.ru travel.yandex.ru -travel.yastatic.net -ui.cs7777.vk.ru -ui.tau.vk.ru -usa1.vepene.site -user-geo-data.wildberries.ru -uslugi.yandex.ru -uxfeedback-cdn.s3.yandex.net -uxfeedback.yandex.ru -vk-portal.net -vkvideo.cs7777.vk.ru +tvdesign.ru +vk.com vkvideo.ru +ws.fjdjdjfjd.icu +www.rutube.ru +www.vkvideo.ru +xverager2.uspn.io +ya.ru +01.img.avito.st +0ru84.tcpdoor.net +aliusfilms.ru +api.avito.ru +azizoarjmand.info +breeze.mos-drywall.shop +breeze.my-rebar.shop +cdn.tbank.ru +content.fasssst.ru +download.cdn.yandex.net +es5.fasssst.online +fin1.nfnpx.online +fr1.nfnpx.online +ger1.nfnpx.online +ger2.nfnpx.online +ger3.nfnpx.online +ger4.nfnpx.online +hkg.tunnelguard.ru +hls-svod.itunes.apple.com +i2pd.website +j1p.1gb.site +khabarovsk.geodema.network +kz1.nfnpx.online +max3.skystreamgame.com +maxru.outlinekeys.net +miro.com +my-rebar.shop +nl1.nfnpx.online +nsk.geodema.network +ovhwuxian.pai50288.uk +pl1.nfnpx.online +plb.tunnelguard.ru +res.fasssst.ru +ru2.nfnpx.online +rutube.ru +sni.111000.dynv6.net +statue.lnmarketplace.net +sun6-20.userapi.com +tbankru.outlinekeys.net +tunnel.vk-apps.com +turkmenistan.gov.tm +usa1.nfnpx.online +veraams2.uspn.io +verager2.uspn.io +verahk1.uspn.io +verakz1.uspn.io +verarussia1.uspn.io +vk.ookcdn.ru vless.hubp.de -vless.muzheng.top -voter.gosuslugi.ru -vt-1.ozone.ru -wap.yandex.com -wap.yandex.ru -wb.ru web.max.ru wechat.com -welcome.rzd.ru -widgets.kinopoisk.ru -wikiportal.su -ws-api.oneme.ru -ws.seller.ozon.ru -wtvp7ujn9v.a.trbcdn.net -www.abingdon.org.uk -www.apple.com -www.avito.ru -www.avito.st -www.bing.com -www.cikrf.ru -www.gosuslugi.ru +workerr.schodog1.workers.dev +www.cloudflare.com +www.google.com +www.ietf.org www.kinopoisk.ru -www.microsoft.com -www.ok.ru +www.mozilla.org www.ozon.ru -www.rutube.ru -www.rzd.ru -www.sberbank.ru -www.t2.ru -www.trustnav.com -www.vk.com -www.vtb.ru -xapi.ozon.ru -ya.ru -yabro-wbplugin.edadeal.yandex.ru -yabs.yandex.ru +xfer.mos-drywall.shop +xfer.my-rebar.shop +xverakz1.uspn.io +xverarussia1.uspn.io yahoo.com -yandex.com -yandex.net -yandex.ru -yandexcdn.yandexdns.ru -yandexcdn2.yandexdns.ru -yastatic.net -yt.fasssst.ru -zen-yabro-morda.mediascope.mc.yandex.ru -zen.yandex.com -zen.yandex.net -zen.yandex.ru -zoomzoom.xyz \ No newline at end of file +yt.fasssst.ru \ No newline at end of file