Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor the app by using the Go library #509

Merged
merged 222 commits into from
Dec 22, 2022

Conversation

jwijenbergh
Copy link
Collaborator

@jwijenbergh jwijenbergh commented Oct 31, 2022

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
  • 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 make this a complete release

  • 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
  • Fix CI

This gets rid of a flicker where it shows all the results briefly
We create a new one every time because Gtk has some weird behaviour regarding the width of the combo box.
When we add items that are large, the combobox resizes to fit the content.
However, when we add items again that are all smaller (e.g. for a new server), the combo box does not shrink back.
The only proper way seems to be to recreate the combobox every time
@jwijenbergh jwijenbergh marked this pull request as ready for review December 21, 2022 19:02
@jwijenbergh jwijenbergh merged commit 9fa97e8 into eduvpn:master Dec 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant