Features
- IVPN
- Mullvad
WIREGUARD_PORTsupport
- Surfshark
- Servers data improved (#575)
LOG_LEVELvariable (#577)- Add IP geolocation data to HTTP control server at
/v1/publicip/ip OPENVPN_TARGET_IPoverrides IP for OpenVPN onlyWIREGUARD_ADDRESSaccepts multiple comma separated IP networks
Fixes
FIREWALL_OUTBOUND_SUBNETSIP rules- Wireguard
FIREWALL_VPN_INPUT_PORTSsupport- Fixed cleanup of wireguard link that was preventing restarts
- Surfshark
REGIONretro-compatibility restored MULTIHOP_ONLYdefaults tono- Fix panic for certain 'no server found' errors
- Clear IP data when VPN is stopped
Maintenance
internal/storagerework- No more global variables
- Inject merged servers to configuration package
- Configuration parsing to use persisted servers.json (#566)
- Move server data files from
internal/constantstointernal/storage - Remove Windscribe debug logs
- Fix rules equality check for nil networks
internal/routing- IP rules functions take
srcanddstarguments as*net.IPNetinstead 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.gotooutbound.go - Add
inbound.go - Use
internal/netlinkinstead ofgithub.com/vishvananda/netlink - Rework
IPIsPrivatefunction - Constructor returns
*Routingstruct instead of interface
- IP rules functions take
internal/subnetcreated- Merge
FindSubnetsToAddandFindSubnetsToRemoveinFindSubnetsToChange
- Merge
internal/httpproxy- Server constructor returns
*Serverstruct instead of interface - HTTPS handling simplifications
- Server constructor returns
- Only
internal/netlinkdepends ongithub.com/vishvananda/netlink internal/provider/utilsutils.FilterByProtocolfunction- Common
GetPortfor OpenVPN+Wireguard providers - Common
GetProtocolfor OpenVPN+Wireguard providers