# Navis

Клиент [NaiveProxy](https://github.com/klzgrad/naiveproxy) + [Hysteria 2](https://github.com/apernet/hysteria) + [AmneziaWG 2.0](https://docs.amnezia.org/documentation/amnezia-wg/) с профилями, пингом, URL-подпиской и автообновлением.

## Платформы

| OS | Артефакты | UI |
|----|----------|----|
| Windows amd64 | `Navis.exe` | GUI (WebView2) |
| macOS arm64 | `Navis` · **`Navis.dmg`** · `Navis.app.zip` | CLI / .app |
| macOS amd64 | `Navis` · **`Navis.dmg`** · `Navis.app.zip` | CLI / .app |

## Скачать macOS прямо с git

Репозиторий: https://git.evilfox.cc/test2/navi

### 1. Узнайте архитектуру Mac

В Терминале:

```bash
uname -m
```

- `arm64` → Apple Silicon (M1/M2/M3/M4) → папка **darwin-arm64**
- `x86_64` → Intel → папка **darwin-amd64**

### 2a. Скачать DMG (удобнее)

**Apple Silicon:**

```bash
cd ~/Downloads
curl -fL -o Navis.dmg \
  "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-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/darwin-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/darwin-arm64/Navis.app.zip"
# amd64
curl -fL -o Navis.app.zip \
  "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-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/darwin-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/darwin-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) |
|-------------|-----|-----|------------|
| arm64 | [Navis](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis) | [Navis.dmg](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.dmg) | [Navis.app.zip](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.app.zip) |
| amd64 | [Navis](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis) | [Navis.dmg](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.dmg) | [Navis.app.zip](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.app.zip) |
| манифест | [update.json](https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json) | | |

## Сборка Windows

```bat
build.bat
```

или:

```bat
go build -ldflags="-H windowsgui -s -w" -o Navis.exe ./cmd/vpnapp
```

## Сборка macOS (кросс с Windows / Linux)

```bat
build-macos.bat
```

или:

```bash
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o dist/navis-release/darwin-arm64/Navis ./cmd/vpnclient
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o dist/navis-release/darwin-amd64/Navis ./cmd/vpnclient
```

## Обновления

Манифест: `https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json`

Формат (multi-platform):

```json
{
  "version": "1.4.0",
  "notes": "…",
  "platforms": {
    "windows-amd64": { "url": "…/Navis.exe", "sha256": "…" },
    "darwin-arm64":  { "url": "…/darwin-arm64/Navis", "sha256": "…" },
    "darwin-amd64":  { "url": "…/darwin-amd64/Navis", "sha256": "…" }
  }
}
```

Клиент сам выбирает ключ `GOOS-GOARCH`.

## Купить доступ

https://evilfox.win/

## Антивирусы (ложные срабатывания)

Некоторые AV (Bkav, Microsoft Wacapew/Wacatac, Ikarus Trojan.WinGo.Agent, Google, Trapmine) часто помечают **любые** неподписанные Go-бинарники с сетью и сменой системного прокси.

В 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).
