v3.35.0
passteque/gluetunv3.35.0Jun 28, 2023by qdm12
AI Summary
Focus on Wireguard improvements, Alpine upgrade, and OpenVPN 2.6 support. Deprecated OpenVPN 2.4 and introduced NordVPN Wireguard support.
Key Highlights
- Added `WIREGUARD_MTU` environment variable
- Added `OPENVPN_VERSION=2.6` support
- NordVPN Wireguard support and new API endpoint
- Alpine upgraded from 3.17 to 3.18
Breaking Changes
- Openvpn 2.4 no longer supported
- Control server JSON field names changed (Soft breaking)
New Features
- Wireguard MTU defaults to 1400 instead of 1420
- Wireguard debug logs log obfuscated keys
- NordVPN Wireguard support added
- OpenVPN 2.6 support added
Full Release Notes
➡️ 📖 [Corresponding wiki](https://github.com/qdm12/gluetun-wiki/tree/v3.35.0)
## Features
- `WIREGUARD_MTU` enviromnent variable (#1571)
- `OPENVPN_VERSION=2.6` support
- **Soft breaking changes**:
- Openvpn 2.4 no longer supported
- Control server JSON field names changed
- NordVPN Wireguard support and new API endpoint (#1380)
- Wireguard MTU defaults to 1400 instead of 1420
- Wireguard debug logs log obfuscated keys
- Bump Alpine from 3.17 to 3.18
- Shadowsocks bumped from v0.4.0 to v0.5.0-rc1
## Fixes
- AirVPN: allow Airvpn as Wireguard provider
- routing: ip family match function ipv4-in-ipv6 should match ipv6
- HTTP proxy: fix httpproxy.go error message (#1596)
- Netlink:
- `RouteList` list routes from all tables and does no longer filter by link
- use `AddrReplace` instead of `AddrAdd`
- Wireguard: delete existing Wireguard link before adding it
## Documentation
- Readme: fix Alpine version from 3.17 to 3.18 (#1636)
- Github labels: add problem category labels: Config problem, Routing, IPv6, Port forwarding
## Maintenance
### Code
- `internal/routing`:
- remove old assigned ip debug log
- unexport `IPIsPrivate` as `ipIsPrivate`
- remove unused `VPNDestinationIP`
- `internal/settings`: use `github.com/qdm12/gosettings`
- remove now unused settings helpers
- remove now unused helpers/messages.go
- use helping functions: `FileExists`, `ObfuscateKey`, `BoolToYesNo`
- use `gosettings/sources/env` functions
- `internal/netlink`:
- IPv6 detection simplified
- Define own types with minimal fields and separate code by OS
- Allow to swap `github.com/vishvananda/netlink`
- Add files tagged for each platform
- Create non-implemented files for NOT linux
- Allow development on non-Linux platforms
- `internal/httpproxy`: add `Test_returnRedirect` to prevent error wrap of `ErrUseLastResponse`
- `internal/settings/secrets`: add test for `readSecretFileAsStringPtr`
### Dependencies
- Bump github.com/breml/rootcerts from 0.2.10 to 0.2.11 (#1567)
- Bump github.com/stretchr/testify from 1.8.2 to 1.8.4 (#1575, #1633)
- Bump golang.org/x/text from 0.9.0 to 0.10.0 (#1681)
### CI
- CI triggers for pull requests to branches other than master
- Bump docker/build-push-action from 4.0.0 to 4.1.1 (#1684)
### Development tooling
- Update devcontainer definitions
- Set build tag as `linux` for cross development
- Specify `.vscode` recommendations
- Linting:
- upgrade to v1.53.2
- add linters `dupword`, `paralleltest`, `gosmopolitan`, `mirror`, `tagalign`, `zerologlint` and `gocheckcompilerdirectives`
- add linter `musttag` and fix lint errors (change JSON fields in control server)