Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
572 changes: 340 additions & 232 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ license = "Apache-2.0"
[workspace.dependencies]
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["codec"] }
portable-pty = "0.8"
portable-pty = "0.9"
serde = { version = "1", features = ["derive"] }
postcard = { version = "1", features = ["use-std"] }
bytes = "1"
Expand Down
4 changes: 2 additions & 2 deletions crates/clowder-client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ tokio-rustls = { version = "0.26", default-features = false, features = ["ring",

[target.'cfg(unix)'.dependencies]
# raw-mode terminal control for the interactive binary only
crossterm = "0.28"
crossterm = "0.29"

[dev-dependencies]
clowder-daemon = { path = "../clowder-daemon" }
clowder-workspace = { path = "../clowder-workspace" }
tempfile = "3"
tokio = { workspace = true, features = ["test-util"] }
rcgen = { version = "0.13", default-features = false, features = ["ring", "pem"] }
rcgen = { version = "0.14", default-features = false, features = ["ring", "pem"] }

[[bin]]
name = "clowder"
Expand Down
2 changes: 1 addition & 1 deletion crates/clowder-client/src/forward.rs
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ mod tests {
let ck = rcgen::generate_simple_self_signed(vec!["clowder".to_string()]).unwrap();
let cert_der = ck.cert.der().to_vec();
let fp = clowder_proto::cert_fingerprint_hex(&cert_der);
let key_der = ck.key_pair.serialize_der();
let key_der = ck.signing_key.serialize_der();
let provider = Arc::new(tokio_rustls::rustls::crypto::ring::default_provider());
let config = ServerConfig::builder_with_provider(provider)
.with_safe_default_protocol_versions()
Expand Down
4 changes: 2 additions & 2 deletions crates/clowder-config/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ license.workspace = true
[dependencies]
anyhow = { workspace = true }
serde = { workspace = true }
toml = "0.8"
toml = "1.1"
serde_json = "1"
rustix = { version = "0.38", features = ["fs"] }
rustix = { version = "1.1", features = ["fs"] }
# Only for getpwuid(): the passwd database is libc/NSS, not a syscall, so rustix has no binding.
# Already in Cargo.lock transitively (portable-pty/nix), so this adds an edge, not a crate.
libc = "0.2"
Expand Down
8 changes: 4 additions & 4 deletions crates/clowder-daemon/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ anyhow = { workspace = true }
serde = { workspace = true }
notify-rust = "4"
serde_json = "1"
rustix = { version = "0.38", features = ["fs"] }
rustix = { version = "1.1", features = ["fs"] }
parking_lot = "0.12"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rcgen = { version = "0.13", default-features = false, features = ["ring", "pem"] }
base64 = "0.22"
getrandom = "0.2"
rcgen = { version = "0.14", default-features = false, features = ["ring", "pem"] }
base64 = "0.23"
getrandom = "0.4"
rustls-pemfile = "2"
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] }
Expand Down
2 changes: 1 addition & 1 deletion crates/clowder-daemon/src/login_env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ pub async fn capture(spec: &CaptureSpec) -> Result<BTreeMap<String, String>> {
/// echoed back by one (or left over in a scrollback the shell replays); a random one cannot.
fn nonce() -> String {
let mut raw = [0u8; 8];
if getrandom::getrandom(&mut raw).is_err() {
if getrandom::fill(&mut raw).is_err() {
// Only reachable if the OS RNG is unavailable, at which point the daemon has bigger
// problems. A constant marker still parses; it is just guessable.
return "fallback".into();
Expand Down
4 changes: 2 additions & 2 deletions crates/clowder-daemon/src/remote_tls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ pub fn load_or_generate() -> Result<RemoteCreds> {
let cert = rcgen::generate_simple_self_signed(vec!["clowder".to_string()])
.context("generate self-signed cert")?;
let cert_pem = cert.cert.pem();
let key_pem = cert.key_pair.serialize_pem();
let key_pem = cert.signing_key.serialize_pem();
let cert_der = cert.cert.der().to_vec();

let mut raw = [0u8; 32];
getrandom::getrandom(&mut raw).map_err(|e| anyhow::anyhow!("getrandom: {e}"))?;
getrandom::fill(&mut raw).map_err(|e| anyhow::anyhow!("getrandom: {e}"))?;
let token = base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(raw);

if let Some(dir) = cert_p.parent() {
Expand Down
2 changes: 1 addition & 1 deletion crates/clowder-proto/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ tokio-util = { workspace = true }
anyhow = { workspace = true }
futures-util = { version = "0.3", features = ["sink"] }
serde_json = "1"
sha2 = "0.10"
sha2 = "0.11"
hex = "0.4"
4 changes: 2 additions & 2 deletions crates/clowder-vt/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ edition.workspace = true
license.workspace = true

[dependencies]
vte = "0.13"
unicode-width = "0.1"
vte = "0.15"
unicode-width = "0.2"
4 changes: 1 addition & 3 deletions crates/clowder-vt/src/screen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ impl Screen {
}

pub fn feed(&mut self, bytes: &[u8]) -> Vec<AttentionSignal> {
for &b in bytes {
self.parser.advance(&mut self.inner, b);
}
self.parser.advance(&mut self.inner, bytes);
std::mem::take(&mut self.inner.signals)
}

Expand Down