From dcc9b856d741e30e7611cb2cbe811e5b65a10411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Tue, 19 Oct 2021 10:30:07 +0100 Subject: [PATCH] Flag to only run coconut-related functionalities (#824) --- validator-api/src/main.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/validator-api/src/main.rs b/validator-api/src/main.rs index 6bc517e24d..842f12f15f 100644 --- a/validator-api/src/main.rs +++ b/validator-api/src/main.rs @@ -58,6 +58,9 @@ const API_VALIDATORS_ARG: &str = "api-validators"; #[cfg(feature = "coconut")] const KEYPAIR_ARG: &str = "keypair"; +#[cfg(feature = "coconut")] +const COCONUT_ONLY_FLAG: &str = "coconut-only"; + const EPOCH_LENGTH_ARG: &str = "epoch-length"; const FIRST_REWARDING_EPOCH_ARG: &str = "first-epoch"; const REWARDING_MONITOR_THRESHOLD_ARG: &str = "monitor-threshold"; @@ -162,11 +165,15 @@ fn parse_args<'a>() -> ArgMatches<'a> { ); #[cfg(feature = "coconut")] - let base_app = base_app.arg( + let base_app = base_app.arg( Arg::with_name(KEYPAIR_ARG) .help("Path to the secret key file") .takes_value(true) .long(KEYPAIR_ARG), + ).arg( + Arg::with_name(COCONUT_ONLY_FLAG) + .help("Flag to indicate whether validator api should only be used for credential issuance with no blockchain connection") + .long(COCONUT_ONLY_FLAG), ); base_app.get_matches() @@ -429,11 +436,24 @@ async fn main() -> Result<()> { }; let matches = parse_args(); + let config = override_config(config, &matches); // if we just wanted to write data to the config, exit if matches.is_present(WRITE_CONFIG_ARG) { return Ok(()); } + + #[cfg(feature = "coconut")] + if matches.is_present(COCONUT_ONLY_FLAG) { + // this simplifies everything - we just want to run coconut things + return rocket::build() + .attach(setup_cors()?) + .attach(InternalSignRequest::stage(config.keypair())) + .launch() + .await + .map_err(|err| err.into()); + } + let liftoff_notify = Arc::new(Notify::new()); // let's build our rocket!