Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f60564ab9 |
Generated
+1
@@ -4937,6 +4937,7 @@ dependencies = [
|
|||||||
"nym-gateway-storage",
|
"nym-gateway-storage",
|
||||||
"nym-id",
|
"nym-id",
|
||||||
"nym-network-defaults",
|
"nym-network-defaults",
|
||||||
|
"nym-node-metrics",
|
||||||
"nym-sdk",
|
"nym-sdk",
|
||||||
"nym-service-provider-requests-common",
|
"nym-service-provider-requests-common",
|
||||||
"nym-service-providers-common",
|
"nym-service-providers-common",
|
||||||
|
|||||||
@@ -434,6 +434,7 @@ impl GatewayTasksBuilder {
|
|||||||
used_private_network_ips,
|
used_private_network_ips,
|
||||||
)
|
)
|
||||||
.with_ecash_verifier(ecash_manager)
|
.with_ecash_verifier(ecash_manager)
|
||||||
|
.with_metrics_event_sender(self.metrics_sender.clone())
|
||||||
.with_custom_gateway_transceiver(transceiver)
|
.with_custom_gateway_transceiver(transceiver)
|
||||||
.with_shutdown(self.shutdown.fork("authenticator_sp"))
|
.with_shutdown(self.shutdown.fork("authenticator_sp"))
|
||||||
.with_wait_for_gateway(true)
|
.with_wait_for_gateway(true)
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ nym-gateway-requests = { path = "../../common/gateway-requests" }
|
|||||||
nym-gateway-storage = { path = "../../common/gateway-storage" }
|
nym-gateway-storage = { path = "../../common/gateway-storage" }
|
||||||
nym-id = { path = "../../common/nym-id" }
|
nym-id = { path = "../../common/nym-id" }
|
||||||
nym-network-defaults = { path = "../../common/network-defaults" }
|
nym-network-defaults = { path = "../../common/network-defaults" }
|
||||||
|
nym-node-metrics = { path = "../../nym-node/nym-node-metrics" } #TODO SW this is fugly
|
||||||
nym-sdk = { path = "../../sdk/rust/nym-sdk" }
|
nym-sdk = { path = "../../sdk/rust/nym-sdk" }
|
||||||
nym-service-providers-common = { path = "../common" }
|
nym-service-providers-common = { path = "../common" }
|
||||||
nym-service-provider-requests-common = { path = "../../common/service-provider-requests-common" }
|
nym-service-provider-requests-common = { path = "../../common/service-provider-requests-common" }
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use futures::channel::oneshot;
|
|||||||
use ipnetwork::IpNetwork;
|
use ipnetwork::IpNetwork;
|
||||||
use nym_client_core::{HardcodedTopologyProvider, TopologyProvider};
|
use nym_client_core::{HardcodedTopologyProvider, TopologyProvider};
|
||||||
use nym_credential_verification::ecash::EcashManager;
|
use nym_credential_verification::ecash::EcashManager;
|
||||||
|
use nym_node_metrics::events::MetricEventsSender;
|
||||||
use nym_sdk::{mixnet::Recipient, GatewayTransceiver};
|
use nym_sdk::{mixnet::Recipient, GatewayTransceiver};
|
||||||
use nym_task::{TaskClient, TaskHandle};
|
use nym_task::{TaskClient, TaskHandle};
|
||||||
use nym_wireguard::WireguardGatewayData;
|
use nym_wireguard::WireguardGatewayData;
|
||||||
@@ -32,6 +33,7 @@ pub struct Authenticator {
|
|||||||
custom_gateway_transceiver: Option<Box<dyn GatewayTransceiver + Send + Sync>>,
|
custom_gateway_transceiver: Option<Box<dyn GatewayTransceiver + Send + Sync>>,
|
||||||
wireguard_gateway_data: WireguardGatewayData,
|
wireguard_gateway_data: WireguardGatewayData,
|
||||||
ecash_verifier: Option<Arc<EcashManager>>,
|
ecash_verifier: Option<Arc<EcashManager>>,
|
||||||
|
metrics_sender: Option<MetricEventsSender>,
|
||||||
used_private_network_ips: Vec<IpAddr>,
|
used_private_network_ips: Vec<IpAddr>,
|
||||||
shutdown: Option<TaskClient>,
|
shutdown: Option<TaskClient>,
|
||||||
on_start: Option<oneshot::Sender<OnStartData>>,
|
on_start: Option<oneshot::Sender<OnStartData>>,
|
||||||
@@ -49,6 +51,7 @@ impl Authenticator {
|
|||||||
custom_topology_provider: None,
|
custom_topology_provider: None,
|
||||||
custom_gateway_transceiver: None,
|
custom_gateway_transceiver: None,
|
||||||
ecash_verifier: None,
|
ecash_verifier: None,
|
||||||
|
metrics_sender: None,
|
||||||
wireguard_gateway_data,
|
wireguard_gateway_data,
|
||||||
used_private_network_ips,
|
used_private_network_ips,
|
||||||
shutdown: None,
|
shutdown: None,
|
||||||
@@ -63,6 +66,13 @@ impl Authenticator {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
#[allow(unused)]
|
||||||
|
pub fn with_metrics_event_sender(mut self, metrics_sender: MetricEventsSender) -> Self {
|
||||||
|
self.metrics_sender = Some(metrics_sender);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
pub fn with_shutdown(mut self, shutdown: TaskClient) -> Self {
|
pub fn with_shutdown(mut self, shutdown: TaskClient) -> Self {
|
||||||
@@ -163,6 +173,7 @@ impl Authenticator {
|
|||||||
mixnet_client,
|
mixnet_client,
|
||||||
task_handle,
|
task_handle,
|
||||||
self.ecash_verifier,
|
self.ecash_verifier,
|
||||||
|
self.metrics_sender,
|
||||||
);
|
);
|
||||||
|
|
||||||
log::info!("The address of this client is: {self_address}");
|
log::info!("The address of this client is: {self_address}");
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ use nym_credential_verification::{
|
|||||||
bandwidth_storage_manager::BandwidthStorageManager, ecash::EcashManager,
|
bandwidth_storage_manager::BandwidthStorageManager, ecash::EcashManager,
|
||||||
BandwidthFlushingBehaviourConfig, ClientBandwidth, CredentialVerifier,
|
BandwidthFlushingBehaviourConfig, ClientBandwidth, CredentialVerifier,
|
||||||
};
|
};
|
||||||
use nym_credentials_interface::CredentialSpendingData;
|
use nym_credentials_interface::{CredentialSpendingData, TicketType};
|
||||||
use nym_crypto::asymmetric::x25519::KeyPair;
|
use nym_crypto::asymmetric::x25519::KeyPair;
|
||||||
use nym_gateway_requests::models::CredentialSpendingRequest;
|
use nym_gateway_requests::models::CredentialSpendingRequest;
|
||||||
|
use nym_node_metrics::events::{GatewaySessionEvent, MetricEventsSender};
|
||||||
use nym_sdk::mixnet::{
|
use nym_sdk::mixnet::{
|
||||||
AnonymousSenderTag, InputMessage, MixnetMessageSender, Recipient, TransmissionLane,
|
AnonymousSenderTag, InputMessage, MixnetMessageSender, Recipient, TransmissionLane,
|
||||||
};
|
};
|
||||||
@@ -76,6 +77,8 @@ pub(crate) struct MixnetListener {
|
|||||||
|
|
||||||
pub(crate) ecash_verifier: Option<Arc<EcashManager>>,
|
pub(crate) ecash_verifier: Option<Arc<EcashManager>>,
|
||||||
|
|
||||||
|
pub(crate) metrics_events_sender: Option<MetricEventsSender>,
|
||||||
|
|
||||||
pub(crate) timeout_check_interval: IntervalStream,
|
pub(crate) timeout_check_interval: IntervalStream,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,6 +90,7 @@ impl MixnetListener {
|
|||||||
mixnet_client: nym_sdk::mixnet::MixnetClient,
|
mixnet_client: nym_sdk::mixnet::MixnetClient,
|
||||||
task_handle: TaskHandle,
|
task_handle: TaskHandle,
|
||||||
ecash_verifier: Option<Arc<EcashManager>>,
|
ecash_verifier: Option<Arc<EcashManager>>,
|
||||||
|
metrics_event_sender: Option<MetricEventsSender>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let timeout_check_interval =
|
let timeout_check_interval =
|
||||||
IntervalStream::new(tokio::time::interval(DEFAULT_REGISTRATION_TIMEOUT_CHECK));
|
IntervalStream::new(tokio::time::interval(DEFAULT_REGISTRATION_TIMEOUT_CHECK));
|
||||||
@@ -97,6 +101,7 @@ impl MixnetListener {
|
|||||||
registred_and_free: RwLock::new(RegistredAndFree::new(free_private_network_ips)),
|
registred_and_free: RwLock::new(RegistredAndFree::new(free_private_network_ips)),
|
||||||
peer_manager: PeerManager::new(wireguard_gateway_data),
|
peer_manager: PeerManager::new(wireguard_gateway_data),
|
||||||
ecash_verifier,
|
ecash_verifier,
|
||||||
|
metrics_events_sender: metrics_event_sender,
|
||||||
timeout_check_interval,
|
timeout_check_interval,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -510,7 +515,8 @@ impl MixnetListener {
|
|||||||
"peer with ticket shouldn't have been used before without a ticket".to_string(),
|
"peer with ticket shouldn't have been used before without a ticket".to_string(),
|
||||||
))?;
|
))?;
|
||||||
if let Err(e) =
|
if let Err(e) =
|
||||||
Self::credential_verification(ecash_verifier.clone(), credential, client_id).await
|
Self::credential_verification(ecash_verifier.clone(), credential.clone(), client_id)
|
||||||
|
.await
|
||||||
{
|
{
|
||||||
ecash_verifier
|
ecash_verifier
|
||||||
.storage()
|
.storage()
|
||||||
@@ -518,6 +524,7 @@ impl MixnetListener {
|
|||||||
.await?;
|
.await?;
|
||||||
return Err(e);
|
return Err(e);
|
||||||
}
|
}
|
||||||
|
self.send_ecash_metrics_event(credential);
|
||||||
let public_key = peer.public_key.to_string();
|
let public_key = peer.public_key.to_string();
|
||||||
if let Err(e) = self.peer_manager.add_peer(peer, Some(client_id)).await {
|
if let Err(e) = self.peer_manager.add_peer(peer, Some(client_id)).await {
|
||||||
ecash_verifier
|
ecash_verifier
|
||||||
@@ -624,6 +631,22 @@ impl MixnetListener {
|
|||||||
Ok(verifier.verify().await?)
|
Ok(verifier.verify().await?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn send_ecash_metrics_event(&self, credential: CredentialSpendingData) {
|
||||||
|
if let Some(metrics_events_sender) = &self.metrics_events_sender {
|
||||||
|
if let Ok(ticket_type) = TicketType::try_from_encoded(credential.payment.t_type) {
|
||||||
|
metrics_events_sender.report_unchecked(GatewaySessionEvent::new_ecash_ticket(
|
||||||
|
self.mixnet_client
|
||||||
|
.nym_address()
|
||||||
|
.as_sphinx_destination()
|
||||||
|
.address,
|
||||||
|
ticket_type,
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
log::error!("Somehow trying to send a ticket event with an unknown ticket type");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async fn on_query_bandwidth_request(
|
async fn on_query_bandwidth_request(
|
||||||
&mut self,
|
&mut self,
|
||||||
msg: Box<dyn QueryBandwidthMessage + Send + Sync + 'static>,
|
msg: Box<dyn QueryBandwidthMessage + Send + Sync + 'static>,
|
||||||
@@ -741,6 +764,7 @@ impl MixnetListener {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
let available_bandwidth = verifier.verify().await?;
|
let available_bandwidth = verifier.verify().await?;
|
||||||
|
self.send_ecash_metrics_event(msg.credential());
|
||||||
|
|
||||||
let bytes = match AuthenticatorVersion::from(protocol) {
|
let bytes = match AuthenticatorVersion::from(protocol) {
|
||||||
AuthenticatorVersion::V5 => v5::response::AuthenticatorResponse::new_topup_bandwidth(
|
AuthenticatorVersion::V5 => v5::response::AuthenticatorResponse::new_topup_bandwidth(
|
||||||
|
|||||||
Reference in New Issue
Block a user