python-eduvpn-client icon indicating copy to clipboard operation
python-eduvpn-client copied to clipboard

Refactor the app by using the Go library

Open jwijenbergh opened this issue 3 years ago • 0 comments

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

jwijenbergh avatar Oct 31 '22 13:10 jwijenbergh