diff --git a/backend/src/config/action.rs b/backend/src/config/action.rs index 5c06726d2..435710fba 100644 --- a/backend/src/config/action.rs +++ b/backend/src/config/action.rs @@ -107,6 +107,7 @@ impl ConfigActions { #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "kebab-case")] pub struct SetResult { + #[serde(default)] #[serde(deserialize_with = "crate::util::serde::deserialize_from_str_opt")] #[serde(serialize_with = "crate::util::serde::serialize_display_opt")] pub signal: Option, diff --git a/backend/src/context/cli.rs b/backend/src/context/cli.rs index 8981b1efe..6bb2b47b3 100644 --- a/backend/src/context/cli.rs +++ b/backend/src/context/cli.rs @@ -24,6 +24,7 @@ pub struct CliContextConfig { pub bind_rpc: Option, pub host: Option, #[serde(deserialize_with = "crate::util::serde::deserialize_from_str_opt")] + #[serde(default)] pub proxy: Option, pub cookie_path: Option, } @@ -39,6 +40,10 @@ pub struct CliContextSeed { impl Drop for CliContextSeed { fn drop(&mut self) { let tmp = format!("{}.tmp", self.cookie_path.display()); + let parent_dir = self.cookie_path.parent().unwrap_or(Path::new("/")); + if !parent_dir.exists() { + std::fs::create_dir_all(&parent_dir).unwrap(); + } let mut writer = fd_lock_rs::FdLock::lock( File::create(&tmp).unwrap(), fd_lock_rs::LockType::Exclusive, @@ -152,3 +157,13 @@ impl Context for CliContext { &self.0.client } } +/// When we had an empty proxy the system wasn't working like it used to, which allowed empty proxy +#[test] +fn test_cli_proxy_empty() { + serde_yaml::from_str::( + " + bind_rpc: + ", + ) + .unwrap(); +} diff --git a/system-images/compat/Cargo.lock b/system-images/compat/Cargo.lock index 6684c63e7..1f79694fa 100644 --- a/system-images/compat/Cargo.lock +++ b/system-images/compat/Cargo.lock @@ -89,6 +89,27 @@ dependencies = [ "term 0.7.0", ] +[[package]] +name = "async-stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +dependencies = [ + "proc-macro2 1.0.39", + "quote 1.0.18", + "syn 1.0.95", +] + [[package]] name = "async-trait" version = "0.1.53" @@ -161,9 +182,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" [[package]] name = "basic-cookies" @@ -499,6 +520,12 @@ dependencies = [ "serde_yaml", ] +[[package]] +name = "const-oid" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661" + [[package]] name = "const_fn" version = "0.4.9" @@ -663,9 +690,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "3.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ "byteorder", "digest 0.9.0", @@ -720,6 +747,17 @@ dependencies = [ "lock_api", ] +[[package]] +name = "der" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -765,6 +803,7 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ "block-buffer 0.10.2", "crypto-common", + "subtle", ] [[package]] @@ -823,6 +862,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" dependencies = [ + "pkcs8", "serde", "signature", ] @@ -853,12 +893,14 @@ dependencies = [ [[package]] name = "embassy-os" -version = "0.3.0-rev.3" +version = "0.3.1" dependencies = [ "aes", + "async-stream", "async-trait", "base32", "base64", + "base64ct", "basic-cookies", "bollard", "chrono", @@ -866,8 +908,10 @@ dependencies = [ "clap", "color-eyre", "cookie_store", + "digest 0.10.3", "digest 0.9.0", "divrem", + "ed25519", "ed25519-dalek", "emver", "fd-lock-rs", @@ -875,7 +919,7 @@ dependencies = [ "git-version", "helpers", "hex", - "hmac", + "hmac 0.12.1", "http", "hyper", "hyper-ws-listener", @@ -897,6 +941,7 @@ dependencies = [ "patch-db", "pbkdf2", "pin-project", + "pkcs8", "platforms", "prettytable-rs", "proptest", @@ -913,6 +958,7 @@ dependencies = [ "serde_json", "serde_with", "serde_yaml", + "sha2 0.10.2", "sha2 0.9.9", "simple-logging", "sqlx", @@ -1392,6 +1438,15 @@ dependencies = [ "digest 0.9.0", ] +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.3", +] + [[package]] name = "http" version = "0.2.7" @@ -2207,9 +2262,9 @@ dependencies = [ [[package]] name = "password-hash" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +checksum = "e029e94abc8fb0065241c308f1ac6bc8d20f450e8f7c5f0b25cd9b8d526ba294" dependencies = [ "base64ct", "rand_core 0.6.3", @@ -2265,14 +2320,23 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05894bce6a1ba4be299d0c5f29563e08af2bc18bb7d48313113bed71e904739" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "crypto-mac", - "hmac", + "digest 0.10.3", + "hmac 0.12.1", "password-hash", - "sha2 0.9.9", + "sha2 0.10.2", +] + +[[package]] +name = "pem-rfc7468" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +dependencies = [ + "base64ct", ] [[package]] @@ -2387,6 +2451,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.25" @@ -3255,6 +3329,16 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "sqlformat" version = "0.1.8" @@ -3868,7 +3952,7 @@ dependencies = [ "derive_more", "ed25519-dalek", "hex", - "hmac", + "hmac 0.11.0", "rand 0.7.3", "serde", "serde_derive", @@ -4382,9 +4466,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.3.0" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "94693807d016b2f2d2e14420eb3bfcca689311ff775dcf113d74ea624b7cdf07" dependencies = [ "zeroize_derive", ]