v3.24.0
passteque/gluetunv3.24.0Sep 8, 2021by qdm12
AI Summary
Adds IVPN Wireguard and TCP support, Mullvad Wireguard port support, Surfshark improvements, and exposes IP geolocation data via the control server API.
Key Highlights
- IVPN Wireguard and TCP support
- Mullvad Wireguard port support
- IP geolocation data available at `/v1/publicip/ip`
- Surfshark server information improvements
New Features
- IVPN Wireguard and TCP support
- Mullvad Wireguard port
- IP geolocation API
- Surfshark improvements
Full Release Notes
## Features - IVPN - Wireguard support (#584) - TCP protocol support for OpenVPN - Custom port support for OpenVPN - Servers data update (#578) - `ISP` filter (#578) - 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 only - `WIREGUARD_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 to `no` - 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` to `internal/storage` - Remove Windscribe debug logs - Fix rules equality check for nil networks - `internal/routing` - IP rules functions take `src` and `dst`arguments as `*net.IPNet` instead of `net.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` to `outbound.go` - Add `inbound.go` - Use `internal/netlink` instead of `github.com/vishvananda/netlink` - Rework `IPIsPrivate` function - Constructor returns `*Routing` struct instead of interface - `internal/subnet` created - Merge `FindSubnetsToAdd` and `FindSubnetsToRemove` in `FindSubnetsToChange` - `internal/httpproxy` - Server constructor returns `*Server` struct instead of interface - HTTPS handling simplifications - Only `internal/netlink` depends on `github.com/vishvananda/netlink` - `internal/provider/utils` - `utils.FilterByProtocol` function - Common `GetPort` for OpenVPN+Wireguard providers - Common `GetProtocol` for OpenVPN+Wireguard providers