Лёгкий portable HTTP/HTTPS forward proxy для локальной сети. Приложение запускает proxy на выбранном LAN-интерфейсе, при необходимости включает логин и пароль и показывает адрес для LenSA_Query или другого HTTP proxy-aware клиента.
v0.1.0 — первый стабильный релиз. Он проходит unit/integration-тесты, modern Windows smoke и интеграционный smoke с LenSA_Query, включая Basic-аутентификацию и длинный SSE-ответ. Legacy x86 executable собирается воспроизводимо и запускается на текущей Windows x64, но совместимость с Windows 7/8.1 и legacy Windows Server/RDP остаётся неподтверждённой до целевого runtime smoke, запланированного на v0.3.0.
Готовые portable-сборки публикуются на странице GitHub Releases. Выберите стабильный v0.1.0 и скачайте подходящий executable:
LenSA_Proxy_windows_amd64.exe— современная Windows x64;LenSA_Proxy_windows_legacy_386.exe— неподтверждённая compatibility-сборка для legacy Windows x86/x64;SHA256SUMS.txt— контрольные суммы обеих сборок.
Executable пока не подписаны коммерческим сертификатом, поэтому Windows SmartScreen может показать предупреждение о неизвестном издателе. Перед запуском сверьте файл с опубликованной SHA-256:
Get-Content .\SHA256SUMS.txt
Get-FileHash .\LenSA_Proxy_windows_amd64.exe -Algorithm SHA256- стандартный HTTP forward proxy;
- HTTPS через
CONNECTбез MITM и подмены сертификатов; - выбор конкретного RFC1918 IPv4-интерфейса и порта;
- доступ только из подсети выбранного интерфейса;
- только публичные internet targets с защитой от DNS rebinding;
CONNECTтолько к стандартному HTTPS-порту443;- опциональная HTTP Basic-аутентификация;
- генерация, раскрытие и копирование временных credentials без сохранения на диск;
- вычисляемый host без URL scheme и копирование port прямо из поля настройки для
LenSA_Query; - нативное русское Win32-окно с Start/Stop, адресом и числом активных клиентов;
- modern Windows x64 и отдельная legacy Windows x86 сборки;
- один
.exeбез WebView2, .NET, OpenGL, CGO и внешнего runtime.
- portable persistence не-secret настроек: interface, port и auth toggle сохраняются в
LenSA_Proxy.iniрядом с.exeпри закрытии и восстанавливаются при старте; - пароль не сохраняется и не читается;
- tolerant fallback на defaults при отсутствии, повреждении или неполном
.ini, а также при ненайденном имени интерфейса; - сохранение настроек — best-effort: ошибки записи игнорируются, приложение не падает;
- light/dark/system темы: переключатель в header окна, выбор сохраняется в
.ini(theme = light|dark|system); - dark palette через hardcoded hex colors, light palette — системные цвета Windows;
- системная тема: запрос Windows 10+ dark preference через registry; Windows 7 — всегда light;
- High Contrast detection: при активном HC theme toggle отключён, используются системные цвета.
- локализация;
- сохранение пароля;
- tray, автозапуск и Windows Service;
- автоматическое изменение Windows Firewall;
- SOCKS, VPN, TUN/TAP и transparent proxy;
- HTTPS MITM, сертификаты, фильтрация и traffic history;
- IPv6 listener и системная настройка proxy Windows.
- Запустите подходящий
.exeбез установки. - Выберите LAN-интерфейс и порт, по умолчанию
8080. - При необходимости включите авторизацию и введите login/password либо нажмите Сгенерировать.
- Нажмите Запустить.
- Для
LenSA_Queryскопируйте Хост безhttp://, port из основного поля, login и password соседними кнопками; режим proxy в 1С — Настройка. - Для другого proxy-aware клиента используйте те же host/port и при необходимости Basic credentials.
- Если Windows Firewall запросит разрешение, разрешайте доступ только для доверенной частной сети. Приложение само firewall rules не создаёт.
- Переключайте тему (Светлая/Тёмная/Системная) кнопками в header окна. Выбор сохраняется в
.iniи восстанавливается при следующем запуске. При активном Windows High Contrast theme toggle отключён.
При закрытии приложение сохраняет выбранный интерфейс, порт, состояние авторизации и тему в LenSA_Proxy.ini рядом с .exe. При следующем запуске настройки восстанавливаются автоматически. Пароль не сохраняется — его нужно вводить заново. Если .ini отсутствует, повреждён или содержит несуществующее имя интерфейса, приложение тихо откатывается к defaults.
curl.exe -x http://192.168.1.42:8080 http://example.com
curl.exe -x http://192.168.1.42:8080 https://example.com
curl.exe -x http://192.168.1.42:8080 -U user:password https://example.comЗамените адрес proxy на значение из окна приложения.
| Файл | Назначение |
|---|---|
LenSA_Proxy_windows_amd64.exe |
Windows 10/11 и современные Windows Server x64 |
LenSA_Proxy_windows_legacy_386.exe |
Неподтверждённая compatibility-сборка для Windows 7/8.1 и legacy Windows Server/RDP, x86/x64 |
Legacy binary собирается go-legacy-win7 v1.26.4-1. Совместимость считается неподтверждённой до runtime smoke на целевой ОС; проверка запланирована на v0.3.0.
Требуется официальный Go 1.26.1 или совместимый более новый toolchain.
.\scripts\build-modern.ps1 -Version 0.1.0
.\scripts\build-legacy.ps1 -Version 0.1.0Modern script использует установленный официальный Go. Legacy script скачивает зафиксированный Windows amd64 archive go-legacy-win7 v1.26.4-1, проверяет SHA-256 и cross-компилирует x86 artifact. Toolchain cache и binaries находятся в ignored build//dist/.
Оба script:
- генерируют Win32 resources через
github.com/akavel/rsrc v0.10.2; - встраивают LP icon, Common Controls v6 и system-DPI manifest;
- используют
CGO_ENABLED=0,-trimpathи Windows GUI subsystem; - печатают SHA-256 готового
.exe.
go test ./...
go vet ./...
go test -race ./...
.\scripts\build-modern.ps1 -OutputDirectory build\verify-modern
.\scripts\build-legacy.ps1 -OutputDirectory build\verify-legacyIntegration suite поднимает локальные HTTP/TLS/TCP backends и проверяет HTTP body/headers, Basic auth, SSE streaming, неизменный target TLS certificate, private-target blocking, CONNECT, Stop и повторный bind порта без внешнего internet dependency.
- Go 1.23 language baseline — domain, application и network core;
- goproxy v1.8.4 — HTTP forward proxy и
CONNECTengine; - Windigo v0.2.6 — pure-Go Win32 UI;
- go-legacy-win7 v1.26.4-1 — отдельный legacy build toolchain;
- rsrc v0.10.2 — compile-time icon/manifest resources.
Слои: presentation → application → domain ← infrastructure.
cmd/lensa-proxy/— composition root;internal/presentation/windows/— нативный Windows UI;internal/application/— Start/Stop state machine и snapshots;internal/domain/proxy/— конфигурация, состояния и инварианты;internal/infrastructure/network/— interfaces, ACL, safe resolver/dialer, listener и proxy engine;tests/integration/— end-to-end HTTP/SSE/TLS/CONNECT lifecycle tests.
UI не содержит сетевой логики. Windows-specific код изолирован в presentation/composition root; proxy core не зависит от Windigo.
- listener никогда не использует
0.0.0.0; - source IP берётся из TCP connection и проверяется по выбранному CIDR;
- private, loopback, link-local, multicast, CGNAT, documentation и local-host targets блокируются;
- DNS разрешается один раз, dial выполняется к проверенному literal IP;
- credentials сравниваются через fixed-size SHA-256 digest и constant-time comparison;
Proxy-Authorizationи hop-by-hop headers не уходят upstream;- request body, credentials, token и полный URL не логируются;
- Stop закрывает обычные и hijacked
CONNECTconnections; - HTTPS payload остаётся end-to-end encrypted между клиентом и target.
| Репозиторий | Роль | Описание |
|---|---|---|
LenSA_Query |
клиент | Внешняя обработка 1С с host/port/credentials HTTP proxy |
swancode_server |
server | Основной upstream LenSA |
rdp-ghost |
UI reference | Референс compact portable Windows utility |
Changelog.md— история изменений;docs/flows/proxy-lifecycle.md— current lifecycle HTTP/CONNECT;docs/mockups/v0.1-ui.html— утверждённый UI mockup;docs/specs/— локальные phase specs;docs/todo.md— локальный roadmap.