feat(gui): add GUI (Test) implementation with documentation and admin support

- Add GUI (Test) module with Fyne-based interface (internal/gui/gui.go, internal/gui/server.go)
- Add CLI monitoring capability (internal/cli/monitor.go)
- Add main_cli.go entry point for CLI-only builds
- Add comprehensive documentation suite covering setup, build, quick start, and changelog
- Add admin manifest (admin.manifest) for Windows UAC elevation support
- Add rsrc.syso.json configuration for resource embedding
- Update .gitignore to exclude build scripts (*.bat, *.sh)
- Update main.go and cli.go to support dual GUI (Test)/CLI modes
- Update README.md with new project information
- Enables users to build and run both GUI (Test)and CLI versions with proper admin privileges on Windows
This commit is contained in:
2026-04-06 18:57:58 +06:00
parent 83fbe7afdd
commit e0a5f0f746
20 changed files with 2471 additions and 32 deletions

413
Markdown/EXAMPLES.md Normal file
View File

@@ -0,0 +1,413 @@
# Примеры использования
## Примеры VLESS URL
### VLESS с Reality
```
vless://uuid@server.com:443?security=reality&type=tcp&flow=xtls-rprx-vision&sni=example.com&fp=chrome&pbk=publickey&sid=shortid#ServerName
```
### VLESS с TLS
```
vless://uuid@server.com:443?security=tls&type=tcp&sni=example.com&fp=chrome#ServerName
```
### VLESS с WebSocket
```
vless://uuid@server.com:443?security=tls&type=ws&path=/path&host=example.com&sni=example.com#ServerName
```
### VLESS с gRPC
```
vless://uuid@server.com:443?security=tls&type=grpc&serviceName=ServiceName&mode=multi&sni=example.com#ServerName
```
### VLESS с HTTP/2
```
vless://uuid@server.com:443?security=tls&type=http&path=/path&host=example.com#ServerName
```
## Примеры подписок
### Добавление подписки
```
Имя подписки: MyVPN
URL подписки: https://example.com/sub/xxxxx
```
### Популярные VPN провайдеры
- AliusVPN
- V2rayN
- Shadowrocket
- Clash
## Примеры конфигурационных файлов
### configs.json
```json
{
"wireguard": [],
"vless": [
{
"name": "My Server",
"url": "vless://uuid@server.com:443?security=reality&type=tcp&flow=xtls-rprx-vision&sni=example.com&fp=chrome&pbk=publickey&sid=shortid#MyServer",
"protocol": "VLESS"
},
{
"name": "[MyVPN] Server 1",
"url": "vless://...",
"protocol": "VLESS",
"subscription": "MyVPN"
}
]
}
```
### subscriptions.json
```json
{
"subscriptions": [
{
"name": "MyVPN",
"url": "https://example.com/sub/xxxxx"
},
{
"name": "AnotherVPN",
"url": "https://another.com/subscription"
}
]
}
```
### state.json (подключено)
```json
{
"connected": true,
"config_name": "My Server",
"config_type": "vless",
"start_time": "2024-01-01T12:00:00Z",
"interface": "xray",
"process_pid": 12345,
"log_file": "/path/to/logs/vless_traffic_20240101_120000.log"
}
```
### state.json (отключено)
```json
{
"connected": false,
"config_name": "",
"config_type": "",
"start_time": "",
"interface": "",
"process_pid": 0,
"log_file": ""
}
```
## Примеры использования CLI
### Базовое использование
```bash
# Запуск клиента
./vpn-client
# Главное меню
# 1. VLESS
# 2. Управление подписками
# 3. Показать статус подключения
# 4. Отключиться от VPN
# 0. Выход
```
### Работа с VLESS
```bash
# В главном меню выберите 1 (VLESS)
# Меню VLESS
# 1. Список конфигураций - показать все конфиги
# 2. Добавить конфиг - добавить новый VLESS конфиг
# 3. Удалить конфиг - удалить существующий конфиг
# 4. Подключиться - подключиться к серверу
# 5. Тестировать конфиг (пинг) - проверить доступность сервера
# 0. Назад
```
### Работа с подписками
```bash
# В главном меню выберите 2 (Управление подписками)
# Меню подписок
# 1. Список подписок - показать все подписки
# 2. Добавить подписку - добавить новую подписку
# 3. Удалить подписку - удалить существующую подписку
# 4. Обновить конфиги из подписки - загрузить новые конфиги
# 5. Показать конфиги из подписки - показать конфиги конкретной подписки
# 6. Тестировать конфиги из подписки (пинг) - проверить все серверы
# 0. Назад
```
## Примеры сценариев
### Сценарий 1: Первое использование
```bash
# 1. Запустите клиент
./vpn-client
# 2. Добавьте подписку
# Выберите: 2 (Управление подписками)
# Выберите: 2 (Добавить подписку)
# Введите имя: MyVPN
# Введите URL: https://example.com/sub/xxxxx
# 3. Обновите конфиги
# Выберите: 4 (Обновить конфиги из подписки)
# Выберите номер подписки: 1
# 4. Протестируйте серверы
# Выберите: 6 (Тестировать конфиги из подписки)
# Выберите номер подписки: 1
# Дождитесь результатов
# 5. Подключитесь к лучшему серверу
# Выберите: 0 (Назад)
# Выберите: 1 (VLESS)
# Выберите: 4 (Подключиться)
# Выберите номер конфига с наименьшим пингом
# 6. Проверьте статус
# Выберите: 0 (Назад)
# Выберите: 3 (Показать статус подключения)
```
### Сценарий 2: Быстрое подключение
```bash
# Если у вас уже есть VLESS URL
# 1. Запустите клиент
./vpn-client
# 2. Добавьте конфиг
# Выберите: 1 (VLESS)
# Выберите: 2 (Добавить конфиг)
# Введите имя: Quick Server
# Вставьте VLESS URL
# 3. Подключитесь
# Выберите: 4 (Подключиться)
# Выберите: 1 (только что добавленный конфиг)
# 4. Готово!
```
### Сценарий 3: Поиск лучшего сервера
```bash
# 1. Запустите клиент
./vpn-client
# 2. Обновите подписку
# Выберите: 2 (Управление подписками)
# Выберите: 4 (Обновить конфиги из подписки)
# Выберите номер подписки
# 3. Протестируйте все серверы
# Выберите: 6 (Тестировать конфиги из подписки)
# Выберите номер подписки
# Дождитесь завершения (может занять несколько минут)
# 4. Посмотрите результаты
# Программа покажет топ-5 серверов с наименьшим пингом
# 5. Подключитесь к лучшему
# Выберите: 0 (Назад)
# Выберите: 1 (VLESS)
# Выберите: 4 (Подключиться)
# Найдите сервер из топ-5 и подключитесь
```
### Сценарий 4: Переключение между серверами
```bash
# 1. Отключитесь от текущего сервера
# В главном меню выберите: 4 (Отключиться от VPN)
# 2. Подключитесь к другому серверу
# Выберите: 1 (VLESS)
# Выберите: 4 (Подключиться)
# Выберите другой конфиг
# Или используйте быстрый способ:
# Просто подключитесь к новому серверу
# Клиент автоматически отключит предыдущее соединение
```
## Примеры настройки браузера
### Firefox
```
1. Откройте: about:preferences#general
2. Прокрутите до "Параметры сети"
3. Нажмите "Настроить..."
4. Выберите "Ручная настройка прокси"
5. SOCKS Host: 127.0.0.1
6. Port: 10808
7. Выберите "SOCKS v5"
8. Отметьте "Использовать прокси DNS при использовании SOCKS v5"
9. Нажмите "OK"
```
### Chrome (с расширением)
```
1. Установите расширение "Proxy SwitchyOmega"
2. Создайте новый профиль
3. Protocol: SOCKS5
4. Server: 127.0.0.1
5. Port: 10808
6. Сохраните и активируйте профиль
```
### Системный прокси (Windows)
```
1. Настройки → Сеть и Интернет → Прокси
2. Ручная настройка прокси
3. Использовать прокси-сервер: Вкл
4. Адрес: 127.0.0.1
5. Порт: 10808
6. Сохранить
```
### Системный прокси (macOS)
```
1. Системные настройки → Сеть
2. Выберите активное подключение
3. Дополнительно → Прокси
4. Отметьте "SOCKS прокси"
5. Сервер: 127.0.0.1
6. Порт: 10808
7. OK → Применить
```
### Системный прокси (Linux)
```bash
# Временно (для текущей сессии)
export ALL_PROXY=socks5://127.0.0.1:10808
# Постоянно (добавьте в ~/.bashrc или ~/.zshrc)
echo 'export ALL_PROXY=socks5://127.0.0.1:10808' >> ~/.bashrc
source ~/.bashrc
```
## Примеры проверки подключения
### Проверка IP адреса
```bash
# Через curl
curl -x socks5://127.0.0.1:10808 https://api.ipify.org
# Через браузер
# Откройте: https://whatismyipaddress.com/
```
### Проверка работы прокси
```bash
# Проверка доступности прокси
curl -x socks5://127.0.0.1:10808 https://www.google.com
# Если работает, вы увидите HTML код страницы
```
## Примеры логов
### Успешное подключение
```
[2024-01-01 12:00:00] Создание конфига для сервера: server.com:443
[2024-01-01 12:00:00] UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
[2024-01-01 12:00:00] Транспорт: tcp
[2024-01-01 12:00:00] Безопасность: reality
[2024-01-01 12:00:00] Успешно подключено к 'My Server' (PID: 12345, Лог: /path/to/log)
```
### Ошибка подключения
```
[2024-01-01 12:00:00] Начало подключения к 'My Server' через Xray
[2024-01-01 12:00:01] Ошибка подключения: процесс xray завершился с ошибкой
[2024-01-01 12:00:01] Проверьте конфигурацию и доступность сервера
```
### Тестирование сервера
```
Тестирование 'My Server'...
Проверка доступности сервера...
✓ Сервер доступен
Адрес: server.com:443
Пинг: 45.23 мс
Качество: Отлично
```
## Полезные команды
### Проверка процесса Xray
```bash
# Linux/macOS
ps aux | grep xray
# Windows
tasklist | findstr xray
```
### Просмотр логов в реальном времени
```bash
# Linux/macOS
tail -f logs/vless_traffic_*.log
# Windows (PowerShell)
Get-Content logs\vless_traffic_*.log -Wait -Tail 50
```
### Остановка зависшего процесса
```bash
# Linux/macOS
killall xray
# Windows
taskkill /F /IM xray.exe
```
## Советы и трюки
1. **Используйте тестирование перед подключением** - это сэкономит время
2. **Регулярно обновляйте подписки** - серверы могут меняться
3. **Сохраняйте лучшие серверы** - добавьте их как отдельные конфиги
4. **Проверяйте логи при проблемах** - там обычно есть ответы
5. **Используйте серверы с пингом < 100ms** - для комфортной работы
6. **Не забывайте отключаться** - освобождайте ресурсы