keyforkd: expose start_and_run_server_on and Mnemonic
This commit is contained in:
parent
0f4bc3c78d
commit
e33b67a9e3
|
@ -1,6 +1,9 @@
|
||||||
use std::{collections::HashMap, path::PathBuf};
|
use std::{
|
||||||
|
collections::HashMap,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
};
|
||||||
|
|
||||||
use keyfork_mnemonic_util::Mnemonic;
|
pub use keyfork_mnemonic_util::Mnemonic;
|
||||||
use tower::ServiceBuilder;
|
use tower::ServiceBuilder;
|
||||||
|
|
||||||
#[cfg(feature = "tracing")]
|
#[cfg(feature = "tracing")]
|
||||||
|
@ -14,11 +17,34 @@ use error::KeyforkdError;
|
||||||
use server::UnixServer;
|
use server::UnixServer;
|
||||||
use service::Keyforkd;
|
use service::Keyforkd;
|
||||||
|
|
||||||
pub async fn start_and_run_server(mnemonic: Mnemonic) -> Result<(), Box<dyn std::error::Error>> {
|
pub async fn start_and_run_server_on(
|
||||||
|
mnemonic: Mnemonic,
|
||||||
|
socket_path: &Path,
|
||||||
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let service = ServiceBuilder::new()
|
let service = ServiceBuilder::new()
|
||||||
.layer(middleware::BincodeLayer::new())
|
.layer(middleware::BincodeLayer::new())
|
||||||
.service(Keyforkd::new(mnemonic));
|
.service(Keyforkd::new(mnemonic));
|
||||||
|
|
||||||
|
let mut server = match UnixServer::bind(socket_path) {
|
||||||
|
Ok(s) => s,
|
||||||
|
Err(e) => {
|
||||||
|
#[cfg(feature = "tracing")]
|
||||||
|
debug!(%e, "Encountered error attempting to bind socket: {}", socket_path.display());
|
||||||
|
return Err(e.into());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
match server.run(service).await {
|
||||||
|
Ok(_) => (),
|
||||||
|
Err(e) => {
|
||||||
|
#[cfg(feature = "tracing")]
|
||||||
|
debug!(%e, "Encountered error while running");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn start_and_run_server(mnemonic: Mnemonic) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let runtime_vars = std::env::vars()
|
let runtime_vars = std::env::vars()
|
||||||
.filter(|(key, _)| ["XDG_RUNTIME_DIR", "KEYFORKD_SOCKET_PATH"].contains(&key.as_str()))
|
.filter(|(key, _)| ["XDG_RUNTIME_DIR", "KEYFORKD_SOCKET_PATH"].contains(&key.as_str()))
|
||||||
.collect::<HashMap<String, String>>();
|
.collect::<HashMap<String, String>>();
|
||||||
|
@ -50,21 +76,5 @@ pub async fn start_and_run_server(mnemonic: Mnemonic) -> Result<(), Box<dyn std:
|
||||||
runtime_path.display()
|
runtime_path.display()
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut server = match UnixServer::bind(&runtime_path) {
|
start_and_run_server_on(mnemonic, &runtime_path).await
|
||||||
Ok(s) => s,
|
|
||||||
Err(e) => {
|
|
||||||
#[cfg(feature = "tracing")]
|
|
||||||
debug!(%e, "Encountered error attempting to bind socket: {}", runtime_path.display());
|
|
||||||
return Err(e.into());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
match server.run(service).await {
|
|
||||||
Ok(_) => (),
|
|
||||||
Err(e) => {
|
|
||||||
#[cfg(feature = "tracing")]
|
|
||||||
debug!(%e, "Encountered error while running");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ impl Service<DerivationRequest> for Keyforkd {
|
||||||
#[cfg_attr(feature = "tracing", tracing::instrument(skip(self)))]
|
#[cfg_attr(feature = "tracing", tracing::instrument(skip(self)))]
|
||||||
fn call(&mut self, req: DerivationRequest) -> Self::Future {
|
fn call(&mut self, req: DerivationRequest) -> Self::Future {
|
||||||
let mnemonic = self.mnemonic.clone();
|
let mnemonic = self.mnemonic.clone();
|
||||||
Box::pin(async {
|
Box::pin(async move {
|
||||||
let len = req.path().len();
|
let len = req.path().len();
|
||||||
if len < 2 {
|
if len < 2 {
|
||||||
return Err(KeyforkdRequestError::InvalidDerivationLength(len));
|
return Err(KeyforkdRequestError::InvalidDerivationLength(len));
|
||||||
|
|
Loading…
Reference in New Issue