5a07b73375
* removed mnemonic from gateway config struct scaffolding for common mixnet listener running verloc unconditionally in a nym-node remove filtering by mixnode extracted verloc to separate crate integrated nym-node-http-server more tightly with the binary most logic for handling forward packets running all mixnode-related tasks natively inside nymnode removed gateway storage trait in favour of the only concrete implementation most logic for handling final hop packets using nym-node owned socket listener for gateways utility for sending plain message through mixnet + gateway fix using common packet forwarding in both modes nifying nym-node metrics reproduce behaviour of the console logger cleaned up cli args redesigned gateway tasks startup procedure removing dead code scaffolding for old config v6 config migration implemented MixnetMetricsCleaner * clippy * require entry/exit for wireguard * removed dead code in migration code * updated config template * use custom user agent for verloc queries * fixed premature shutdown of gateway tasks * hidden nym-api flag to allow illegal node ips * experiment: final hop handing with wireguard * added additional startup logs * typo * fixed legacy stats endpoint data * additional logs * apply review comments * fixed local testnet manager
58 lines
1.8 KiB
Rust
58 lines
1.8 KiB
Rust
// Copyright 2024 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use thiserror::Error;
|
|
use time::Date;
|
|
|
|
use crate::ecash::error::EcashTicketError;
|
|
|
|
pub type Result<T> = std::result::Result<T, Error>;
|
|
|
|
#[derive(Error, Debug)]
|
|
pub enum Error {
|
|
#[error("the provided bandwidth credential has already been spent before at this gateway")]
|
|
BandwidthCredentialAlreadySpent,
|
|
|
|
#[error(transparent)]
|
|
EcashFailure(EcashTicketError),
|
|
|
|
#[error(
|
|
"the provided credential has an invalid spending date. got {got} but expected {expected}"
|
|
)]
|
|
InvalidCredentialSpendingDate { got: Date, expected: Date },
|
|
|
|
#[error("the current multisig contract is not using 'AbsolutePercentage' threshold!")]
|
|
InvalidMultisigThreshold,
|
|
|
|
#[error(
|
|
"the received payment contained more than a single ticket. that's currently not supported"
|
|
)]
|
|
MultipleTickets,
|
|
|
|
#[error("Nyxd Error - {0}")]
|
|
NyxdError(#[from] nym_validator_client::nyxd::error::NyxdError),
|
|
|
|
#[error("This gateway is only accepting coconut credentials for bandwidth")]
|
|
OnlyCoconutCredentials,
|
|
|
|
#[error("insufficient bandwidth available to process the request. required: {required}B, available: {available}B")]
|
|
OutOfBandwidth { required: i64, available: i64 },
|
|
|
|
#[error("Internal gateway storage error")]
|
|
StorageError(#[from] nym_gateway_storage::error::GatewayStorageError),
|
|
|
|
#[error("{0}")]
|
|
UnknownTicketType(#[from] nym_credentials_interface::UnknownTicketType),
|
|
}
|
|
|
|
impl From<EcashTicketError> for Error {
|
|
fn from(err: EcashTicketError) -> Self {
|
|
// don't expose storage issue details to the user
|
|
if let EcashTicketError::InternalStorageFailure { source } = err {
|
|
Error::StorageError(source)
|
|
} else {
|
|
Error::EcashFailure(err)
|
|
}
|
|
}
|
|
}
|