MCPcopy Index your code
hub / github.com/AandStep/ResultV

github.com/AandStep/ResultV @v3.2.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.2.6 ↗ · + Follow
1,971 symbols 5,640 edges 243 files 500 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ResultProxy logo

ResultV (ранее ResultProxy)

Настольный клиент для ВПН и прокси на Windows (поддержка macOS/Linux в бета тесте): Wails, Go и sing-box.

Маршрутизация, подписки, умные правила и интеграция с системой в одном приложении.

Version Wails Go React sing-box

ВозможностиРуководствоРазработкаСборкаСайт

Русский | English

Сайт и загрузки: result-proxy.ruTelegram-канал: @resultvpn


О проекте

ResultV 3.2.6 — нативное настольное приложение на Wails v2. Интерфейс: React 18, Vite, Tailwind CSS; трафик обрабатывает бэкенд на Go и движок sing-box (теги сборки заданы в wails.json). Локализация через i18next (русский и английский).

Готовые сборки: в GitHub Actions публикуются артефакты Windows amd64 (portable .exe и установщик NSIS), macOS (.dmg) и Linux (.AppImage, .deb, .rpm) при push тега v*.


Установка

Готовые сборки лежат на странице Releases — собирать через Wails вручную не нужно.

Windows

Скачайте установщик *-installer.exe (или portable .exe) и запустите.

macOS

Скачайте ResultV.dmg, откройте и перетащите приложение в Applications.

Linux

Для всех дистрибутивов универсальный вариант — AppImage, отдельная установка не нужна:

chmod +x ResultV*.AppImage
./ResultV*.AppImage

Если AppImage не стартует, поставьте FUSE (fuse2): на Debian/Ubuntu — sudo apt install libfuse2, на Fedora — sudo dnf install fuse, на Arch/CachyOS — sudo pacman -S fuse2.

Arch / CachyOS (и другие Arch-based): AppImage работает нативно (нужен только fuse2, см. выше). Пакеты .deb/.rpm напрямую не ставятся — используйте AppImage.

NixOS: AppImage не запускается напрямую — в системе нет стандартного FHS-загрузчика. Запуск через обёртку:

nix-shell -p appimage-run --run "appimage-run ./ResultV*.AppImage"

Либо включите автоматический запуск AppImage в configuration.nix и пересоберите систему:

programs.appimage.enable = true;
programs.appimage.binfmt = true;

После этого AppImage запускается обычным ./ResultV*.AppImage.

Debian / Ubuntu.deb: sudo apt install ./ResultV*.deb Fedora / RHEL / openSUSE.rpm: sudo dnf install ./ResultV*.rpm (или sudo zypper install).

Текущие сборки — linux/amd64 (x86_64).


Возможности

  • Режимы Proxy и Tunnel (TUN) для системной маршрутизации там, где это применимо
  • Протоколы: HTTP, HTTPS, SOCKS5, VLESS, VMESS, Trojan, Shadowsocks, WireGuard, AmneziaWG, Hysteria2
  • Подписки: добавление, обновление, удаление URL; группировка по провайдеру/стране при наличии данных
  • Импорт: вставка из буфера обмена или массовый импорт из .txt / .csv / .conf
  • Умные правила: режимы Global и Smart; исключения по доменам и приложениям (в движке поддерживаются вложенные правила)
  • Kill Switch, опционально блокировка рекламы, автозапуск
  • Зашифрованный экспорт/импорт конфигурации (пароль к данным)
  • Экран логов (сообщения UI и бэкенда)
  • Работа из системного трея;
  • Проверка обновлений по update.json на GitHub (см. Обновления)

Протоколы и ограничения

Категория Протоколы
Классический прокси HTTP, HTTPS, SOCKS5
VPN-стек (sing-box) VLESS, VMESS, Trojan, SS, WireGuard, AmneziaWG, Hysteria2

Важно:

  • WireGuard и AmneziaWG работают только в режиме Tunnel, в режиме Proxy недоступны (проверка в internal/proxy/manager.go).
  • AmneziaWG 2.0 — полный набор полей обфускации: классические Jc/Jmin/Jmax, размеры S1–S4, заголовки H1–H4, специальные джанки I1–I5 + Itime, рукопожатие-джанки J1–J3. В UI их можно задавать в структурированном редакторе (вкладка AmneziaWG) либо в режиме «Raw JSON». Принимаются URI вида awg://...?Jc=5&Jmin=10&Jmax=50&S1=16&I1=...&J1=...&Itime=300 (как в нижнем, так и в верхнем регистре — клиенты AmneziaVPN отдают Jc/Jmin/...).
  • Подписки в JSON (Xray-формат с outbounds[] и sing-box-формат с type) разбираются для всех ключевых протоколов, включая wireguard/amneziawg с блоком amnezia.
  • Режим Tunnel в Windows требует запуска от имени администратора.
  • Kill Switch в Windows может требовать прав администратора для правил брандмауэра (internal/system/killswitch_windows.go).
  • Если после сбоя/принудительного завершения приложения интернет остается заблокирован, выполните в PowerShell (Администратор): Get-NetFirewallRule -DisplayName 'ResultV_KillSwitch*' -ErrorAction SilentlyContinue | Remove-NetFirewallRule
  • Некоторые провайдеры подписок используют HWID-ограничение устройств; приложение передает стабильный x-hwid при загрузке подписок и показывает причину, если провайдер вернул пустой ответ по лимиту.
  • При сбоях просьба писать в ТГ @resultpoint_manager.

