feat: merge intermediate upgrade mode changes (#6174)
* squashing feat: merge intermediate upgrade mode changes #6174 to more easily resolve merge conflicts during rebasing added additional v2 query for metadata endpoint for requesting upgrade mode recheck added additional message to v6 authenticator to request explicit upgrade mode recheck clippy test fixes due to updated keys updated assertion for upgrading v1 top up request to v2 compare attester public key against the expected value within the credential proxy use pre-generated attestation public keys within nym-nodes remove version deprecation bugfix: default bandwidth response for authenticator expose upgrade mode information in authenticator responses adding tests for new v2 server passing upgrade mode information in metadata endpoint v2 wireguard private metadata bugfix: make sure to immediately poll for attestation after spawning task fix gateway probe and remove code duplication for finalizing registration squashing before rebasing post rebasing fixes AuthenticatorVersion helpers additional nits allow unwraps in mocks fixed linux build clippy integrating upgrade mode into authenticator fixed build after adding wrappers to response types conditionally updating peer handle bandwidth cleanup negotiate initial protocol during registration change auth to use highest protocol handler for JWT message dont meter client bandwidth in upgrade mode handling recheck requests sending information about upgrade_mode on client messages gateway watching for upgrade mode attestation wip: gateways to disable bandwidth metering on upgrade mode * fixed ServerResponse deserialisation * fixed incorrect swagger path for upgrade mode check endpoint * moved upgrade mode endpoint out of bandwidth routes * chore: remove unused error variant * removed re-export of UpgradeModeAttestation from credentials-interface * chore: define single source of truth for minimum bandwidth threshold value * moved type definitions out of traits.rs * updated v6 versioning to point to niolo release instead * fixed incorrect error mapping
This commit is contained in:
committed by
GitHub
parent
4dcc568ec2
commit
6b2bb3029b
@@ -40,7 +40,7 @@ use crate::node::shared_network::{
|
||||
};
|
||||
use nym_bin_common::bin_info;
|
||||
use nym_crypto::asymmetric::{ed25519, x25519};
|
||||
use nym_gateway::node::{ActiveClientsStore, GatewayTasksBuilder};
|
||||
use nym_gateway::node::{ActiveClientsStore, GatewayTasksBuilder, UpgradeModeCheckRequestSender};
|
||||
use nym_mixnet_client::client::ActiveConnections;
|
||||
use nym_mixnet_client::forwarder::MixForwardingSender;
|
||||
use nym_network_requester::{
|
||||
@@ -624,9 +624,27 @@ impl NymNode {
|
||||
metrics_sender,
|
||||
self.metrics.clone(),
|
||||
self.entry_gateway.mnemonic.clone(),
|
||||
Self::user_agent(),
|
||||
self.config.gateway_tasks.upgrade_mode.attester_public_key,
|
||||
self.shutdown_tracker().clone(),
|
||||
);
|
||||
|
||||
// start task for watching the changes in upgrade mode attestation
|
||||
let upgrade_check_request_sender = if let Some(upgrade_mode_watcher) =
|
||||
gateway_tasks_builder.try_build_upgrade_mode_watcher()
|
||||
{
|
||||
let req_sender = upgrade_mode_watcher.request_sender();
|
||||
upgrade_mode_watcher.start();
|
||||
req_sender
|
||||
} else {
|
||||
UpgradeModeCheckRequestSender::new_empty()
|
||||
};
|
||||
|
||||
// create the common state for subtasks relying on the upgrade mode information
|
||||
// (i.e. everything that'd require ticket/bandwidth processing)
|
||||
let upgrade_mode_common_state =
|
||||
gateway_tasks_builder.build_upgrade_mode_common_state(upgrade_check_request_sender);
|
||||
|
||||
// if we're running in entry mode, start the websocket
|
||||
if self.modes().entry {
|
||||
info!(
|
||||
@@ -634,7 +652,10 @@ impl NymNode {
|
||||
self.config.gateway_tasks.ws_bind_address
|
||||
);
|
||||
let mut websocket = gateway_tasks_builder
|
||||
.build_websocket_listener(active_clients_store.clone())
|
||||
.build_websocket_listener(
|
||||
active_clients_store.clone(),
|
||||
upgrade_mode_common_state.clone(),
|
||||
)
|
||||
.await?;
|
||||
self.shutdown_tracker()
|
||||
.try_spawn_named(async move { websocket.run().await }, "EntryWebsocket");
|
||||
@@ -682,7 +703,7 @@ impl NymNode {
|
||||
gateway_tasks_builder.set_wireguard_data(wg_data.into());
|
||||
|
||||
let authenticator = gateway_tasks_builder
|
||||
.build_wireguard_authenticator(topology_provider)
|
||||
.build_wireguard_authenticator(upgrade_mode_common_state.clone(), topology_provider)
|
||||
.await?;
|
||||
let started_authenticator = authenticator.start_service_provider().await?;
|
||||
active_clients_store.insert_embedded(started_authenticator.handle);
|
||||
@@ -693,7 +714,7 @@ impl NymNode {
|
||||
);
|
||||
|
||||
gateway_tasks_builder
|
||||
.try_start_wireguard()
|
||||
.try_start_wireguard(upgrade_mode_common_state)
|
||||
.await
|
||||
.map_err(NymNodeError::GatewayTasksStartupFailure)?;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user