June 01, 2021

Inline client upgrades, UI fixes and improvements

Due to protocol versioning, it is highly recommended to keep clients up to date. This release simplifies the process, bringing inline client upgrade functionality, including an upgrade supervisor, migration and rollback support. The required version is specified by the contract operator-owned directory.

Sequence diagram

This sequence diagram shows the high-level flow of a client upgrade and the behind the scenes interaction it has with other Wireleap components.

sequenceDiagram participant user participant client participant client.next participant dir participant releases Note left of user: start daemon user->>+client: start() client->>+dir: info() dir-->>-client: response client->>client: verify_version() opt upgrade required client-->>-user: notification end Note left of user: upgrade user->>client: upgrade() activate client client->>client: verify_not_running() client->>+releases: GET version/changelog releases-->>-user: changelog activate user user->>client: proceed deactivate user client->>+releases: GET version/client{.hash} releases-->>-client.next: client{.hash} client->>+client.next: verify opt rollback on failure client->>client.next: start upgrade supervisor deactivate client activate client.next Note left of client.next: migration client.next->>client.next: verify() Note left of client.next: mv client client.prev Note left of client.next: mv client.next client client.next->>client.next: unpack() client.next-->>user: success deactivate client.next end

Usage

The upgrade process is interactive so you will have the possibility to accept or decline based on the changelog for the new release version.

wireleap upgrade

If the upgrade was successful, the old binary is not deleted but kept as wireleap.prev for rollback purposes, in case issues manifest post-upgrade.

wireleap rollback

If the upgrade was not successful, it is possible to skip the faulty version explicitly.

# skip upgrades to version 1.2.3
echo "1.2.3" > $HOME/wireleap/.skip-upgrade-version

Changes

wireleap

  • Manual client upgrade support:

    • Added upgrade and rollback commands
    • Added init --force-unpack-only to only overwrite embedded files
    • Bundled exec scripts are now located in scripts/default/
    • Version verification when pulling directory information on startup
  • UI fixes and improvements:

    • Help and usage formatting and content improvements
    • Access keys can now be imported directly from an https:// URL
    • Avoid new access key activation on startup
    • Bundled exec scripts are now located in scripts/default/
    • User defined exec scripts in scripts/ take precedence
    • SetUID bit and root ownership verification on wireleap tun
  • Default circuit.hops changed to 1

  • Fixed issue where some errors during initial splice weren’t reported

wireleap-relay

  • Fixed issue where some errors during splice weren’t reported.

wireleap-contract

  • Configuration changes:

    • Metadata fields removed: icon, banner.
    • Metadata fields added: operator_url.
  • Endpoint changes:

    • Individual /info/X field getter support removed.
    • Endpoint /info/ changed to /info.

wireleap-dir

  • Added update_channels.client for specifying the required version.
  • Removed /info endpoint versioning to allow for client upgrades.