v3.31.0

passteque/gluetunv3.31.0Aug 24, 2022by qdm12

AI Summary

This release introduces support for SlickVPN and VPNsecure.me, refactors the control server API, and updates internal data structures for OpenVPN credentials.

Key Highlights

  • Added SlickVPN and VPNsecure.me support
  • Control server API updates with new `/vpn` route and experimental PUT settings
  • Updated OpenVPN settings struct fields (ClientKey -> Key, ClientCrt -> Cert)

Breaking Changes

  • Control server: replaced response status code 404 with 401 for unsupported routes and methods
  • Control server: no longer redacts openvpn credentials from JSON response
  • Environment variable `OPENVPN_CLIENTCRT` -> `OPENVPN_CERT` (undocumented change)
  • Environment variable `OPENVPN_CLIENTKEY` -> `OPENVPN_KEY` (undocumented change)

New Features

  • SlickVPN Support
  • VPNsecure.me support
  • Control server: add `/vpn` route to replace `/openvpn`
  • Control server: patch VPN settings using HTTP PUT at `/v1/vpn/settings`

Full Release Notes

## Features

- SlickVPN Support (#961)
- VPNsecure.me support (#848)
- Update servers data built-in for ExpressVPN, Surfshark
- Control server: add `/vpn` route to replace `/openvpn` (in future v4.0.0)
- Control server: patch VPN settings using HTTP PUT at `/v1/vpn/settings` (undocumented, experimental)

## Fixes

- Surfshark: remove no longer valid retro server data
- Bump github.com/breml/rootcerts from 0.2.3 to 0.2.6 (#1033, #1058)

## Documentation

- Fix readme typo `sercice` to `service` (#1067)

## Undocumented breaking changes

- Environment variable `OPENVPN_CLIENTCRT` -> `OPENVPN_CERT` (No breaking change since this was undocumented)
- Environment variable `OPENVPN_CLIENTKEY` -> `OPENVPN_KEY` (No breaking change since this was undocumented)
- Control server: replace response status code `404` with `401` for unsupported routes and methods
- Control server: do not redact openvpn credentials from JSON response
- Read base64 encoded data from environment variables (OpenVPN cert, key and encrypted key) instead of PEM encoded data

## Maintenance

- Add mocks check to check for missing `//go:generate` comments and outdated mocks
- Linting:
  - upgrade golangci-lint to v1.49.0
  - config: remove duplicate `predeclared` and commented `varnamelen`, `wrapcheck`
  - config: remove deprecated linters `ifshort`
  - config: add linters `asasalint`, `usestdlibvars`, `interfacebloat`, `reassign`
  - Fix Slowloris attacks on HTTP servers
  - Force set default of 5 minutes for pprof read timeout
  - Change `ShutdownTimeout` to `time.Duration` since it cannot be set to 0
- Use common mocks for ivpn and ipvanish
- OpenVPN user and password as nullable (they can be an empty string for custom provider)
- OpenVPN settings struct field `ClientKey` -> `Key`
- OpenVPN settings struct field `ClientCrt` -> `Cert`
- Remove deprecated `io/ioutil` import
- Fix labels workflow:
  - Limit labels workflow to run on commits coming from not-forked repositories
  - Fix permissions to write for labels
- Bump docker/build-push-action from 3.0.0 to 3.1.1 (#1073, #1098)
- Bump github.com/stretchr/testify from 1.7.2 to 1.8.0 (#1042, #1052)