a274edffba
* Calculating gas fees * Ability to set custom fees * Added extra test * Removed commented code * Moved all msg types to common contract crate * Temporarily disabling get_tx method * Finishing up nymd client API * Comment fix * Remaining fee values * Some cleanup * Removed needless borrow * Fixed imports in contract tests * Moved error types around * New ValidatorClient * Experiment with new type of defaults * Removed dead module * Dealt with unwrap * Migrated mixnode to use new validator client * Migrated gateway to use new validator client * Mixnode and gateway adjustments * More exported defaults * Clients using new validator client * Fixed mixnode upgrade * Moved default values to a new crate * Changed behaviour of validator client features * Migrated basic functions of validator api * Updated config + fixed startup * Fixed wasm client build * Integration with the explorer api * Removed tokio dev dependency * Needless borrow * Fixex wasm client build * Fixed tauri client build * Needless borrows * Fixed client upgrade print * Removed redundant comments * Made note on aggregated verification key into a doc comment * Removed mixnet contract references from verloc * Modified default validators structure * Reformatted validator-api Cargo.toml file * Removed commented code * Made the doc comment example a no-run * Fixed a upgrade print... again * Adjusted the doc example * Removed unused import
73 lines
1.7 KiB
Rust
73 lines
1.7 KiB
Rust
#[macro_use]
|
|
extern crate rocket;
|
|
#[macro_use]
|
|
extern crate rocket_okapi;
|
|
|
|
use log::info;
|
|
|
|
mod country_statistics;
|
|
mod http;
|
|
mod mix_node;
|
|
mod mix_nodes;
|
|
mod ping;
|
|
mod state;
|
|
|
|
const GEO_IP_SERVICE: &str = "https://freegeoip.app/json/";
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
setup_logging();
|
|
let mut explorer_api = ExplorerApi::new();
|
|
explorer_api.run().await;
|
|
}
|
|
|
|
pub struct ExplorerApi {
|
|
state: state::ExplorerApiStateContext,
|
|
}
|
|
|
|
impl ExplorerApi {
|
|
fn new() -> ExplorerApi {
|
|
ExplorerApi {
|
|
state: state::ExplorerApiStateContext::new(),
|
|
}
|
|
}
|
|
|
|
async fn run(&mut self) {
|
|
info!("Explorer API starting up...");
|
|
|
|
// spawn concurrent tasks
|
|
country_statistics::CountryStatistics::new(self.state.clone()).start();
|
|
http::start(self.state.clone());
|
|
|
|
// wait for user to press ctrl+C
|
|
self.wait_for_interrupt().await
|
|
}
|
|
|
|
async fn wait_for_interrupt(&self) {
|
|
if let Err(e) = tokio::signal::ctrl_c().await {
|
|
error!(
|
|
"There was an error while capturing SIGINT - {:?}. We will terminate regardless",
|
|
e
|
|
);
|
|
}
|
|
info!(
|
|
"Received SIGINT - the mixnode will terminate now (threads are not yet nicely stopped, if you see stack traces that's alright)."
|
|
);
|
|
}
|
|
}
|
|
|
|
fn setup_logging() {
|
|
let mut log_builder = pretty_env_logger::formatted_timed_builder();
|
|
if let Ok(s) = ::std::env::var("RUST_LOG") {
|
|
log_builder.parse_filters(&s);
|
|
} else {
|
|
// default to 'Info'
|
|
log_builder.filter(None, log::LevelFilter::Info);
|
|
}
|
|
|
|
log_builder
|
|
.filter_module("tokio_reactor", log::LevelFilter::Warn)
|
|
.filter_module("reqwest", log::LevelFilter::Warn)
|
|
.init();
|
|
}
|