Quentin McGaw
76a4bb5dc3
chore: use gofumpt for code formatting
2024-10-11 19:27:29 +00:00
Quentin McGaw
3c8e80a1a4
chore(lint): upgrade linter from v1.56.2 to v1.61.0
...
- Remove no longer needed exclude rules
- Add new exclude rules for printf govet errors
- Remove deprecated linters `execinquery` and `exportloopref`
- Rename linter `goerr113` to `err113`
- Rename linter `gomnd` to `mnd`
2024-10-11 18:05:54 +00:00
Quentin McGaw
a2e76e1683
feat(server): role based authentication system ( #2434 )
...
- Parse toml configuration file, see https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication
- Retro-compatible with existing AND documented routes, until after v3.41 release
- Log a warning if an unprotected-by-default route is accessed unprotected
- Authentication methods: none, apikey, basic
- `genkey` command to generate API keys
Co-authored-by: Joe Jose <45399349+joejose97@users.noreply.github.com >
2024-09-18 13:29:36 +02:00
Quentin McGaw
a2b3d7e30c
chore(deps): implement github.com/qdm12/golibs/command locally ( #2418 )
2024-08-21 15:21:31 +02:00
Quentin McGaw
4d60b71583
feat(dns): replace unbound with qdm12/dns@v2.0.0-beta-rc6 ( #1742 )
...
- Faster start up
- Clearer error messages
- Allow for more Gluetun-specific customization
- DNSSEC validation is dropped for now (it's sort of unneeded)
- Fix #137
2024-08-21 14:35:41 +02:00
Jean-François Roy
12c411e203
feat(storage): STORAGE_FILEPATH option ( #2416 )
...
- `STORAGE_FILEPATH=` disables storing to and reading from a local servers.json file
- `STORAGE_FILEPATH` defaults to `/gluetun/servers.json`
- Fix #2074
2024-08-19 02:26:46 +02:00
Quentin McGaw
897a9d7f57
feat(config): allow invalid server filters ( #2419 )
...
- Disallow setting a server filter when there is no choice available
- Allow setting an invalid server filter when there is at least one choice available
- Log at warn level when an invalid server filter is set
- Fix #2337
2024-08-17 12:01:26 +02:00
Quentin McGaw
d1f57d0e36
chore(deps): bump gosplash to v0.2.0
...
- Merge same links in the same line
- Add `/choose` suffix to github links
2024-08-05 17:46:31 +00:00
Quentin McGaw
ef6874fe57
fix(firewall): query iptables version for iptables found
2024-05-04 16:19:30 +00:00
Quentin McGaw
e07966f71e
fix(tun): only create tun device if it does not exist
...
- do not create if it exists and is problematic
- wrap errors with a better context
2024-04-29 09:29:06 +00:00
Quentin McGaw
ecc80a5a9e
chore(config): upgrade to gosettings v0.4.0
...
- drop qdm12/govalid dependency
- upgrade qdm12/ss-server to v0.6.0
- do not unset sensitive config settings (makes no sense to me)
2024-03-25 19:14:20 +00:00
Quentin McGaw
423a5c37e0
feat(publicip): PUBLICIP_API variable supporting ipinfo and ip2location
2024-02-14 07:36:45 +00:00
Quentin McGaw
cfca026621
chore(publicip): less coupling with ipinfo.io
2024-02-14 07:30:02 +00:00
Quentin McGaw
6a6337b98f
feat(publicip/ipinfo): add PUBLICIP_API_TOKEN variable
2024-02-13 10:55:06 +00:00
Quentin McGaw
f96448947f
fix(publicip): rework run loop and fix restarts
...
- Clearing IP data on VPN disconnection clears file
- More efficient partial updates
- Fix loop exit
- Validate settings before updating
2023-09-24 14:55:51 +00:00
Quentin McGaw
0406de399d
chore(portforward): move vpn gateway obtention within port forwarding service
2023-09-23 12:03:06 +00:00
Quentin McGaw
71201411f4
fix(portforward): rework run loop and fix deadlocks ( #1874 )
2023-09-23 12:57:12 +02:00
Quentin McGaw
e556871e8b
change(dns): DNS_KEEP_NAMESERVER leaves DNS fully untouched
2023-08-11 11:03:40 +00:00
Quentin McGaw
eecfb3952f
chore(settings): change source precedence order
...
1. Secret files (program scope)
2. Files (program scope)
3. Environment variables (OS scope)
Fix #1759
2023-07-22 16:02:32 +00:00
Quentin McGaw
ff9b56d6d8
docs(all): update to use newer wiki repository
...
- Update URLs logged by program
- Update README.md links
- Update contributing guide link
- Update issue templates links
- Replace Wiki issue template by link to Gluetun Wiki repository issue creation
- Set program announcement about Github wiki new location
2023-06-30 10:31:26 +00:00
Quentin McGaw
40cdb4f662
fix(netlink): RouteList list routes from all tables
...
- Do not filter by link anymore
- IPv6 detection simplified
2023-06-08 09:12:46 +00:00
Quentin McGaw
38ddcfa756
chore(netlink): define own types with minimal fields
...
- Allow to swap `github.com/vishvananda/netlink`
- Allow to add build tags for each platform
- One step closer to development on non-Linux platforms
2023-05-29 06:44:58 +00:00
Quentin McGaw
9d1a0b60a2
fix(netlink): use AddrReplace instead of AddrAdd
2023-05-28 10:22:51 +00:00
Quentin McGaw
3b807e2ca9
feat(openvpn): add support for openvpn 2.6
2023-05-21 13:23:51 +00:00
Quentin McGaw
e8f2296a0d
change(openvpn): Openvpn 2.4 no longer supported
2023-05-21 13:20:02 +00:00
Kyle Manna
fc8a2abb8f
fix(routing): add policy rules for each destination local networks ( #1493 )
2023-04-11 09:03:07 -07:00
Quentin McGaw
4ba159e483
chore(all): review error wrappings
...
- remove repetitive `cannot` and `failed` prefixes
- rename `unmarshaling` to `decoding`
2023-04-01 16:57:18 +00:00
Quentin McGaw
c246dae2cc
feat(log): log warnings about user settings
...
- Warn when using Openvpn 2.4 and SlickVPN
- Warn when using Openvpn 2.5 and SlickVPN
2023-04-01 15:22:32 +00:00
Quentin McGaw
a97fcda283
fix(version): add name in version check error
2023-02-27 20:16:55 +00:00
Quentin McGaw
f70f0aca9c
fix(settings): validate Wireguard addresses depending on IPv6 support
2022-12-14 11:52:03 +00:00
Quentin McGaw
16acd1b162
chore(netlink): log ipv6 support at debug level
2022-12-14 11:52:03 +00:00
Quentin McGaw
a4cf17f81e
fix(netlink): change logger level
2022-12-14 11:50:36 +00:00
Quentin McGaw
74426f6202
feat(netlink): add debug logger
2022-12-02 11:26:52 +00:00
Quentin McGaw
7a3b9941aa
fix(exit): exit with 1 on runtime error
2022-11-18 09:46:31 +00:00
Quentin McGaw
698095f0a0
fix(pprof): do not run if disabled
2022-11-15 12:45:47 +00:00
Quentin McGaw
e5be20d719
fix(exit): exit with 0 on successful shutdown
2022-09-14 13:23:31 +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
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
aa53436e56
chore(lint): upgrade golangci-lint to v1.49.0
...
- Add linter `interfacebloat` and fix code issues
- Add linter `reassign`
- Remove deprecated linter `nosnakecase`
2022-08-24 21:48:24 +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
62ad8bcd8f
fix(pia): set port forward file owned with PUID and PGID
2022-06-25 15:44:29 +00:00
Quentin McGaw
bda6707685
chore(all): remove unexported interfaces
2022-06-12 01:15:14 +00:00
Quentin McGaw
89277828ac
chore(publicip): internal/publicip/ipinfo package
2022-06-12 01:11:22 +00:00
Quentin McGaw
83b4a3fe55
chore(publicip): refactoring
...
- Exported `Fetcher` interface
- Inject `Fetcher` to publicip loop and updaters
- Get public IP and information at the same time
- Only query ipinfo.io
- Make `MultiInfo` part of the `Fetch` object
2022-06-12 00:46:08 +00:00
Quentin McGaw
33b8f5f596
chore(settings): updater DNS address as string
2022-06-11 20:11:20 +00:00
Quentin McGaw
447a7c9891
updater: refactoring and set DNS server correctly
...
- Fix CLI operation not setting DNS server
- Fix periodic operation not setting DNS server
- Set DNS address for resolution once at start for both CLI and periodic operation
- Inject resolver to each provider instead of creating it within
- Use resolver settings on every call to `.Resolve` method, instead of passing it to constructor
- Move out minServers check from resolver
2022-06-11 19:47:46 +00:00
Quentin McGaw
578ef768ab
chore(all): return concrete types, accept interfaces
...
- Remove exported interfaces unused locally
- Define interfaces to accept arguments
- Return concrete types, not interfaces
2022-06-11 01:34:30 +00:00
Quentin McGaw
0378fe4a7b
chore(all): Providers containing all provider objects
...
- Share the same providers for updater and vpn
- Initialise all providers at start
- Get from `Providers` instead of constructing on every run
2022-06-10 00:47:56 +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