Refactor the app by using the Go library
This PR refactors the whole app using the eduvpn-common Go library.
Motivation
There is lots of duplicated code between eduVPN clients, using a common library would allow us to get new features faster and make it easier for the clients. You can read more about this library here https://eduvpn.github.io/eduvpn-common/.
Fixes
#481 - The OAuth library/implementation we use now is built in house and fixes this #478/#465 - A profile expander is shown now #467 - The CLI has been rewritten to be more user friendly and work correctly with the V3 API #453 - Back buttons are shown correctly where they are possible/needed #434 - Most tests are now in the Go library that sets up a local network #428 - Proper imeouts are now used #426 - A renew session button is shown with accordance to the eduVPN specification https://github.com/eduvpn/documentation/blob/v3/API.md#session-expiry #412 - Prehashed signatures are supported because we use the official minisign go library in the eduvpn-common codebase #405 - The CLI now works correctly and should be more user friendly, especially if the interactive mode is used #374 - Let's Connect! now also has a CLI #351 - No longer a warning should be shown #336 - Implemented #335 - Exceptions are now shown in an error revealer similar to other clients #333 - Implemented #255 - We now implement it according to the eduVPN specification #253 - Removing a connection is now possible by right clicking on a server
New features/Improvements that are not mentioned yet
- OAuth has a check for the new ISS parameter if the server supports it (https://datatracker.ietf.org/doc/rfc9207/)
- A server is now added instead of immediately connected, making it the same as other clients. The old behaviour can be toggled in the settings
- Let's Connect!/eduVPN now uses completely separate configurations
Features that will follow in new releases
- Keyring implementation using Dbus to securely store OAuth tokens
- WireGuard to OpenVPN failover (if UDP is blocked)
Upgrade notice
This implementation uses a new format for storing the configuration files. You will need to add your servers again
Testing this PR
To easily test this PR, I have set up a Fedora COPR: https://copr.fedorainfracloud.org/coprs/jwijenbergh/eduvpn-common/. A repo with deb files will follow later
Todo
This is a list of things I want to do before I mark this completely ready
- [ ] Add a bit more tests back to this client. Note that as of right now we already have more tests than before (the eduvpn-common library also has tests)
- [ ] Document how to contribute
- [ ] Some debian packaging fixes
- [ ] Release eduvpn-common & use the exact release
- [x] Fix CI