Подробное описание форка от Antigravity (Google Gemini 3.1 Pro) по версии 1.4.2-ru.6
# Анализ изменений форка NekoBoxForAndroid-1.4.2-ru.6
В данном отчете представлен подробный анализ отличий форка `NekoBoxForAndroid-1.4.2-ru.6` от оригинала `NekoBoxForAndroid`. Анализ охватывает изменения в исходном коде на языке Kotlin (`*.kt`), а также в XML-файлах настроек и ресурсов.
## 1. Архитектурные и логические изменения (Kotlin)
### 1.1. Система Автоматического Переподключения (VPN Watchdog)
* **`VpnWatchdog.kt` [NEW]**: Добавлен новый класс `VpnWatchdog`, который работает в фоновом режиме вместе с основным `VPNService`. Он периодически отправляет HTTP запросы `Libcore.urlTest` (по умолчанию на `
https://cp.cloudflare.com/`) для проверки доступности рабочего VPN соединения.
* Если VPN "зависает" (превышение лимита ошибок), Watchdog принудительно "будит" ядро proxy (sing-box), сбрасывает сокеты клиентов `Libcore.resetAllConnections(true)` и восстанавливает сеть. Также вмонтирован тестовый режим `testModeRequested` для проверки функционала из интерфейса.
### 1.2. RKN Hardening (Защита от блокировок и утечек)
* **`ConfigBuilder.kt`**:
* **Отключение SNI Spoofing уязвимости**: Параметр `sniff_override_destination = false` зафиксирован жестко. Теперь оригинальный IP назначения не подменяется из SNI-хедера, что защищает от перехвата трафика вредоносными или цензурными узлами.
* **Изоляция UID (app proxy split tunnel bypass)**: Включен `find_process = true`. Пакеты анализируются с привязкой к Process UID (ID приложения). В зависимости от настроек bypass, ядро sing-box будет **блокировать** маршрут вне хоста через VPN (`outbound = TAG_BLOCK`), чтобы не допустить утечки трафика приложений, добавленных в список исключений.
* **Очистка Inbounds в VPN**: Из json-конфига принудительно удаляются все inbounds, кроме `tun` и `direct` (`inboundsList?.removeAll { ... }`). Это защищает от уязвимостей "открытого порта", когда злоумышленник мог бы через локальный IP извне подключиться к открытому inbound proxy в телефоне.
* **Автогенерация паролей**: `DataStore` теперь автоматически генерирует 10-символьные безопасные пароли (`SecurePassword`) для `clashApiSecret` и `mixedPassword`. API менеджера YACD больше не открыто без пароля.
* **`RawUpdater.kt` / `AssetsActivity.kt` / `AboutFragment.kt`**: Глобально из методов `Libcore.newHttpClient()` удалено обращение к локальному прокси `trySocks5(DataStore.mixedPort)`.
### 1.3. Адаптация маршрутизации под РФ (СНГ)
* **`ProfileManager.kt`**:
* Удалена старая логика фолбека (где проверялся регион устройства для китая `cn` или Ирана `ir`).
* Вместо него жестко вшиты новые правила-bypass для РФ: `geosite:category-ru`, `geosite:yandex`, `geosite:vk`, `geosite:mailru`, `domain:ru`, `domain:su`, `domain:рф`, `geoip:ru`. Вся эта зона идет в обход `TAG_DIRECT` (`outbound = -1L`).
* Добавлен блок `geosite:category-ads-all` (Блокировка Рекламы).
* **Блокировка UDP/QUIC 443**: Добавлено правило блокировки трафика `udp` на `443` порту. Это решает проблему с замедлением видео на YouTube / Instagram (заставляет использовать fallback на TCP).
### 1.4. Настройки DNS
* **`DataStore.kt`**:
* Настройка `directDns` изменена с `
https://223.5.5.5/dns-query` на стандартный IP Google `8.8.8.8`.
* Добавлен флаг `useLocalDns`. В `ConfigBuilder.kt` если он включен, DirectDNS конфигурируется как "local" для использования DNS-сервера Android по умолчанию.
* DoT (Port 853) принудительно отправляется в `TAG_DIRECT` (`route.rules.add` в `ConfigBuilder.kt`), что решает баг "Private DNS" в Android при DPI.
### 1.5. Интерфейс и улучшения UX
* **`MainActivity.kt`**: При нажатии на кнопку включения VPN проверяется наличие файлов `geoip.db` и `geosite.db`. Если их нет, выводится предупреждающее диалоговое окно, направляющее пользователя в раздел AssetsActivity для их загрузки. Это предотвращает падение ядра приложения при первом запуске.
* **`ServiceNotification.kt`**: Отключено обновление статистики трафика в UI уведомлениях `ServiceNotification`. Это позволило обойти баг WakeLock на прошивках Realme/ColorOS, где загорался экран при постоянном обновлении уведомления Service'a.
* **`SettingsPreferenceFragment.kt`**: Добавлены диалоги для тестирования функции Watchdog, а также связанные зависимости для Local Proxy.
## 2. Изменения Интерфейса и Настроек (XML)
### 2.1. `global_preferences.xml`
* **Скрытие настройки локального прокси**: Раздел "inbound_settings" (входящие подключения / локальный порт / разрешение LAN) скрыт от пользователя через атрибут `app:isPreferenceVisible="false"`. Это защищает неопытного пользователя от случайного открытия портов.
* **Добавлена опция Use Local DNS**: Переключатель `useLocalDns` - "Использовать системные DNS (local)".
* **Раздел VPN Watchdog**: Добавлена новая категория `VPN Watchdog (Авто-рестарт)` с настройками интервала и кнопкой тестирования `vpnWatchdogTest`.
### 2.2. `neko_preferences.xml`
* **Profile-specific Watchdog**: В настройки конкретного профиля (proxy configuration) добавлены аналогичные опции для переопределения поведения VPN Watchdog (включение, интервал и тест).
### 2.3. `strings.xml` / `values-ru/strings.xml`
* Переведены / добавлены строки, связанные с новыми функциями:
* Новые ключи для "Авто-переподключения" (Watchdog) и его описания.
* Изменены переводы, в частности добавлены красные предупреждающие метки `<font color="#D32F2F">Разрешить LAN подключения (Опасно)</font>` и HTTP Proxy, чтобы обратить внимание пользователя на потенциальную угрозу безопасности.
---
## Краткое резюме форка
**NekoBoxForAndroid-1.4.2-ru.6** - это глубоко доработанная версия (hardened fork), целенаправленная на:
1. **Бесперебойность**: Внедрен Watchdog, который решает проблему с разрывами DPI-блокировок, автоматически перезапуская Sing-Box без вмешательства пользователя.
2. **"Из коробки" для РФ**: Вшиты bypass-правила для ru-доменов, СНГ сервисов и блокировка рекламы/QUIC.
3. **Безопасность**: Защита от утечки адресов через UID (strict tunnel bypass), закрытие открытых портов API Yacd / Local TCP паролями и фильтрацией конфигураций Inbounds.
4. **UX**: GUI проверки на скачивание баз (geoip/geosite), исправление бага с уведомлением на Android устройствах BBK Electronics.