# VPN Client (Go)

VPN клиент на Golang с поддержкой VLESS протокола и подписок.

## 🚀 Возможности

- ✅ Поддержка WireGuard
- ✅ Поддержка VLESS протокола через Xray
- ✅ Управление подписками
- ✅ Автоматическое обновление конфигураций из подписок
- ✅ Тестирование серверов (ping)
- ✅ Детальное логирование
- ✅ Статистика трафика для WireGuard
- ✅ Кроссплатформенность (Windows, Linux, macOS)

## Требования

- Go 1.21 или выше
- Xray-core (автоматически загружается и используется из папки `xray`)
- WireGuard (для Windows: https://www.wireguard.com/install/, для Linux: `apt install wireguard` или `yum install wireguard-tools`)

## Установка

### Инициализация зависимостей

```bash
# Windows
init_gui.bat

# Linux/macOS
chmod +x init_gui.sh
./init_gui.sh
```

### Сборка GUI версии

```bash
# Windows
build_gui.bat

# Linux/macOS
chmod +x build_gui.sh
./build_gui.sh
```

### Сборка CLI версии (опционально)

```bash
# Windows
build.bat

# Linux/macOS
chmod +x build.sh
./build.sh
```

## Использование

### Запуск GUI (по умолчанию)

```bash
# Windows
vpn-client-gui.exe

# Linux/macOS
./vpn-client-gui
```

### Запуск CLI режима

```bash
# Windows
vpn-client-gui.exe --cli

# Linux/macOS
./vpn-client-gui --cli
```

## Основные возможности CLI

### WireGuard

* управление конфигами (добавить / удалить / список)
* подключение
* статистика трафика

### VLESS

* управление конфигами
* подключение через Xray
* ping-тест серверов

### Подписки

* добавление / удаление
* обновление конфигураций
* просмотр и тест конфигов

### Статус

* текущее подключение
* время сессии
* информация о прокси
* трафик (WireGuard)

## 📁 Структура проекта

```
.
├── main.go
├── internal/
│   ├── cli/
│   ├── config/
│   ├── wireguard/
│   ├── vless/
│   ├── subscription/
│   ├── vpn/
│   └── logger/
├── .vpn_client/
└── logs/
```

## Конфигурация

Все конфигурационные файлы хранятся в папке `.vpn_client/`:

- `configs.json` - конфигурации VLESS
- `subscriptions.json` - подписки
- `state.json` - текущее состояние подключения

## Логи

Логи сохраняются в папке `logs/`:

- `vless.log` - основной лог
- `vless_access.log` - лог доступа (IP, подключения)
- `vless_error.log` - лог ошибок
- `vless_traffic_*.log` - логи трафика для каждого подключения

## Прокси

После подключения к VLESS серверу, SOCKS5 прокси доступен по адресу:
```
127.0.0.1:10808
```

Настройте браузер или систему на использование этого прокси.

## Отличия от Python версии

- ✅ Более быстрая работа
- ✅ Один исполняемый файл без зависимостей
- ✅ Меньшее потребление памяти
- ✅ Нативная кроссплатформенность
- ✅ Полная поддержка WireGuard
- ✅ Полная поддержка VLESS
- ⚠️ Нет GUI версии
- ⚠️ Нет автоматической настройки системного прокси (пока)

## Разработка

### Добавление новых функций

1. Создайте новый пакет в `internal/`
2. Реализуйте функциональность
3. Интегрируйте в CLI (`internal/cli/cli.go`)

### Тестирование

```bash
go test ./...
```

## Лицензия

AGPL 3.0
