node: Some small UX fixes

Fixes an error which said "invalid argument" the first time the node was
started.
This commit is contained in:
Alexis Sellier 2023-08-01 14:47:26 +02:00
parent 62aaec5f53
commit 693f0a2c44
No known key found for this signature in database
3 changed files with 15 additions and 6 deletions

View File

@ -81,14 +81,14 @@ pub fn logs(lines: usize, follow: Option<time::Duration>, profile: &Profile) ->
let logs = profile.home.node().join("node.log");
let mut file = BufReader::new(File::open(logs)?);
file.seek(SeekFrom::End(-1))?;
file.seek(SeekFrom::End(0))?;
let mut tail = Vec::new();
let mut nlines = 0;
for i in (0..=file.stream_position()?).rev() {
for i in (1..=file.stream_position()?).rev() {
let mut buf = [0; 1];
file.seek(SeekFrom::Start(i))?;
file.seek(SeekFrom::Start(i - 1))?;
file.read_exact(&mut buf)?;
if buf[0] == b'\n' {

View File

@ -153,6 +153,8 @@ pub enum MemorySignerError {
Keystore(#[from] Error),
#[error("key not found in '{0}'")]
NotFound(PathBuf),
#[error("invalid passphrase")]
InvalidPassphrase,
}
/// An in-memory signer that keeps its secret key internally
@ -217,7 +219,14 @@ impl MemorySigner {
.public_key()?
.ok_or_else(|| MemorySignerError::NotFound(keystore.path().to_path_buf()))?;
let secret = keystore
.secret_key(passphrase)?
.secret_key(passphrase)
.map_err(|e| {
if e.is_crypto_err() {
MemorySignerError::InvalidPassphrase
} else {
e.into()
}
})?
.ok_or_else(|| MemorySignerError::NotFound(keystore.path().to_path_buf()))?;
Ok(Self { public, secret })

View File

@ -1,7 +1,7 @@
use std::io;
use std::{env, fs, net, process};
use anyhow::anyhow;
use anyhow::{anyhow, Context};
use crossbeam_channel as chan;
use cyphernet::addr::PeerAddr;
use localtime::LocalDuration;
@ -142,7 +142,7 @@ fn execute() -> anyhow::Result<()> {
let passphrase = profile::env::passphrase();
let keystore = Keystore::new(&home.keys());
let signer = MemorySigner::load(&keystore, passphrase)?;
let signer = MemorySigner::load(&keystore, passphrase).context("couldn't load secret key")?;
log::info!(target: "node", "Node ID is {}", signer.public_key());