Releases: vNodesV/vProx
Releases · vNodesV/vProx
v1.0.2 — Backup Module, Structured Logging & CLI Hardening
What's New in v1.0.2
Added
internal/logging:NewTypedID(prefix)— generates{PREFIX}{24HEX_UPPER}correlation IDs (API, RPC, WSS, BUP)internal/logging:LineLifecycle()/PrintLifecycle()— structuredNEW/UPDlifecycle log formatinternal/backup/config.go—BackupConfigstructs,DefaultConfig(),LoadConfig()forbackup.tomlconfig/backup.sample.toml— annotated backup config; installed bymake config- CLI commands:
start,stop,restart→ delegates tosudo service vProx start|stop|restart - CLI flags:
-d/--daemon,--new-backup,--list-backup,--backup-status - Makefile
systemd:target — creates/etc/sudoers.d/vproxfor passwordless service management - Unified structured log format across API, RPC, WebSocket, and Backup modules
Changed
- Backup automation driven solely by
backup.tomlautomationbool - Chain sample moved:
chains/chain.sample.toml→config/chains/chain.sample.toml - Makefile
configtarget installs samples toconfig/chains/andconfig/backup/ - Makefile no longer creates legacy
$HOME/.vProx/chains/directory
Removed
VPROX_BACKUP_ENABLEDenv var — usebackup.tomlautomation = trueinternal/backup/cfg/config.jsonandconfig.toml— legacy dead files
Fixed
- P0 gzip response writer set
Content-Encodingafter headers committed - P0 Per-request disk I/O on access counts — moved to 1s background ticker
- P1
intToBytesreturned empty for negative integers - P1
Forwardedheader parser failed on multi-hop proxy chains (RFC 7239) - P1 Rate limiter
sync.Mapentries never evicted (~270 bytes/IP unbounded) - P1
io.ReadAllon upstream HTML with no size limit — wrapped with 10 MiBLimitReader - P2 Regex compiled per-request on hot path — now cached per (IP, host) pair
- P2
geo.Close()did not resetsync.Once; geo disabled after close - P2 WebSocket
hardTimerclosed connections from timer goroutine (gorilla race) - P3
clientIP()returned raw headers without validation (log injection) - P3
ip2lPathsevaluated$HOMEat package init; missedVPROX_HOMEoverride - P3 Geo cache never evicted slow entries — added 5-minute periodic sweep
Full Changelog: https://github.com/vNodesV/vProx/blob/main/CHANGELOG.md
vProx v1.0.1-beta
vProx v1.0.1-beta
Production-grade HTTP/WebSocket reverse proxy for Cosmos SDK blockchain nodes.
What's New in v1.0.1-beta
- MMDB compressed —
ip2l/ip2location.mmdb.gz(17 MB → 6.8 MB; 60% clone size reduction) - INSTALLATION.md — comprehensive install guide (build, configure, systemd, troubleshoot)
- docs/UPGRADE.md — upgrade guide for v0.x → v1.x migrations
- CHANGELOG.md — version history in keep-a-changelog format
- MODULES.md expanded — full ops reference (490+ lines); integrated CLI flags; fixed
make GEO=true installdocumentation bug - README.md rewritten — concise overview (~50 lines) with doc index
- approval-gate.yml — unified PR approval workflow;
/approvefrom@vNodesVafter all CI checks pass - Removed stale docs:
FLAGS.md(integrated into MODULES.md),MIGRATION.md(moved todocs/UPGRADE.md)
Key Features
- IP-based rate limiting with automatic quarantine and JSONL audit log
- Geolocation enrichment (IP2Location MMDB + GeoLite2 fallback, 10-min cache)
- Structured logging with request correlation (
X-Request-ID) - WebSocket proxy with bidirectional message pump and configurable timeouts
- Log rotation with
tar.gzarchival - Per-chain TOML config — path-based and vhost-based routing
- Systemd integration with dual-sink journalctl-compatible logging
Installation
git clone git@github.com:vNodesV/vProx.git
cd vProx
make installSee INSTALLATION.md for full setup instructions.
Dependencies
| Component | Version |
|---|---|
| Go | 1.25 (toolchain 1.25.7) |
| gorilla/websocket | v1.5.3 |
| oschwald/geoip2-golang | v1.13.0 |
| pelletier/go-toml | v2.2.4 |
| golang.org/x/time | v0.14.0 |
Documentation
| File | Purpose |
|---|---|
README.md |
Overview and quick start |
INSTALLATION.md |
Full install, config, systemd, troubleshooting |
MODULES.md |
Per-module ops reference + CLI flags |
CLI_FLAGS_GUIDE.md |
Complete CLI flag reference |
docs/UPGRADE.md |
Upgrading from v0.x |
CHANGELOG.md |
Version history |