README.md
July 29, 2026 · View on GitHub
WDTT Plus — это модифицированная версия WDTT для создания защищённого WireGuard-туннеля поверх TURN/DTLS. Клиент поднимает локальный VPN-интерфейс на устройстве, получает WireGuard-конфигурацию от вашего сервера и передаёт транспорт через TURN-серверы VK, маскируя соединение под обычный зашифрованный медиатрафик звонка.
Содержание
1. Начало работы и знакомство
Сюда идёт всё, что нужно пользователю, чтобы понять суть проекта и быстро его запустить.
2. Настройка и деплой (Техническая часть)
Шаги по установке, настройке окружения и безопасности.
3. О проекте
WDTT Plus: отличия от оригинала
Этот репозиторий — дальнейшая переработка проекта amurcanov/proxy-turn-vk-android. Основа, идея и значительная часть исходной реализации принадлежат автору оригинального WDTT. Проект сохраняет GPLv3 и ссылку на первоисточник.
Ниже перечислены только крупные отличия WDTT Plus; общие возможности вроде VpnService, TURN/DTLS, WRAP/RTP AEAD, базового деплоя, тем и лог-вьюера повторно не выдаются за изменения модификации.
Что изменено в модификации
- Расширенное управление сервером: клиентов и основные параметры сервера можно обслуживать прямо из приложения без Telegram. Клиента можно перенести отдельно через QR, камеру, изображение, файл, Android Share или код передачи; создать с автоматическим или заданным вручную паролем и безопасно сменить пароль без перезапуска сервера. Сервер защищён от всплесков подключений и поддерживает пределы мощности и скорости для отдельного доступа. Telegram-бот остаётся альтернативным удалённым пультом с теми же основными операциями.
- Обновление, восстановление и перенос сервера: повторный деплой предлагает безопасное обновление с сохранением данных или чистую установку. Перед обновлением и прямым импортом создаётся страховочная копия; служба и целостность доступов проверяются, а при ошибке выполняется откат. Частичный экспорт переносит базу WDTT Plus, полный дополнительно сохраняет WireGuard-ключи сервера.
- Режимы пользователя и администратора: режим «Юзер» оставляет подключение по ссылке или вручную, управление VPN, исключения и логи без серверных полей. Режим «Админ» открывает деплой и полное управление собственным сервером.
- Ссылки и перенос между устройствами: подключение можно передать ссылкой, файлом или QR-кодом, а получить — также камерой и из изображения. Администратор может отправить клиентский доступ ещё до добавления VK-хеша — получатель заполнит его у себя перед запуском. Защищённая короткая ссылка может сразу добавить выданный доступ и предложить автоматическое либо ручное заполнение VK-хешей. Импорт занимает свободный VPN-профиль или предлагает выбрать заменяемый, сохраняет название и при наличии показывает установленный владельцем предел мощности. Полученный профиль показывает срок и доступное действие, а после окончания доступа не запускает VPN. Для администратора доступен защищённый паролем перенос локальных настроек.
- VK-хеши и независимые провайдеры: приложение проверяет каждый слот звонка, при необходимости проходит капчу и показывает отдельный результат. Несколько ссылок или хешей можно вставить из буфера сразу, не затирая заполненные поля без подтверждения. TURN-данные запрашиваются по порядку: быстрый VKCalls без капчи, собственные legacy-реквизиты (если включены), затем выбранные встроенные legacy Client ID; пользовательский secret хранится защищённо.
- Настраиваемый выходной IP: из Android и Telegram-бота управляются прямой выход, прокси VPS, внешний TCP-прокси, бесплатный WARP, готовый VPN/WireGuard-файл и WireGuard-выход через другой сервер. Приложение показывает состояние режимов на сервере, проверяет конфликтные маршруты перед включением и откатывается при ошибке.
- Маршрутизация приложений: ЧС и БС являются отдельными списками: в ЧС отмеченные приложения обходят VPN, в БС только отмеченные идут через VPN. Есть быстрый подбор приложений, чувствительных к VPN; смена режима перезапускает только WireGuard-слой.
- Доверенные сети Wi-Fi: VPN может автоматически переходить в ожидание в выбранных домашних или рабочих сетях и восстанавливать прежнее подключение после выхода из них. Восстановление устойчивее работает в фоне и после пробуждения телефона; ручное отключение отменяет его, а неопределённая сеть никогда не отключает VPN.
- Captcha и устойчивость транспорта: современный VKCalls используется первым и обычно не требует капчи; временный flood не создаёт повторный шквал запросов. Если нужен legacy-резерв, авто-режим начинает с Auto WebView и переходит к Go v2 и ручному WebView только при необходимости. Клиент использует актуальные адреса
vk.ru, выбирает рабочий DNS-путь и перебирает резервные TURN-соединения по UDP, TCP и TLS. - Диагностика телефона и VPS: проверка устройства отдельно тестирует системный DNS, DNS-путь клиента, основной VKCalls и резервные VK/OK-узлы из сети телефона. Серверная диагностика сосредоточена на службе, UDP-портах, маршрутизации и выходном интернете; доступ к VK/OK с самого VPS показывается только справочно и не создаёт ложную ошибку.
- Самостоятельная сборка WDTT Plus: приложение использует пакет
com.wdtt.plus, собственный канал обновлений и отдельное оформление. Gradle пересобирает Androidlibclient.soи сервер для деплоя из исходников, а release APK получает понятные имена для каждой ABI.
Возможности Android-версии
- Ориентир совместимости: WDTT Plus смотрит вперёд и ориентируется на Android 10+ с современными требованиями Android SDK.
targetSdk35 — это целевой API сборки, а не верхний предел Android: новые версии Android должны поддерживаться по мере тестирования, включая отдельную проверку нативной части на устройствах с 16 KB page size. Android 9 и ниже не являются основной целью поддержки. - Проверка устройства: при первом запуске приложение в фоне проверяет только архитектурные условия — Android, ABI, нативный клиент, память и размер страницы памяти — и предупреждает, если есть риск несовместимости. В «Инфо» доступна ручная расширенная проверка версии WDTT Plus, WebView, разрешений Android, системного и клиентского DNS, доступа к VK/OK и текущего состояния VPN.
- Полноценный VPN-режим: приложение использует
VpnServiceи WireGuard GoBackend, поэтому трафик выбранных приложений проходит через системный VPN-интерфейс без ручного импорта конфигов. - Три профиля подключения: VPN 1, VPN 2 и VPN 3 хранят отдельные настройки туннеля и деплоя; профиль можно переименовать долгим нажатием в боковых настройках. Название активного профиля видно в заголовках вкладок, передаче подключения, плитке быстрых настроек и активном уведомлении туннеля. Полученный профиль может иметь собственный предел мощности, который показывается рядом с регулятором и не влияет на остальные профили.
- Корректная передача VPN-слота: если Android отключает WDTT Plus VPN или другой VPN забирает системный VPN-слот, WDTT Plus останавливает транспорт и переводит плитку/виджет в неактивное состояние. Плитка запускает VPN как с обычными настройками, так и в режиме ссылки, а при активном подключении показывает выбранный профиль вместе с уведомлением туннеля.
- Доверенные сети Wi-Fi: в боковых настройках можно добавить текущую сеть или точный SSID вручную. В доверенной сети системный VPN-интерфейс снимается и интернет работает напрямую, а тихое уведомление сохраняет режим ожидания. После перехода на мобильную или другую Wi-Fi сеть прежний VPN-профиль восстанавливается. Android запрашивает доступ к местоположению только потому, что относит имя Wi-Fi к чувствительным данным; координаты приложение не получает.
- TURN/DTLS-транспорт: нативный Go-клиент получает временные TURN-учётные данные VK-звонка и поднимает DTLS-соединения к relay-серверу, через который передаётся трафик до вашего сервера. Если основной TURN-путь не отвечает, клиент пробует другие выданные адреса и доступные варианты UDP, TCP или TLS.
- Импорт VK-ссылок через «Поделиться»: ссылку VK-звонка можно отправить прямо в WDTT Plus. Приложение извлечёт хеш после
/call/join/, заполнит следующий слот VK-хеша и покажет, какой номер был обновлён. - Передача и получение подключения: текущий VPN-профиль отправляется как
wdtt://-ссылка, файл или QR-код. Приложение принимает эти данные через Android, камеру, галерею и выбор файла, сохраняя совместимость со старыми ссылками. Клиентский доступ можно передать без VK-хеша, чтобы получатель добавил собственный перед запуском. Защищённая короткая ссылка также может добавить выданный профиль без VK-хешей, после чего приложение предложит получить их автоматически или ввести вручную. - Проверка VK-хешей: окно VK-хешей умеет проверить, жив ли групповой звонок, решить VK Captcha в процессе проверки, показать понятный статус по каждому полю, очистить отдельный слот и скопировать один или все заполненные хеши. Из буфера можно вставить до четырёх ссылок или хешей сразу с выбором: заполнить свободные поля или заменить набор.
- TLS/HTTP-отпечаток: по умолчанию используется Firefox fingerprint, при необходимости его можно переключить в настройках приложения.
- WRAP без захардкоженного ключа: внешний RTP AEAD/ChaCha20-Poly1305 слой выводится из пароля подключения через HKDF. Один пароль — один WRAP-ключ, ключ не хранится в APK.
- RTP AEAD обфускация: транспорт маскируется под RTP/WebRTC аудиотрафик с OPUS payload type, а полезная нагрузка шифруется AEAD-слоем поверх DTLS/WireGuard.
- Деплой с телефона: вкладка «Деплой» подключается к серверу по SSH, загружает
wdtt-server, создаётsystemd-сервис, включает NAT/firewall и открывает рабочие UDP-порты. - SSH по паролю или ключу: установка, подключение без установки, управление клиентами, перенос сервера и инструменты выходного IP работают как с SSH-паролем, так и с приватным ключом OpenSSH/PEM. Поддерживаются распространённые ключи OpenSSH
ed25519,rsa,ecdsaи PEM-ключи RSA/EC/PRIVATE/ENCRYPTED PRIVATE KEY; в поле нужно вставлять приватный ключ целиком с BEGIN/END, а не публичную строкуssh-ed25519илиssh-rsa. Способ входа выбирается явно; в режиме ключа пароль можно оставить дляsudo, если он требуется сервером. Ключ можно вставить, прочитать из файла или буфера обмена и проверить перед сохранением. Основной и дополнительный VPS хранят свои ключи отдельно в защищённом хранилище Android; ключи не отправляются на сервер и не входят в перенос настроек администратора. - Подключение к готовому серверу: если сервер уже установлен, приложение проверяет SSH-доступ и главный пароль, показывает отличия и после подтверждения восстанавливает локальные поля. Если серверный профиль владельца был сохранён из переименованного VPN-профиля, это название также вернётся в приложение; стандартные VPN 1/2/3 локальное имя не затирают. Этот режим работает только от сервера к приложению и ничего не записывает на сервер.
- Парольная модель доступа: сервер поддерживает главный пароль, настраиваемый лимит пользовательских паролей, 16-символьную генерацию, ручное задание пароля с проверками, привязку к устройству и срок действия. Клиентов можно создавать, импортировать, экспортировать, отключать, продлевать, отвязывать, удалять и менять им пароль из приложения или Telegram-бота.
- Горячее обновление WRAP-ключей: создание, удаление и истечение паролей обновляют набор WRAP-ключей на сервере без перезапуска ядра.
- Исключения приложений: ЧС и БС хранят независимые наборы. В ЧС отмеченные приложения работают напрямую, в БС только отмеченные направляются в VPN; изменения применяются быстрой перезагрузкой WireGuard.
- Рабочая цепочка VK: сначала приложение пробует современный отключаемый VKCalls без капчи, затем собственный legacy Client ID и выбранные встроенные legacy ID. Для legacy-провайдеров Auto WebView решает обычную проверку, Go v2 используется как следующий автоматический этап, а ручной WebView остаётся fallback для slider/puzzle и других строгих проверок.
- Живой лог-вьюер: события Go-клиента, выбранного VK-провайдера, переходов между резервами, DTLS, WireGuard, WRAP, капчи, деплоя и статистики отображаются с группировкой повторов. Временные сбои показываются как предупреждения, а красным выделяются критические ошибки. После отключения итоговый трафик и доступная причина сохраняются, а завершённая сессия отображается неактивной.
- Фоновая устойчивость:
Foreground Service,WakeLock,WifiLock, мягкий reconnect по валидированной сети и проверка после пробуждения помогают переживать Doze, смену Wi-Fi/LTE, DNS-сбои до VK и падение нативного процесса без агрессивных перезапусков. Выход из доверенной Wi-Fi дополнительно контролируется до фактического восстановления VPN. - VK Auth fallback: собственные legacy-реквизиты не заменяют быстрый VKCalls и встроенную цепочку, а добавляются между ними как отдельный резерв. Ошибка собственного Client ID явно отображается в журнале, после чего клиент пробует выбранные встроенные ID.
- DNS fallback: клиент проверяет основной и резервный Yandex DNS по UDP, затем по TCP, а при их недоступности использует системный DNS устройства.
- Темы и оформление: Material 3, Jetpack Compose, Inter, светлая/тёмная тема, Dynamic Colors на Android 12+ и встроенные палитры.
- Автообновления: приложение проверяет релизы WDTT Plus при запуске, при возврате из фона не чаще одного раза в 5 минут и каждые 30 минут, если остаётся открытым. Подходящий APK скачивается внутри приложения и передаётся системному установщику Android. Если APK текущей версии был заменён в релизе, WDTT Plus сверяет SHA-256 установленного APK со всеми APK релиза и предлагает исправление текущей версии.
Как это работает
Android-приложение → VpnService / WireGuard GoBackend → локальный UDP 127.0.0.1:9000
→ Go-клиент WDTT → WRAP RTP AEAD → VK TURN / DTLS → wdtt-server на сервере → интернет
- Приложение запускает нативный Go-клиент
libclient.soи передаёт ему адрес сервера, VK-хеши звонка, пароль туннеля и количество потоков. - Go-клиент выводит WRAP-ключ из пароля подключения, получает TURN-учётные данные через VK-звонок, при необходимости решает VK Smart Captcha и устанавливает DTLS-соединения через TURN relay.
- Внешний WRAP-слой упаковывает DTLS-пакеты в RTP AEAD/ChaCha20-Poly1305, чтобы ключ не был захардкожен в APK и мог отличаться у каждого пароля.
- Первый рабочий канал запрашивает у сервера WireGuard-конфигурацию через
GETCONF, передавая локальный порт,device-idи пароль подключения. - Сервер проверяет пароль: главный пароль работает как владелец, сгенерированные пароли имеют срок действия и привязываются к первому устройству.
- Android-часть парсит полученный WireGuard-конфиг, поднимает системный VPN-туннель и применяет исключения приложений.
- Watchdog следит за Go-процессом, активными воркерами и сетевыми изменениями, перезапуская транспорт при сбоях.
Быстрый старт
- Соберите APK по разделу «Для разработки» или скачайте готовую сборку со страницы релизов WDTT Plus, когда она опубликована.
- Установите приложение на Android-смартфон. Основной ориентир совместимости — Android 10+.
- Подготовьте домен или IP сервера, SSH-логин и SSH-пароль.
- В VK создайте или откройте групповой звонок и отправьте ссылку вида
vk.ru/call/join/xxxxxxxxxxxв WDTT Plus через «Поделиться» либо скопируйте её вручную. Старые ссылкиvk.com/call/join/...также поддерживаются. - Откройте WDTT Plus и перейдите во вкладку «Деплой».
- Введите IP/домен сервера, SSH-логин, пароль и SSH-порт.
- В «Секретах» задайте главный пароль туннеля. При необходимости добавьте Telegram
admin_id/bot_tokenдля управления доступом. - Нажмите «Установить» и дождитесь завершения деплоя.
- Во вкладке «Туннель» укажите IP/домен сервера, VK-хеши, пароль подключения и количество потоков.
- Нажмите «Подключить» предварительно выдав все необходимые разрешения приложению.
Если на сервере уже есть установленный WDTT Plus, приложение покажет предупреждение перед деплоем. Режим «Обновить с сохранением» заменит серверный бинарник и применит настройки из текущих полей деплоя, сохранив выданные ссылки, привязки устройств, историю и WireGuard-ключи. Режим «Начать с нуля» удалит серверные данные WDTT Plus и развернёт чистую установку.
Для переноса на другой сервер во вкладке «Деплой» используйте блок «Перенос сервера». Частичный экспорт сохраняет базу WDTT Plus: профиль владельца, Telegram-настройки, клиентов, привязки устройств, статистику и историю. Полный экспорт дополнительно требует и сохраняет WireGuard-ключи сервера. Старые wdtt:// ссылки останутся рабочими без перевыдачи, если в них был домен, DNS указывает на новый сервер и сохранены прежние порты; для ссылок со старым IP или при смене портов создайте новые. Импорт можно выполнить при деплое или на работающем сервере: режим «Заменить» подходит для переезда, режим «Добавить» переносит отсутствующие записи, проверяет конфликты устройств и назначает свободные внутренние IP. Перед изменением создаётся страховочная копия, после импорта проверяются данные и служба, а при ошибке выполняется откат. Настройки выходного IP, прокси, WARP и VPN/WireGuard-файлы серверным экспортом не переносятся.
Получение VK-хеша
VK → группа → звонок → ссылка приглашения → код после /join/
- Откройте VK и создайте пустую группу или используйте существующую.
- Начните групповой звонок.
- Отправьте ссылку приглашения в WDTT Plus через системное меню «Поделиться» или скопируйте её вручную.
- Приложение само разбирает полную ссылку
vk.ru/call/join/...(и старый вариантvk.com/call/join/...), убирает лишние параметры и заполняет первое свободное поле VK-хеша в активном VPN-профиле. - Если такой хеш уже добавлен, WDTT Plus покажет ошибку и не создаст дубль. Если все 4 поля заняты, будет обновлён следующий слот по кругу с предупреждением о перезаписи.
- Можно использовать до 4 хешей одновременно для распределения нагрузки и увеличения доступного числа потоков.
Important
При выходе из звонка нажимайте «Просто завершить», а не «Завершить для всех». Если закрыть комнату для всех участников, хеш перестанет работать.
Деплой сервера
Серверная часть ставится автоматически из приложения:
Android → SSH → /tmp/deploy.sh + /tmp/wdtt-server → /usr/local/bin/wdtt-server
→ systemd wdtt.service → wdtt0 + NAT + firewall
По умолчанию используются:
56000/udp— DTLS-сервер WDTT Plus.56001/udp— внутренний WireGuard-порт сервера.9000/udp— локальный порт Android-клиента.10.66.66.0/24— подсеть WireGuard-устройств.
Если включить ручное управление портами, эти значения можно изменить в «Секретах».
Управление доступом
Сервер WDTT Plus поддерживает две модели подключения:
- Главный пароль: задаётся при деплое и используется владельцем сервера.
- Сгенерированные пароли: создаются из приложения или Telegram-бота, имеют срок действия, привязываются к первому устройству и обновляют WRAP-ключи на сервере без перезапуска.
В блоке «Клиенты и сервер» вкладки «Деплой» можно искать и фильтровать клиентов, создавать доступы с автоматическим или ручным паролем, редактировать параметры, срок и привязку устройства, менять пароль, а также передавать подключение ссылкой, файлом или QR-кодом. Там же доступны экспорт и импорт отдельного клиента для ручного переноса на другой сервер, история, трафик, настройки сервера, очистка устаревших записей и сервисные действия. После импорта приложение перечитывает список сервера и выбирает добавленного клиента.
Экспорт отдельного клиента переносит только данные доступа: пароль, название, имеющиеся VK-хеши, срок и состояние. Устройство, WireGuard-ключи, статистика, история, адрес, порты и серверные параметры не копируются; после импорта клиент использует настройки нового сервера и привязывается к устройству при первом подключении.
Обычные изменения применяются работающим сервером сразу и не прерывают остальных клиентов: Android вызывает admin-команды по SSH, а они обращаются к закрытому локальному сокету wdtt-server, не открывая отдельный управляющий порт в сеть. Явный перезапуск сервиса оставлен отдельным подтверждаемым действием. При удалении или истечении пароля соответствующий WRAP-ключ удаляется из памяти сервера.
Дополнительные возможности
Передача между устройствами
Раздел «Передать или получить» находится в боковых настройках. Пользователь может отправить активный VPN-профиль ссылкой, файлом или QR-кодом; на другом устройстве данные можно открыть напрямую, выбрать как файл, отсканировать камерой либо распознать на изображении из галереи. Доступ без VK-хеша тоже распознаётся и сохраняется, но перед запуском получатель должен добавить собственный. Приложение использует первый пустой профиль VPN, а если заняты все три — предлагает выбрать профиль и подтвердить замену. Названия профилей помогают отличать подключения в заголовках вкладок «Туннель» и «Деплой».
В режиме администратора там же можно передать все локальные VPN-профили, параметры деплоя, исключения и настройки выхода. Такой экспорт шифруется отдельным паролем; пароль не сохраняется и должен передаваться получателю отдельно. Резервная копия состояния самого сервера по-прежнему импортируется через «Деплой» → «Перенос сервера».
Warning
Ссылка и пользовательский QR всегда содержат пароль подключения и могут содержать VK-хеши. Не публикуйте их и передавайте только доверенному получателю.
Исключения приложений
Вкладка «Исключ.» показывает установленные приложения с поиском. В режиме ЧС отмеченные приложения обходят VPN, а в режиме БС только отмеченные приложения идут через VPN. ЧС и БС запоминают свои наборы галочек независимо; переключение активного режима быстро перезапускает только WireGuard-слой. Само приложение WDTT Plus и VK-клиенты всегда обходят VPN, чтобы не ломать TURN-соединение.
Капча
По умолчанию включены быстрый VKCalls и режим «Авто капча». Сначала TURN-данные запрашиваются через VKCalls без капчи. Если он недоступен, приложение пробует собственный legacy Client ID (если включён), затем встроенные legacy ID; только в этой резервной ветке используются Auto WebView, Go v2 и при необходимости ручной WebView. Slider/puzzle считается строгой проверкой VK и передаётся пользователю. Вместо автоматического решения можно выбрать «Всегда вручную». Ошибки мёртвой ссылки, запрета анонимного входа и переполненного звонка выводятся отдельно.
Логирование
Вкладка «Логи» показывает старт быстрого VKCalls, переходы на собственный и встроенный legacy-провайдеры, использование кэша TURN, решение капчи, DTLS-handshake, WRAP-состояние, готовность WireGuard, статистику активных воркеров и ошибки. Ожидаемый переход на резерв не помечается как критическая ошибка; повторяющиеся строки схлопываются в одну запись со счётчиком.
Note
Если видны DTLS handshake, но Активных: 0, чаще всего указан неправильный пароль подключения или используется сервер без актуального WRAP-протокола. Если часть потоков уже активна, одиночные DTLS timeout больше не считаются неверным паролем и не останавливают туннель.
Трафик
Сервер хранит суммарный трафик и дневную историю по главному паролю администратора и каждому выданному клиентскому паролю. Telegram-бот показывает трафик за сегодня, 7 дней, 30 дней и всё время; уведомление Android во время подключения показывает текущий входящий и исходящий трафик сессии.
Выходной IP и прокси
Первичная настройка выполняется во вкладке «Деплой» в блоке «Выходной IP и прокси». Эти режимы меняют IP, который видят сайты и сервисы у пользователей WDTT; сам адрес WDTT-сервера, входящие DTLS/SSH и ссылка подключения этим не скрываются.
Формы этого блока можно заполнить с сервера: приложение читает сохранённый профиль администратора и текущие конфиги прокси/WireGuard. При установке направление обратное — текущие поля приложения сохраняются на сервере; перед заменой отличающихся серверных значений приложение предупреждает об этом. Профиль также обновляется при включении режимов из приложения.
Блок показывает состояние режимов по данным сервера: активный выход отмечается зелёным, найденные сохранённые настройки — жёлтым, а конфликт или не поднятая служба — красным. Время проверки выводится в русском формате с 24-часовым временем. Перед включением внешнего TCP-прокси, WARP или WireGuard-варианта приложение проверяет, что на сервере не запущены несовместимые маршруты выхода. Кнопки проверки читают сервер и объясняют, найден ли режим и активен ли он; отключение, остановка и удаление доступны только по подтверждённому статусу.
- Прямой выход — трафик пользователей выходит через текущий VPS.
- Прокси VPS — создаёт SOCKS5/HTTP-прокси на этом же сервере. IP не скрывает, потому что выход остаётся через текущий VPS.
- Внешний TCP-прокси — направляет обычные TCP-подключения через внешний SOCKS5/HTTP-прокси. UDP, QUIC и часть звонкового трафика могут идти напрямую.
- Другой сервер — подключает отдельный VPS по WireGuard и выпускает пользователей через него. Это самый понятный вариант для отдельного выходного IP.
- Бесплатный WARP — автоматически регистрирует WARP через
wgcfи скрывает IP VPS без второго сервера. Приложение проверяет SHA-256 инструмента, подтверждениеwarp=on/plus, выполняет повторные подключения, включает проверку каждые пять минут и откатывается на прямой выход при неудачной установке. MTU задаётся в безопасном диапазоне 1280–1500, по умолчанию — 1280. - VPN/WireGuard-файл — подключает готовый WireGuard
.confкак выход только для пользователей WDTT. Сюда можно вставить свой конфиг VPN-провайдера, WARP/WARP+ или другой совместимой службы, если это именно WireGuard-профиль с[Interface]и[Peer]. Команды запуска, неизвестные параметры и конфиги без маршрута0.0.0.0/0отклоняются; DNS самого VPS не изменяется.
В режимах выхода «Отключить» возвращает прямой выход через текущий VPS, но оставляет настройки на сервере для повторного включения. «Удалить» стирает рабочие файлы; для импортированного WireGuard-файла также удаляется сохранённая копия из серверного профиля.
Автоматический WARP использует неофициальный wgcf и требует принятия условий Cloudflare. Поддерживается Linux amd64, как и серверный бинарник WDTT Plus. Выходной IP Cloudflare общий и может меняться; страна и постоянный IP не гарантируются. Если WARP ограничен Cloudflare в регионе, приложение покажет ошибку и не оставит клиентов без прямого выхода.
Telegram-бот умеет посмотреть статус и диагностику выхода, вернуть режим direct, создать/проверить/остановить прокси VPS, включить внешний TCP-прокси, управлять бесплатным WARP и посмотреть или отключить WireGuard/VPN-выход.
Обновления
Приложение проверяет GitHub Releases WDTT Plus, показывает диалог новой версии и открывает страницу релиза в браузере. Проверка выполняется при запуске и периодически в фоне.
Отчёт для issue
В разделе «Информация» действие «Проверить устройство» одновременно проверяет совместимость и формирует полный диагностический отчёт: версию приложения, Android SDK, ABI и разрядность, размер страницы памяти, модель устройства, SoC, ROM, память, сеть, WebView и безопасные параметры запуска. Отчёт можно скопировать из окна проверки; адреса, пароли, токены и значения VK-хешей в него не включаются.
Note
Отчёты об ошибках
WDTT Plus зависит от мобильной сети, Android-ограничений фоновой работы, состояния VK-звонка, TURN-квот, DNS и настроек сервера.
Если возникла проблема, приложите к issue отчёт из раздела «Информация», скриншот вкладки «Логи», версию APK, ABI сборки и описание сети. Мелкие повторяющиеся ошибки в логах не всегда означают поломку, если туннель остаётся активным.
Warning
Назначение проекта и дисклеймер
Приложение является техническим инструментом для защищённого туннелирования трафика через ваш собственный TURN-сервер. Проект WDTT Plus носит исключительно витринно-ознакомительный характер на примере уже имеющейся структуры в целях исследования сетевых протоколов.
Авторы и участники этой модификации не призывают использовать WDTT Plus для обхода блокировок или нарушения правил каких-либо платформ, а также не несут ответственности за финальные сценарии использования утилиты пользователями. Любые специфические технические особенности приложения описаны как исследование сетевой архитектуры и протоколов.
Проект является полностью некоммерческим, не содержит платных функций, скрытых подписок или коммерческой выгоды.
Для разработки
Для полной сборки нужны актуальные Android SDK/NDK и Go 1.26. Проект собирается с targetSdk 35 и отдельными APK для arm64-v8a, armeabi-v7a, x86_64 и universal. Каноническая release-сборка:
./gradlew assembleRelease
Команда пересобирает нативный Android-клиент и Linux-сервер для деплоя, затем помещает подписанные APK в app/build/outputs/apk/release/named/. Для большинства современных устройств подходит WDTT-Plus-vN-arm64-v8a-release.apk, где N — номер выпуска.
В app/src/debug/java/com/wdtt/plus/WDTTPreviews.kt находятся Compose Preview основных вкладок. Они входят только в debug source set и не попадают в release APK.
Лицензия
Этот проект распространяется под лицензией GNU General Public License v3.0.