# EvilFox Клиент [NaiveProxy](https://github.com/klzgrad/naiveproxy) + [Hysteria 2](https://github.com/apernet/hysteria) + [AmneziaWG 2.0](https://docs.amnezia.org/documentation/amnezia-wg/) + [Xray](https://github.com/XTLS/Xray-core) (VLESS / VMess / Trojan) с профилями, пингом, централизованной выдачей конфигов (Remnawave) и автообновлением. > Ранее приложение называлось **Navis**. С 4.0.0 бинарник — `EvilFox.exe`. Каталог релиза `dist/navis-release/` и URL-путь сохранены, чтобы клиенты 3.x продолжали обновляться; в той же папке лежит и `Navis.exe` (копия `EvilFox.exe`) как совместимый алиас. ## Платформы | OS | Артефакты | UI | |----|----------|----| | Windows amd64 | `EvilFox.exe` (+ `Navis.exe` alias) | GUI (WebView2) | | macOS universal | `Navis.dmg` · `Navis.app.zip` | **GUI** (как Windows) | | macOS arm64 / amd64 | `Navis` · DMG · `Navis-cli` | GUI + CLI | | Android | `Navis.apk` | GUI (VpnService) | ## Скачать macOS прямо с git Репозиторий: https://git.evilfox.cc/test2/navi ### Быстрая установка (автовыбор архитектуры) ```bash curl -fsSL "https://git.evilfox.cc/test2/navi/raw/branch/main/scripts/install-macos.sh" | bash ``` Скрипт скачает **универсальный DMG** (работает на Intel и Apple Silicon) и откроет его. ### Универсальный DMG (рекомендуется) Подходит для **всех** Mac — M1/M2/M3/M4 и Intel: ```bash cd ~/Downloads curl -fL -o Navis.dmg \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/universal/Navis.dmg" open Navis.dmg ``` ### 1. Узнайте архитектуру Mac (если нужна отдельная сборка) В Терминале: ```bash uname -m ``` - `arm64` → Apple Silicon (M1/M2/M3/M4) → папка **macos/arm64** - `x86_64` → Intel → папка **macos/amd64** > **Важно:** на Mac M4 нельзя ставить сборку из `macos/amd64` — иконка будет с перечёркиванием. Используйте **macos/universal** или **macos/arm64**. ### 2a. Скачать DMG для конкретной архитектуры **Apple Silicon:** ```bash cd ~/Downloads curl -fL -o Navis.dmg \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.dmg" open Navis.dmg ``` **Intel:** ```bash cd ~/Downloads curl -fL -o Navis.dmg \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.dmg" open Navis.dmg ``` Откроется диск с `Navis.app` — перетащите в **Программы** (Applications). Если Gatekeeper ругается: ```bash xattr -dr com.apple.quarantine /Applications/Navis.app ``` Запуск CLI из .app: ```bash /Applications/Navis.app/Contents/MacOS/Navis init /Applications/Navis.app/Contents/MacOS/Navis install-core /Applications/Navis.app/Contents/MacOS/Navis connect ``` Альтернатива DMG — zip с тем же `.app`: ```bash # arm64 curl -fL -o Navis.app.zip \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.app.zip" # amd64 curl -fL -o Navis.app.zip \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.app.zip" unzip Navis.app.zip ``` ### 2b. Скачать CLI-бинарник одной командой **Apple Silicon (arm64):** ```bash mkdir -p ~/Navis && cd ~/Navis curl -fL -o Navis \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis" chmod +x Navis ``` **Intel (amd64):** ```bash mkdir -p ~/Navis && cd ~/Navis curl -fL -o Navis \ "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis" chmod +x Navis ``` Проверка версии / обновлений: ```bash ./Navis check-update ``` ### 3. Первый запуск (CLI) ```bash cd ~/Navis ./Navis init ./Navis install-core ./Navis set-proxy 'hysteria2://PASSWORD@HOST:PORT/?sni=...#name' # или naive+https://user:pass@host ./Navis connect ``` Полезные флаги: ```bash ./Navis connect -no-sysproxy # только локальный SOCKS/HTTP, без networksetup ./Navis connect -probe # проверка туннеля после коннекта ``` Локальные прокси после `connect`: - SOCKS5: `127.0.0.1:1080` - HTTP: `127.0.0.1:1081` Системный прокси на macOS выставляется через `networksetup` (может запросить права администратора). ### 4. Если macOS блокирует запуск ```text “Navis” cannot be opened because it is from an unidentified developer ``` ```bash xattr -dr com.apple.quarantine ~/Navis/Navis # или для .app: xattr -dr com.apple.quarantine /Applications/Navis.app ``` Затем: **Системные настройки → Конфиденциальность и безопасность → Всё равно открыть**. ### 5. Обновление с git ```bash cd ~/Navis ./Navis check-update ./Navis apply-update # закройте процесс Navis — бинарник подменится сам ``` Или скачайте DMG/бинарник заново. Прямые ссылки (raw): | Архитектура | CLI | DMG | ZIP (.app) | |-------------|-----|-----|------------| | **universal** | [Navis](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/universal/Navis) | [Navis.dmg](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/universal/Navis.dmg) | [Navis.app.zip](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/universal/Navis.app.zip) | | arm64 | [Navis](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis) | [Navis.dmg](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.dmg) | [Navis.app.zip](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.app.zip) | | amd64 | [Navis](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis) | [Navis.dmg](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.dmg) | [Navis.app.zip](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.app.zip) | | манифест | [update.json](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json) | | | ## Android APK Сборка: `build-android.bat` → `dist/navis-release/android/Navis.apk` Установка: скопируйте APK на телефон → разрешите установку из неизвестных источников. В APK: подписка, компактный список нод, пинг, «Лучший», автоподключение. Протоколы VLESS/VMess/Trojan (Xray) и Hysteria 2. Naive/AWG — импорт в UI, полный туннель дорабатывается. Подробнее: [android/README.md](android/README.md) ## Сборка Windows ```bat build.bat ``` Артефакты релиза: `dist/navis-release/windows/Navis.exe` (+ `vpnclient.exe`). или: ```bat go build -ldflags="-H windowsgui -s -w" -o Navis.exe ./cmd/vpnapp ``` ### Microsoft Store (MSIX) Navis — Win32 + WebView2 VPN/прокси-клиент (системный прокси, локальные cores). **PWA в Store не подходит** как замена: без Desktop Bridge нельзя дать те же возможности. Для Store используется **MSIX full-trust** поверх того же `Navis.exe`. ```powershell build.bat .\scripts\pack-msix.ps1 -Version 3.9.0.1 ``` Нужен Windows SDK (`MakeAppx.exe`). Перед публикацией подставьте Identity Name / Publisher из Partner Center (см. `packaging/msix/AppxManifest.xml` и [packaging/msix/README.md](packaging/msix/README.md)). Сборка из Store **не** самообновляется через in-app updater (детект MSIX package identity) — только обновления Microsoft Store. ### Remnawave Импорт нод из панели [Remnawave](https://remna.st): | Способ | Что указать | |--------|-------------| | Публичная подписка | `https:///api/sub/` в поле «URL подписки» | | Панель + short UUID | блок Remnawave API → URL панели + short UUID → «Синхронизировать» | | С API token | токен из панели → API Tokens (для `/api/subscriptions/…`, `/api/users/…`) | | Caddy auth | опциональный `X-Api-Key` | Токены хранятся только локально в `configs/config.json` (не коммитьте). ### Выдача доступа из приложения (admin API) Приложение умеет само создавать пользователей в панели Remnawave и сразу импортировать их конфиги (панель «Выдать доступ» в интерфейсе). Для этого нужен **отдельный** файл с админ-ключом: 1. Скопируйте `configs/remnawave-api.example.json` → `configs/remnawave-api.json`. 2. Вставьте `panel_url` и `api_token` (панель → API Tokens). `caddy_api_key` — только если панель за Caddy-auth. 3. Перезапустите Navis — появится панель «Выдать доступ». Файл читается **в рантайме** из папки `configs` рядом с `config.json` — пересборка (repack) не требуется, достаточно положить файл и перезапустить приложение. Тариф по умолчанию (настраивается в блоке `provision`): | Поле | Значение по умолчанию | |------|----------------------| | `traffic_gb` | 50 ГБ | | `days` | 30 дней (expireAt = сейчас + days) | | `strategy` | `MONTH` (сброс трафика; также `NO_RESET` / `DAY` / `WEEK`) | | `hwid_device_limit` | 0 = без лимита устройств | Логика: `GET /api/users/by-username/{username}` — если пользователь есть, берётся его `subscriptionUrl`; иначе `POST /api/users` с тарифом выше, затем подписка импортируется в приложение автоматически. `configs/remnawave-api.json` в `.gitignore` — **никогда не коммитьте** реальный ключ, в репозитории только `remnawave-api.example.json`. ## Сборка macOS (кросс с Windows / Linux) ```bat build-macos.bat ``` Артефакты: `dist/navis-release/macos/{arm64,amd64,universal}/`. или: ```bash CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o dist/navis-release/macos/arm64/Navis ./cmd/vpnclient CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o dist/navis-release/macos/amd64/Navis ./cmd/vpnclient ``` ## Обновления Манифест: `https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json` Релизный layout (с 2.8.0): ``` dist/navis-release/windows/ Navis.exe, vpnclient.exe dist/navis-release/macos/arm64|amd64|universal/ dist/navis-release/android/ Navis.apk ``` Формат (multi-platform): ```json { "version": "2.8.0", "notes": "…", "platforms": { "windows-amd64": { "url": "…/windows/Navis.exe", "sha256": "…" }, "darwin-arm64": { "url": "…/macos/arm64/Navis", "sha256": "…" }, "darwin-amd64": { "url": "…/macos/amd64/Navis", "sha256": "…" }, "darwin-universal": { "url": "…/macos/universal/Navis", "sha256": "…" }, "android": { "url": "…/android/Navis.apk", "sha256": "…" } } } ``` Клиент выбирает только ключ `GOOS-GOARCH` (на Mac — fallback на `darwin-universal`). Чужой OS в ленте **не** считается доступным обновлением. Android пока не использует этот in-app feed (APK отдельно). ## Купить доступ https://evilfox.win/ ## Антивирусы (ложные срабатывания) Некоторые AV (Bkav, Microsoft Wacapew/Wacatac, Ikarus Trojan.WinGo.Agent, Google, Trapmine) часто помечают **любые** неподписанные Go-бинарники с сетью и сменой системного прокси. В 3.9.0: - выдача конфигов через Remnawave API (`/api/sub/{shortUuid}`, опционально Bearer token); - UI в стиле Remnawave (тёмная тема по умолчанию, cyan accent), флаги стран у серверов; - MSIX / Store prep для `3.9.0.1`. В 2.9.0: - светлая / тёмная тема с переключателем (preference в localStorage, по умолчанию — системная); - подготовка к Microsoft Store: MSIX-манифест, `scripts/pack-msix.ps1`, отключение in-app updater в MSIX-сборке. В 2.8.0: - релизы разложены по папкам `windows/` · `macos/` · `android/`; - обновления строго по платформе (Windows не получит Mac-сборку и наоборот). В 2.7.2: - убран вечный цикл обновления (проверка больше не устанавливает сама; только кнопка «Обновить»); - номер сборки в версии (`2.7.2+N` / FileVersion `2.7.2.N`); сравнение обновлений только по product semver. В 2.7.1: - обновление только по кнопке «Обновить»; можно «Пропустить эту версию» (следующую всё равно предложит). В 2.7.0: - GUI на macOS (тот же интерфейс, что на Windows): DMG → Navis.app открывает окно клиента; CLI лежит как `Navis-cli`. В 2.6.2: - быстрое отключение AWG: принудительно закрываются прокси-соединения, UI больше не зависает. В 2.6.1: - AmneziaWG: перед подключением Endpoint-хост резолвится в IP (предпочтительно IPv4) — обход сбоя IpcSet на Windows («No such host is known»). В 2.6.0: - исправлен разбор AmneziaWG: ключ в `awg://KEY@host`, JSON/`vpn://`, пробелы в именах полей, URL-safe base64. В 2.3.0: - Android APK: подписка, список нод, пинг, автолучший; VLESS/VMess/Trojan (Xray) и Hysteria 2 через VpnService. В 2.2.1: - универсальный macOS DMG (Intel + Apple Silicon), скрипт автоустановки, предупреждения при неверной архитектуре. В 2.2.0: - компактный список нод с пингом (как в Happ); - параллельный пинг, кнопка «Лучший», автоподключение к серверу с минимальной задержкой после подписки. В 2.1.0: - вторичные кнопки перекрашены (не белые), чтобы не путать с основным действием. В 2.0.0: - новый интерфейс (connect-first), обновлённая иконка и типографика; - чище UX: протокол-бейдж, сворачиваемые сервисные действия, статус-карточка. В 1.9.0: - VLESS / VMess / Trojan через официальный Xray-core (кнопка «Установить cores»). В 1.8.0: - автопроверка обновлений при старте и установка с автоперезапуском; - AmneziaWG 2.0: вставьте полный `.conf` (Jc/Jmin/Jmax, S1–S4, H1–H4, I1–I5) или `awg://…` — встроенный userspace-туннель + локальный SOCKS/HTTP. В 1.7.1 дополнительно: - обновление только скачивается в `Downloads` (без самозамены exe); - нет автопроверки обновлений и тихой загрузки cores при старте; - нет вызова `netsh winhttp`; - Windows manifest + metadata EvilFox. Если всё ещё ругается — отправьте файл как False Positive: - Microsoft: https://www.microsoft.com/wdsi/filesubmission - Google: https://safebrowsing.google.com/safebrowsing/report_error/ - VirusTotal community vote: «False positive» Полностью убрать ML-детекты обычно можно только с **Authenticode** (code signing).