Quentin McGaw
f70f0aca9c
fix(settings): validate Wireguard addresses depending on IPv6 support
2022-12-14 11:52:03 +00:00
Quentin McGaw
03ed3cb1c8
feat(wireguard): WIREGUARD_IMPLEMENTATION variable
...
- Can be `auto` (default), `userspace` or `kernelspace`
2022-12-02 11:16:27 +00:00
Quentin McGaw
b275354a92
fix(env): trim space for wireguard addresses
2022-10-28 10:49:51 +00:00
Quentin McGaw
f15dde6502
feat(providers): add AirVPN support ( #1145 )
2022-10-17 02:54:56 -04:00
Quentin McGaw
dd7630997b
fix(vpnsecure): allow empty OpenVPN user+password
2022-09-10 14:46:17 +00:00
Quentin McGaw
5ddd703f6a
feat(vpn): auto detection of IPv6 support
...
- `OPENVPN_IPV6` removed
- Affects OpenVPN
- Use the same mechanism for OpenVPN and Wireguard
- Check only once at program start since this is unlikely to change at runtime
- Log if IPv6 is supported
- Remove `IPv6` boolean from settings structs
- Move IPv6 detection as a method on NetLinker
2022-09-06 12:16:29 +00:00
Quentin McGaw
e583f9de47
fix(codeql): fix integer parsing (false positive)
2022-08-27 16:45:29 +00:00
Quentin McGaw
8570e09eb9
chore(config): rename Reader to Source struct
2022-08-26 15:40:35 +00:00
Quentin McGaw
ae5cba519c
chore(config): define Source interface locally where needed
2022-08-26 15:03:59 +00:00
Quentin McGaw
26f3832187
chore(config): rename mux source to merge
2022-08-26 14:59:35 +00:00
Quentin McGaw
5989f29035
feat(surfshark): Wireguard support ( #587 )
2022-08-26 07:55:46 -07:00
Quentin McGaw
fba73a0a0f
fix(settings): OPENVPN_CUSTOM_CONFIG precedence for custom provider only if VPN_SERVICE_PROVIDER is empty
2022-08-25 04:01:17 +00:00
Quentin McGaw
062b6a276c
fix(settings): read PEM files but b64 env vars
...
- Extract base64 data from PEM files and secret files
- Environment variables are not PEM encoded and only the base64 data
- Affects OpenVPN certificate, key and encrypted key
2022-08-24 17:48:45 +00:00
Quentin McGaw
0bb320065e
feat(server): patch VPN settings
...
- `PUT` at `/v1/vpn/settings`
- Undocumented, experimental for now
2022-08-21 23:36:48 +00:00
Quentin McGaw
a182e3503b
feat: add VPNsecure.me support ( #848 )
...
- `OPENVPN_ENCRYPTED_KEY` environment variable
- `OPENVPN_ENCRYPTED_KEY_SECRETFILE` environment variable
- `OPENVPN_KEY_PASSPHRASE` environment variable
- `OPENVPN_KEY_PASSPHRASE_SECRETFILE` environment variable
- `PREMIUM_ONLY` environment variable
- OpenVPN user and password not required for vpnsecure provider
2022-08-15 16:54:58 -07:00
Richard Hodgson
d0dfc21e2b
feat: SlickVPN Support ( #961 )
...
- `internal/updater/html` package
- Add unit tests for slickvpn updating code
- Change shared html package to be more share-able
- Split html utilities in multiple files
- Fix processing .ovpn files with prefix space
Authored by @Rohaq
Co-authored-by: Quentin McGaw <quentin.mcgaw@gmail.com >
2022-08-15 08:25:06 -07:00
Quentin McGaw
8db2944749
chore(settings): OpenVPN ClientCrt -> Cert
2022-08-13 18:59:07 +00:00
Quentin McGaw
5986432a22
chore(settings): OpenVPN ClientKey -> Key
2022-08-13 18:58:09 +00:00
Quentin McGaw
652daec509
Change: OPENVPN_CLIENTKEY -> OPENVPN_KEY
...
- No breaking change since this was undocumented
2022-08-13 18:56:37 +00:00
Quentin McGaw
f94d4b761a
Change: OPENVPN_CLIENTCRT -> OPENVPN_CERT
...
- No breaking change since this was undocumented
2022-08-13 18:55:29 +00:00
Quentin McGaw
1ab74e6bb3
chore: OpenVPN user and password as nullable
...
- Username and password can be the empty string for custom provider
2022-08-13 18:01:26 +00:00
Quentin McGaw
a6f00f2fb2
chore(lint): upgrade golangci-lint to v1.47.2
...
- 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
2022-08-01 21:09:16 +00:00
Quentin McGaw
535297dcf5
chore: extract.PEM replaces PEM parse functions
2022-06-24 23:10:00 +00:00
Quentin McGaw
75454be6b6
fix(pprof): override operation in global settings
2022-06-18 00:16:14 +00:00
Quentin McGaw
9898387579
feat(updater): Configurable min ratio
...
- `UPDATER_MIN_RATIO` variable
- `-minratio` flag for CLI operation
2022-06-12 14:03:00 +00:00
Quentin McGaw
33b8f5f596
chore(settings): updater DNS address as string
2022-06-11 20:11:20 +00:00
Quentin McGaw
3ff3816d77
fix(pia): restrict custom port choice
2022-06-09 16:36:59 +00:00
Quentin McGaw
c0bdae8baf
fix(protonvpn): restrict custom port choice
2022-06-09 16:36:17 +00:00
Quentin McGaw
36b504609b
chore(all): memory and thread safe storage
...
- settings: get filter choices from storage for settings validation
- updater: update servers to the storage
- storage: minimal deep copying and data duplication
- storage: add merged servers mutex for thread safety
- connection: filter servers in storage
- formatter: format servers to Markdown in storage
- PIA: get server by name from storage directly
- Updater: get servers count from storage directly
- Updater: equality check done in storage, fix #882
2022-06-05 15:19:16 +00:00
Quentin McGaw
90c6c8485b
chore(updater): common GetServers signature
...
- Log warnings when running outside of CLI mode
- Remove updater CLI bool setting
- Warnings are logged in updating functions
2022-05-28 20:58:50 +00:00
Quentin McGaw
67a9cacb61
hotfix(custom): allow empty servers data
2022-05-27 21:47:41 +00:00
Quentin McGaw
364f9de756
feat(env): clean env variable values
...
- Remove surrounding spaces
- Remove suffix new line characters
2022-05-27 17:27:54 +00:00
Quentin McGaw
4bcd8ee9f5
chore(constants): add internal/constants/openvpn package
2022-05-27 16:29:49 +00:00
Quentin McGaw
1b2bcf901a
chore(surfshark): add package internal/provider/surshark/server
...
- Merge `internal/models/location.go` and `internal/constants/surfshark.go` into `internal/provider/surfshark/servers/locationdata.go`
2022-05-27 16:29:48 +00:00
Quentin McGaw
306de8feda
chore(constants): add internal/provider/privateinternetacess/presets package
2022-05-27 16:29:48 +00:00
Quentin McGaw
bd0868d764
chore(all): provider to servers map in allServers
...
- Simplify formatting CLI
- Simplify updater code
- Simplify filter choices for config validation
- Simplify all servers deep copying
- Custom JSON marshaling methods for `AllServers`
- Simplify provider constructor switch
- Simplify storage merging
- Simplify storage reading and extraction
- Simplify updating code
2022-05-27 16:17:53 +00:00
Quentin McGaw
2eec60cdd2
chore(custom): validate Openvpn file earlier
2022-05-07 19:33:21 +00:00
Quentin McGaw
9dd5e7bf1d
fix: PUID and PGID as 32 bit unsigned integers
2022-05-01 16:29:56 +00:00
Quentin McGaw
e1f89bb569
fix(health): HEALTH_VPN_DURATION_ADDITION
2022-04-23 11:09:24 +00:00
Quentin McGaw
0c0f1663b1
chore: simplify provider GetConnection
2022-04-20 15:16:55 +00:00
Quentin McGaw
934fafb64b
chore(constants): internal/constants/vpn package
2022-04-18 11:14:07 +00:00
Quentin McGaw
a9cfd16d53
chore(validation): uniformize server filters build
2022-04-18 07:27:00 +00:00
Quentin McGaw
072b42d867
chore(v4): add v4 comments about server names
2022-04-17 16:21:21 +00:00
Quentin McGaw
5d66c193aa
chore(models): common Server & Servers for all providers ( #943 )
2022-04-17 16:21:19 +00:00
Quentin McGaw
54b7e23974
chore(constants): internal/constants/providers
...
- New package to avoid package import cycles
2022-04-16 19:30:26 +00:00
Quentin McGaw
10a13bc8a7
fix(health): change default target address to cloudflare.com:443
2022-04-11 20:21:15 +00:00
Quentin McGaw
c33fb8bb97
fix(env): OPENVPN_FLAGS functionality
2022-03-31 20:49:01 +00:00
Quentin McGaw
179274ade0
feat(log): use github.com/qdm12/log library
2022-03-30 09:03:20 +00:00
Quentin McGaw
c6f68a64e6
fix(health): use TCP dialing instead of ping
...
- `HEALTH_TARGET_ADDRESS` to replace `HEALTH_ADDRESS_TO_PING`
- Remove `github.com/go-ping/ping` dependency
- Dial TCP the target address, appending `:443` if port is not set
2022-03-22 08:50:56 +00:00
Quentin McGaw
69eee345d2
feat(ivpn): allow no password for account IDs
...
- When matching `i-xxxx-xxxx-xxxx` username
- When matching `ivpn-xxxx-xxxx-xxxx` username
2022-03-09 21:01:25 +00:00