Features
- IVPN
- Mullvad
WIREGUARD_PORT
support
- Surfshark
- Servers data improved (#575)
LOG_LEVEL
variable (#577)- Add IP geolocation data to HTTP control server at
/v1/publicip/ip
OPENVPN_TARGET_IP
overrides IP for OpenVPN onlyWIREGUARD_ADDRESS
accepts multiple comma separated IP networks
Fixes
FIREWALL_OUTBOUND_SUBNETS
IP rules- Wireguard
FIREWALL_VPN_INPUT_PORTS
support- Fixed cleanup of wireguard link that was preventing restarts
- Surfshark
REGION
retro-compatibility restored MULTIHOP_ONLY
defaults tono
- Fix panic for certain 'no server found' errors
- Clear IP data when VPN is stopped
Maintenance
internal/storage
rework- No more global variables
- Inject merged servers to configuration package
- Configuration parsing to use persisted servers.json (#566)
- Move server data files from
internal/constants
tointernal/storage
- Remove Windscribe debug logs
- Fix rules equality check for nil networks
internal/routing
- IP rules functions take
src
anddst
arguments as*net.IPNet
instead ofnet.IP
- IP rules functions unit tests
- IP rules functions debug logs dynamically built
- Better splitting of Go source files
- Reduce number of exported errors
- Rename
outboundsubnets.go
tooutbound.go
- Add
inbound.go
- Use
internal/netlink
instead ofgithub.com/vishvananda/netlink
- Rework
IPIsPrivate
function - Constructor returns
*Routing
struct instead of interface
- IP rules functions take
internal/subnet
created- Merge
FindSubnetsToAdd
andFindSubnetsToRemove
inFindSubnetsToChange
- Merge
internal/httpproxy
- Server constructor returns
*Server
struct instead of interface - HTTPS handling simplifications
- Server constructor returns
- Only
internal/netlink
depends ongithub.com/vishvananda/netlink
internal/provider/utils
utils.FilterByProtocol
function- Common
GetPort
for OpenVPN+Wireguard providers - Common
GetProtocol
for OpenVPN+Wireguard providers