A wireproxy wrapper with database-backed VPN configuration management that automatically creates SOCKS5 proxies for all stored VPN configurations.
cmd/db/- Database helper tool for managing VPN configurationscmd/scrappah/- Main server applicationpkg/db/- Database layer with Repository patternpkg/wp_config.go- Wireproxy configuration parsing and validation
# Build and add VPN configurations
make build
make run-db ARGS="add /path/to/your/wireguard.conf"
# Start the proxy server (creates SOCKS5 proxies starting from port 8001)
make run-server
# Test your connection through the first proxy
make test-proxymake build # Build both executables
make build-db # Build database helper only
make build-server # Build main server onlyThe database helper (cmd/db/) provides commands for managing VPN configurations:
make run-db ARGS="list"make run-db ARGS="add /path/to/config.conf"make run-db ARGS="revalidate"The main server (cmd/scrappah/) automatically:
- Loads all VPN configurations from the database
- Dynamically adds SOCKS5 proxy sections to each config (starting from port 8001)
- Starts multiple WireGuard tunnels - one for each valid configuration
- Creates SOCKS5 proxies accessible on sequential ports
# Test IP through first proxy (port 8001)
make test-proxy
# Test with specific proxy port
curl --socks5 localhost:8001 https://api.ipify.org
curl --socks5 localhost:8002 https://api.ipify.org
# ... etc for each configured VPNmake fmt # Format Go code
make vet # Run go vet
make lint # Run golangci-lint (or vet if not available)make test # Run all tests
make test-verbose # Run tests with verbose output
make test-coverage # Run tests with coveragemake clean # Remove built binaries- Database-backed config storage: Store and manage multiple VPN configurations
- Automatic SOCKS5 proxy creation: Dynamically adds SOCKS5 proxy sections to each VPN config
- Multi-tunnel support: Runs multiple WireGuard tunnels simultaneously (one per VPN config)
- Sequential port allocation: Automatically assigns unique ports starting from 8001
Uses a local SQLite database (local.db) to store VPN configurations. Each config includes:
- Name (derived from filename)
- Active status
- Configuration content (validated wireproxy format)
This is really just a small wrapper around wireproxy to make it easier to manage VPN configurations and spin up many. All credits to them!