Fixes
- PrivateVPN: replace special last accented a character with
aforBogota - Do not write out servers data and updated timestamp if no change was detected
- (@TJJP) Fix: Windscribe Openvpn config (#528)
- Server data model version diff:
- comparison fixed
- missing "behind" suffix to log line
- Openvpn loop: possible deadlock: unlock read mutex for
GetSettingsAndServers - Alpine vulnerability fixed with apk-tools upgraded (except for
ppc64learchitecture)
Features
- Update all servers for all providers
- Specify Openvpn flags with
OPENVPN_FLAGS - Set health timeouts with
HEALTH_OPENVPN_DURATION_INITIALandHEALTH_OPENVPN_DURATION_ADDITION - Health server listening address configurable with
HEALTH_SERVER_ADDRESS - Updater CLI: add
-allflag to update all VPN servers
Breaking changes
- Updater CLI:
-enduserinstead of-file-maintainerinstead of-stdout
Documentation
Maintenance
Dependencies
- Upgrade
inet.af/netaddrto2021-07-18 - Upgrade
qdm12/dnstov1.11.0
CI
- Remove microbadger hook from CI
- Rename
.github/workflows/build.ymlto.github/workflows/ci.ymlfor linting - Bump
docker/build-push-actionfrom2.4.0to2.6.1 - Use curly braces around
BUILDPLATFORM - Rename
BUILD_DATEtoCREATED - Build all images fully in parallel (thanks to JSON server information using less memory at compile time)
Code
- Hardcoded servers data as a JSON embedded file in
internal/constants/servers.json- use
embed.FSto have immutable data - use
sync.Onceto parse JSON data only once without data races
- use
- Remove debug line in health server
- Improve health code
- Use
qdm12/gosplashfor initial logs - Upgrade
qdm12/golibsand rework env error wrapping - Do not mock os functions
- Use filepaths with /tmp for tests instead
- Only mock functions where filepath can't be specified such as user.Lookup
- Pass only single strings to logger methods
- Do not assume formatting from logger's interface
- Allow to change golibs in the future to accept only strings for logger methods
- Prefer empty string comparisons than
len(s) == 0 - Firewall and routing use
logger.Debuginstead offmt.Println - Remove
SetVerboseandSetDebugmethods from firewall and routing - Log routing teardown
- Default logging level set to info
- Inject
command.Cmderto openvpn and firewall - Pass network values to firewall constructor
- Move duration formatting to
qdm12/golibs/format internal/loopstatepackage to manage the state of run loops- Remove routing's
Configuratorfrom firewall'sConfigurator - Remove routing's
Configuratorfrom openvpn'sConfigurator - Common no custom port forwarding obtention implementation for all providers but PIA
Packages rework:
- Constructors return concrete structs
- Constructors and struct fields accept narrow interfaces
- Split interfaces in sub-interfaces
- Split Go files in more smaller Go files
- Add interface compilation checks
- Use
internal/loopstateto manage the state of their Run loop - Add subpackage
stateto manage the state of the loop thread safely - Packages reworked:
internal/alpineinternal/cliinternal/dnsinternal/firewallinternal/healthcheckinternal/httpproxyinternal/openvpn(both loop and configurator)internal/publicipinternal/routing