From a6234e45074bba35bdc931edbae81befdb112290 Mon Sep 17 00:00:00 2001 From: Keagan McClelland Date: Mon, 9 May 2022 17:28:11 -0600 Subject: [PATCH] adds product key to error message in setup flow when there is mismatch --- backend/Cargo.toml | 1 + backend/build-prod.sh | 23 +++++++++++++---------- backend/src/setup.rs | 23 +++++++++++++++-------- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/backend/Cargo.toml b/backend/Cargo.toml index f8089b050..443915717 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -40,6 +40,7 @@ path = "src/bin/embassy-cli.rs" avahi = ["avahi-sys"] beta = [] default = ["avahi", "sound", "metal"] +dev = [] metal = [] sound = [] unstable = ["patch-db/unstable"] diff --git a/backend/build-prod.sh b/backend/build-prod.sh index b092dc120..21f9b6dac 100755 --- a/backend/build-prod.sh +++ b/backend/build-prod.sh @@ -11,18 +11,21 @@ fi alias 'rust-arm64-builder'='docker run --rm -it -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$(pwd)":/home/rust/src start9/rust-arm-cross:aarch64' cd .. +FLAGS="" if [[ "$ENVIRONMENT" =~ (^|-)unstable($|-) ]]; then - if [[ "$ENVIRONMENT" =~ (^|-)beta($|-) ]]; then - rust-arm64-builder sh -c "(cd backend && cargo build --release --features beta,unstable)" - else - rust-arm64-builder sh -c "(cd backend && cargo build --release --features unstable)" - fi + FLAGS="unstable,$FLAGS" +fi +if [[ "$ENVIRONMENT" =~ (^|-)beta($|-) ]]; then + FLAGS="beta,$FLAGS" +fi +if [[ "$ENVIRONMENT" =~ (^|-)dev($|-) ]]; then + FLAGS="dev,$FLAGS" +fi +if [[ "$FLAGS" = "" ]]; then + rust-arm64-builder sh -c "(cd backend && cargo build --release)" else - if [[ "$ENVIRONMENT" =~ (^|-)beta($|-) ]]; then - rust-arm64-builder sh -c "(cd backend && cargo build --release --features beta)" - else - rust-arm64-builder sh -c "(cd backend && cargo build --release)" - fi + echo "FLAGS=$FLAGS" + rust-arm64-builder sh -c "(cd backend && cargo build --release --features $FLAGS)" fi cd backend #rust-arm64-builder aarch64-linux-gnu-strip target/aarch64-unknown-linux-gnu/release/embassyd diff --git a/backend/src/setup.rs b/backend/src/setup.rs index 1d5402c99..898d9bad8 100644 --- a/backend/src/setup.rs +++ b/backend/src/setup.rs @@ -75,9 +75,7 @@ pub struct StatusRes { #[command(rpc_only, metadata(authenticated = false))] pub async fn status(#[context] ctx: SetupContext) -> Result { Ok(StatusRes { - product_key: tokio::fs::metadata("/embassy-os/product_key.txt") - .await - .is_ok(), + product_key: tokio::fs::metadata(PRODUCT_KEY_PATH).await.is_ok(), migrating: ctx.recovery_status.read().await.is_some(), }) } @@ -104,20 +102,29 @@ pub async fn attach( DEFAULT_PASSWORD, ) .await?; + let mut product_key = ctx.product_key().await?; let product_key_path = Path::new("/embassy-data/main/product_key.txt"); if tokio::fs::metadata(product_key_path).await.is_ok() { - let pkey = tokio::fs::read_to_string(product_key_path).await?; - if pkey.trim() != &*ctx.product_key().await? { + let pkey = Arc::new( + tokio::fs::read_to_string(product_key_path) + .await? + .trim() + .to_owned(), + ); + if pkey != product_key { crate::disk::main::export(&*guid, &ctx.datadir).await?; return Err(Error::new( - eyre!("The EmbassyOS product key does not match the supplied drive"), + eyre!( + "The EmbassyOS product key does not match the supplied drive: {}", + pkey + ), ErrorKind::ProductKeyMismatch, )); } } init( &RpcContextConfig::load(ctx.config_path.as_ref()).await?, - &*ctx.product_key().await?, + &*product_key, ) .await?; let secrets = ctx.secret_store().await?; @@ -127,7 +134,7 @@ pub async fn attach( tor_address: format!("http://{}", tor_key.public().get_onion_address()), lan_address: format!( "https://embassy-{}.local", - crate::hostname::derive_id(&*ctx.product_key().await?) + crate::hostname::derive_id(&*product_key) ), root_ca: String::from_utf8(root_ca.to_pem()?)?, };