Features
- IVPN support
OPENVPN_VERSION
which can be2.4
or2.5
to choose your OpenVPN program version at runtime- Filter Cyberghost servers by
SERVER_HOSTNAME
- Filter Mullvad servers by
SERVER_HOSTNAME
- Filter NordVPN servers by
SERVER_HOSTNAME
and/orSERVER_NAME
- Filter Privado servers by
COUNTRY
,REGION
and/orCITY
- Filter Private Internet Access servers by
SERVER_HOSTNAME
and/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
none
encryption preset for Private Internet Access - Log Alpine version at start
NET_ADMIN
tip logged when a routing permission error occurs- Create
/gluetun
if it does not exist
Bug fixes
- ProtonVPN
SERVER_NAME
environmnent 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
auth
overrides - Only set OpenVPN
fast-io
option when using UDP - Upgrade dependencies to fix dependency vulnerabilities
golang.org/x/sys
to current versiongithub.com/qdm12/dns
fromv1.4.0
tov1.7.0
github.com/qdm12/ss-server
fromv0.1.0
tov0.2.0
- Fix rebinding protection for IPv6 mapped IPv4 networks
- Use
netaddr
package 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 port
line
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/updater
package- 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/unzip
package withUnzipper
interfaceinternal/updater/openvpn
package with extraction and download functions
- Improve
internal/storage
package:- Add missing server merging logic
logTimeDiff
shared function
- Add unset
SERVER_NAME
in Dockerfile - Improve
internal/publicip
package:- Exported
Result
struct - 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/shutdown
package- 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
printVersion
function- 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.4
or2.5
depending on the current version Dockerfile
:- Remove outdated comments
- Remove unused openvpn installed shell script and library files
- Use
io
instead ofioutil
whenever 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)