Features
- IVPN support
OPENVPN_VERSIONwhich can be2.4or2.5to choose your OpenVPN program version at runtime- Filter Cyberghost servers by
SERVER_HOSTNAME - Filter Mullvad servers by
SERVER_HOSTNAME - Filter NordVPN servers by
SERVER_HOSTNAMEand/orSERVER_NAME - Filter Privado servers by
COUNTRY,REGIONand/orCITY - Filter Private Internet Access servers by
SERVER_HOSTNAMEand/orSERVER_NAME - Filter ProtonVPN servers with
FREE_ONLY - Filter PureVPN servers by
SERVER_HOSTNAME - Filter Surfshark servers by
SERVER_HOSTNAME - Multiple IP addresses for each:
- Torguard server
- Windscribe server
- Private Internet Access server
- All hardcoded server information updated
- Support
noneencryption preset for Private Internet Access - Log Alpine version at start
NET_ADMINtip logged when a routing permission error occurs- Create
/gluetunif it does not exist
Bug fixes
- ProtonVPN
SERVER_NAMEenvironmnent variable reading - Fix Mullvad servers filtering (see #444)
- Record TCP and UDP support for each PureVPN server
- Only teardown routing configuration if changes to routing occurred
- Fix VyprVPN port
- Fix missing OpenVPN
authoverrides - Only set OpenVPN
fast-iooption when using UDP - Upgrade dependencies to fix dependency vulnerabilities
golang.org/x/systo current versiongithub.com/qdm12/dnsfromv1.4.0tov1.7.0github.com/qdm12/ss-serverfromv0.1.0tov0.2.0
- Fix rebinding protection for IPv6 mapped IPv4 networks
- Use
netaddrpackage for DNS blacklisting
- Use
- Log custom port only if set (for Private Internet Access and Windscribe)
- Change log level for OpenVPN TLS error from debug to warn
- Servers listen on all IP interfaces with
:<port>, not just IPv4 with0.0.0.0:<port> - HideMyAss hostname choices
- HideMyAss OpenVPN configuration
remote hostname portline
Changes
- Do not exit program on an OpenVPN configuration error
- Keep firewall enabled on shutdown to avoid leaks
- Shadowsocks password is now compulsory
Documentation
- Issue template warnings about answering all questions
Maintenance
- Refactor
internal/updaterpackage- Require at least 80% of current number of servers to update server information
- Each provider is in its own package with a common structure
internal/updater/unzippackage withUnzipperinterfaceinternal/updater/openvpnpackage with extraction and download functions
- Improve
internal/storagepackage:- Add missing server merging logic
logTimeDiffshared function
- Add unset
SERVER_NAMEin Dockerfile - Improve
internal/publicippackage:- Exported
Resultstruct - Parallelize IP information fetch
- Exported
- Snyk code security analysis for Go code and Docker image
- Common server not found error builder
- Improve
internal/updater/providers/torguard- Fallback on IP from configuration file if DNS resolution fails
- Download both TCP and UDP zip files to detect support for each
- Filter Torguard servers by protocol (although all support TCP and UDP, so not a feature really)
- Improve
internal/updater/providers/vyprvpn- Extract from each server configuration if the server supports TCP and/or UDP (never TCP for now)
- Filter VyprVPN servers by protocol (although all support only TCP for now, so not a feature really)
internal/updater/providers/pia: re-fetch PIA API to obtain more server informationinternal/routing: improve error wrapping- Network protocol as boolean in code to avoid possible coding errors
internal/provider: split each provider in its own packageinternal/alpine: improve error wrappingcmd/gluetun/main.go:- Shutdown order, added in
internal/shutdownpackage- Order of threads to shutdown (control then tickers then health etc.)
- Rely on closing channels instead of waitgroups
- Move exit logs from each package to the shutdown package
- Use Go 1.16's
signal.NotifyContext - Improve
printVersionfunction- Print program versions in order given
- Exit program on any error as each program is required
- Shutdown order, added in
- Generate OpenVPN configuration valid for OpenVPN
2.4or2.5depending on the current version Dockerfile:- Remove outdated comments
- Remove unused openvpn installed shell script and library files
- Use
ioinstead ofioutilwhenever possible - Upgrade qdm12/golibs (affects logger)
- Upgrade golangci-lint to
v1.40.1- Add more linters to
.golangci.yml
- Add more linters to
- Dependabot
- Bump actions/checkout from 2 to 2.3.4 (#453)