🎉 It's our 1000th commit!!! 🌟
Features
- Support for Wireguard (#565)
- Wireguard works with kernel space or user space if unavailable
VPN_TYPE
variableWIREGUARD_PRIVATE_KEY
variableWIREGUARD_ADDRESS
variableWIREGUARD_PRESHARED_KEY
variableWIREGUARD_PORT
variableOPENVPN_INTERFACE
defaulting totun0
Bug fixes
- Change ownership of OpenVPN configuration file with
PUID
andPGID
- OpenVPN custom config process user gets removed
- OpenVPN custom config with custom network interface name set properly in firewall
- Sorted IP addresses for servers.json (#574)
- Only allow traffic through VPN interface when needed
Documentation
- Update readme
- Image size lowered to 31MB
- Using Alpine 3.14
- Wireguard support
Changes
- HTTP control server
/v1/openvpn
route interacts with OpenVPN settings only (not provider settings)
Maintenance
internal/vpn
package for vpn loop (OpenVPN and Wireguard)internal/netlink
package used byinternal/wireguard
- Improve
internal/configuration
code - Read all settings first
- Context aware
collectLines
functions internal/tun
package to handle tun device operations- TUN check verifies
Rdev
value of file - Inject as interface to main function
- Add integration test
- Clearer log message for end users if tun device does not exist
- Remove tun file opening at the end of tun file creation
- TUN check verifies
- Remove unix package (unneeded for tests)
- Do not mock unix.Mkdev (no OS operation)
internal/openvpn/custom
package for custom configuration with tests- Better log when catching an OS signal
- Fix logger settings inheritance
- Keep VPN tunnel interface name in firewall state
- Upgrade from Go 1.16 to Go 1.17