node: Don't force use of RAD_PASSPHRASE

If it isn't set, prompt the user.
This commit is contained in:
Alexis Sellier 2023-03-02 18:37:56 +01:00
parent 02304875ce
commit 793c085094
No known key found for this signature in database
3 changed files with 20 additions and 7 deletions

1
Cargo.lock generated
View File

@ -1996,6 +1996,7 @@ dependencies = [
"qcheck-macros", "qcheck-macros",
"radicle", "radicle",
"radicle-crypto", "radicle-crypto",
"radicle-term",
"scrypt", "scrypt",
"serde", "serde",
"serde_json", "serde_json",

View File

@ -41,6 +41,10 @@ path = "../radicle"
version = "0.2.0" version = "0.2.0"
features = ["sql"] features = ["sql"]
[dependencies.radicle-term]
path = "../radicle-term"
version = "0"
[dev-dependencies] [dev-dependencies]
radicle = { path = "../radicle", version = "*", features = ["test"] } radicle = { path = "../radicle", version = "*", features = ["test"] }
radicle-crypto = { path = "../radicle-crypto", version = "*", features = ["test", "cyphernet"] } radicle-crypto = { path = "../radicle-crypto", version = "*", features = ["test", "cyphernet"] }

View File

@ -1,7 +1,6 @@
use std::{env, net, process}; use std::{net, process};
use anyhow::anyhow; use anyhow::{anyhow, Context as _};
use anyhow::Context as _;
use crossbeam_channel as chan; use crossbeam_channel as chan;
use cyphernet::addr::PeerAddr; use cyphernet::addr::PeerAddr;
use localtime::LocalDuration; use localtime::LocalDuration;
@ -12,6 +11,7 @@ use radicle_node::prelude::{Address, NodeId};
use radicle_node::service::tracking::Policy; use radicle_node::service::tracking::Policy;
use radicle_node::Runtime; use radicle_node::Runtime;
use radicle_node::{logger, service, signals}; use radicle_node::{logger, service, signals};
use radicle_term as term;
pub const HELP_MSG: &str = r#" pub const HELP_MSG: &str = r#"
Usage Usage
@ -112,11 +112,15 @@ impl Options {
fn execute() -> anyhow::Result<()> { fn execute() -> anyhow::Result<()> {
logger::init(log::Level::Debug)?; logger::init(log::Level::Debug)?;
log::info!("Starting node..");
let options = Options::from_env()?; let options = Options::from_env()?;
let home = profile::home()?; let home = profile::home()?;
let passphrase = env::var(profile::env::RAD_PASSPHRASE)
.context("`RAD_PASSPHRASE` is required to be set for the node to establish connections")? log::info!("Unlocking node keystore..");
.into();
let passphrase = term::io::passphrase(profile::env::RAD_PASSPHRASE)
.context(format!("`{}` must be set", profile::env::RAD_PASSPHRASE))?;
let keystore = Keystore::new(&home.keys()); let keystore = Keystore::new(&home.keys());
let signer = MemorySigner::load(&keystore, passphrase)?; let signer = MemorySigner::load(&keystore, passphrase)?;
let config = service::Config { let config = service::Config {
@ -141,7 +145,11 @@ fn execute() -> anyhow::Result<()> {
fn main() { fn main() {
if let Err(err) = execute() { if let Err(err) = execute() {
log::error!(target: "node", "Fatal: {}", err); if let Some(src) = err.source() {
log::error!(target: "node", "Fatal: {err}: {src}");
} else {
log::error!(target: "node", "Fatal: {err}");
}
process::exit(1); process::exit(1);
} }
} }