Руководство пользователя

Скриншоты ниже показывают русский интерфейс (файлы в docs/images/readme/).

Главная

Подключение и отключение, выбор режима Proxy / Tunnel, переключение серверов, сводка трафика при активном соединении.

Главная

Купить прокси

Вкладка Купить ведёт на партнёрские предложения (impVPN:telegram), (impVPN:site) - Лучшие ВПН сервера по доступным ценам, а по промокоду result бонус 20% к пополнению баланса. Если у вас уже есть сервер или подписка, шаг можно пропустить.

Купить прокси

Добавить сервер или подписку

Ручной ввод, вставка ссылок подписки и share-ссылок, массовый импорт из буфера или файлов.

Добавить сервер

Список прокси

Карточки серверов, пинг, редактирование и удаление, работа с группами от подписок, добавление серверов в избранное.

Список прокси

Умные правила

Режимы Global и Smart; вкладки исключений по сайтам (например *.example.com) и по приложениям.

Умные правила

Умные правила

Логи

Просмотр сообщений для диагностики подключения и маршрутизации.

Логи

Настройки

Автозапуск, Kill Switch, блокировка рекламы, кастомные DNS, слушание локальной сети и выставление локального порта экспорт/импорт с паролем.

Настройки

Настройки


Обновления

Версия приложения берётся из встроенного wails.json / GetVersion и сравнивается с удалённым [update.json](https://raw.githubusercontent.com/AandStep/ResultProxy/main/update.json). Текст релиза и номер версии для ленты обновлений дублируются в корневом [update.json](./update.json).


Разработка

Требования

  • Go: совместимый с [go.mod](./go.mod) (директивы go и toolchain)
  • Node.js: 20+ (в CI для релизов используется 24)
  • Wails CLI v2: go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • Windows: среда выполнения WebView2 (обычно уже есть в Windows 10/11)

Запуск в режиме разработки

Из корня репозитория:

wails dev

Запускается Vite с горячей перезагрузкой и связь с Go-бэкендом.


Сборка

Локальная production-сборка

wails build

На Windows при установленном NSIS можно добавить установщик:

wails build -nsis

Результат в build/bin/ (см. [build/README.md](./build/README.md)).

Релизы в CI

В [.github/workflows/release.yml](./.github/workflows/release.yml) выполняется wails build -clean -nsis -platform windows/amd64 и публикация GitHub Release.


Стек технологий

Слой Технологии
Оболочка Wails v2
UI React 18, Vite, Tailwind CSS, i18next
Бэкенд Go
Прокси-ядро sing-box (go.mod, replace), теги сборки в [wails.json](./wails.json)
Трей getlantern/systray, платформенный код в internal/getlantern_systray/

Лицензия

Проект распространяется под GNU General Public License v3.0 — см. [LICENSE](./LICENSE).

Extension points exported contracts — how you extend this code

SystemProxy (Interface)
(no doc) [5 implementers]
internal/proxy/sysproxy.go
KillSwitch (Interface)
(no doc) [5 implementers]
internal/system/killswitch.go
ProgressFn (FuncType)
ProgressFn is called during download with bytes downloaded, total size, and current speed in bytes per second. total may
internal/updater/updater.go
Position (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts
EventEmitter (FuncType)
(no doc)
internal/logger/logger.go
SystemDNS (Interface)
SystemDNS overrides the OS resolver list for the duration of a VPN session. Why: in Proxy mode sing-box doesn't interce [3 …
internal/proxy/sysdns.go
Logger (Interface)
Logger is the minimal logging surface used by the monitor. Pass nil to silence diagnostic output. [1 implementers]
internal/system/processtree/processtree.go
Size (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts

Core symbols most depended-on inside this repo

getStringField
called by 98
internal/proxy/outbound.go
Error
called by 86
internal/logger/logger.go
Set
called by 79
internal/proxy/sysproxy.go
asString
called by 75
internal/proxy/uriparser.go
Warning
called by 67
internal/system/processtree/processtree.go
Info
called by 62
internal/system/processtree/processtree.go
New
called by 46
internal/logger/logger.go
NewManager
called by 43
internal/proxy/manager.go

Shape

Function 1,317
Method 469
Struct 127
Class 34
Interface 18
FuncType 3
TypeAlias 3

Languages

Go79%
TypeScript21%

Modules by API surface

app.go112 symbols
internal/proxy/manager.go70 symbols
frontend/wailsjs/go/models.ts68 symbols
frontend/wailsjs/runtime/runtime.js67 symbols
internal/proxy/engine.go60 symbols
internal/proxy/engine_route_test.go52 symbols
frontend/wailsjs/go/main/App.js50 symbols
internal/proxy/uriparser.go47 symbols
frontend/src/utils/proxyParser.js41 symbols
internal/proxy/sysproxy_linux.go31 symbols
internal/proxy/singbox.go31 symbols
internal/proxy/sysdns_windows.go29 symbols

For agents

$ claude mcp add ResultV \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact