chore: update dependencies for RustSec advisories

This commit is contained in:
2026-07-15 06:29:05 -04:00
parent b6240c17c5
commit 3b92bcbe52
3 changed files with 639 additions and 619 deletions
Generated
+584 -591
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -32,7 +32,7 @@ name = "pixelpass"
path = "src/main.rs" path = "src/main.rs"
[dependencies] [dependencies]
iroh = "1.0.0-rc.0" iroh = "1.0.2"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-util", "net", "signal", "process", "sync", "time"] } tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-util", "net", "signal", "process", "sync", "time"] }
tokio-util = { version = "0.7", features = ["io"] } tokio-util = { version = "0.7", features = ["io"] }
clap = { version = "4", features = ["derive"] } clap = { version = "4", features = ["derive"] }
@@ -48,7 +48,7 @@ ashpd = { version = "0.9", default-features = false, features = ["tokio"] }
pipewire = "0.9" pipewire = "0.9"
x11rb = { version = "0.13", default-features = false, features = ["allow-unsafe-code"] } x11rb = { version = "0.13", default-features = false, features = ["allow-unsafe-code"] }
uuid = { version = "1", features = ["v4"] } uuid = { version = "1", features = ["v4"] }
iroh-tickets = "1.0.0-rc.0" iroh-tickets = "1.0.0"
dialoguer = { version = "0.12", default-features = false } dialoguer = { version = "0.12", default-features = false }
arboard = { version = "3", default-features = false, features = ["wayland-data-control"] } arboard = { version = "3", default-features = false, features = ["wayland-data-control"] }
ureq = { version = "3", default-features = false, features = ["rustls"] } ureq = { version = "3", default-features = false, features = ["rustls"] }
+49 -22
View File
@@ -191,8 +191,7 @@ fn encode_section() -> Section {
/// no video — the exact silent failure `--no-hwencode` works around. /// no video — the exact silent failure `--no-hwencode` works around.
fn hardware_encode_check() -> Check { fn hardware_encode_check() -> Check {
if !deps::gst_element_exists("vah264enc") { if !deps::gst_element_exists("vah264enc") {
return Check::warn("hardware H.264", "vah264enc plugin not installed") return Check::warn("hardware H.264", "vah264enc plugin not installed").with_hint(format!(
.with_hint(format!(
"{} — or just host with `--no-hwencode` (software x264)", "{} — or just host with `--no-hwencode` (software x264)",
deps::install_hint_for_gst_element("vah264enc") deps::install_hint_for_gst_element("vah264enc")
)); ));
@@ -207,9 +206,10 @@ fn hardware_encode_check() -> Check {
} }
match vainfo_output() { match vainfo_output() {
Some(out) if vainfo_has_h264_encode(&out) => { Some(out) if vainfo_has_h264_encode(&out) => Check::ok(
Check::ok("hardware H.264", "VA-API H.264 encode available (vah264enc)") "hardware H.264",
} "VA-API H.264 encode available (vah264enc)",
),
Some(_) => Check::warn( Some(_) => Check::warn(
"hardware H.264", "hardware H.264",
"vah264enc present, but VA-API reports no H.264 encode entrypoint", "vah264enc present, but VA-API reports no H.264 encode entrypoint",
@@ -237,15 +237,28 @@ fn software_encode_check() -> Check {
fn mux_audio_section() -> Section { fn mux_audio_section() -> Section {
// These live in plugins-bad/-good/-libav and plugins-base; all are required // These live in plugins-bad/-good/-libav and plugins-base; all are required
// for either backend, so a miss here is a hard Fail. // for either backend, so a miss here is a hard Fail.
let tail = ["h264parse", "mpegtsmux", "aacparse", "avenc_aac", "pulsesrc", "videoscale"]; let tail = [
let missing: Vec<&str> = tail.iter().copied().filter(|e| !deps::gst_element_exists(e)).collect(); "h264parse",
"mpegtsmux",
"aacparse",
"avenc_aac",
"pulsesrc",
"videoscale",
];
let missing: Vec<&str> = tail
.iter()
.copied()
.filter(|e| !deps::gst_element_exists(e))
.collect();
let tail_check = if missing.is_empty() { let tail_check = if missing.is_empty() {
Check::ok("mux + audio tail", tail.join(", ")) Check::ok("mux + audio tail", tail.join(", "))
} else { } else {
Check::fail("mux + audio tail", format!("missing: {}", missing.join(", "))).with_hint( Check::fail(
deps::install_hint_for_gst_element(missing[0]), "mux + audio tail",
format!("missing: {}", missing.join(", ")),
) )
.with_hint(deps::install_hint_for_gst_element(missing[0]))
}; };
Section { Section {
@@ -278,7 +291,9 @@ fn viewer_section() -> Section {
async fn network_section(relay: Option<&str>) -> Section { async fn network_section(relay: Option<&str>) -> Section {
let check = match endpoint::bind(relay).await { let check = match endpoint::bind(relay).await {
Ok(ep) => { Ok(ep) => {
let online = tokio::time::timeout(Duration::from_secs(8), ep.online()).await.is_ok(); let online = tokio::time::timeout(Duration::from_secs(8), ep.online())
.await
.is_ok();
let relay_count = ep.addr().addrs.iter().filter(|a| a.is_relay()).count(); let relay_count = ep.addr().addrs.iter().filter(|a| a.is_relay()).count();
let where_ = relay.map(|r| format!(" ({r})")).unwrap_or_default(); let where_ = relay.map(|r| format!(" ({r})")).unwrap_or_default();
// Close gracefully so iroh doesn't log a scary "Endpoint dropped // Close gracefully so iroh doesn't log a scary "Endpoint dropped
@@ -288,11 +303,17 @@ async fn network_section(relay: Option<&str>) -> Section {
if online && relay_count > 0 { if online && relay_count > 0 {
Check::ok("relay", format!("home relay reachable{where_}")) Check::ok("relay", format!("home relay reachable{where_}"))
} else if online { } else if online {
Check::warn("relay", format!("endpoint online but no relay address{where_}")) Check::warn(
.with_hint("n0 DNS discovery may still connect peers, but relay fallback is degraded") "relay",
format!("endpoint online but no relay address{where_}"),
)
.with_hint(
"n0 DNS discovery may still connect peers, but relay fallback is degraded",
)
} else { } else {
Check::warn("relay", format!("no relay connected within 8s{where_}")) Check::warn("relay", format!("no relay connected within 8s{where_}")).with_hint(
.with_hint("check connectivity/firewall; peers behind NAT rely on the relay to rendezvous") "check connectivity/firewall; peers behind NAT rely on the relay to rendezvous",
)
} }
} }
Err(e) => Check::fail("relay", format!("could not bind endpoint: {e}")), Err(e) => Check::fail("relay", format!("could not bind endpoint: {e}")),
@@ -318,7 +339,10 @@ fn gst_check(element: &str, label: &str) -> Check {
if deps::gst_element_exists(element) { if deps::gst_element_exists(element) {
Check::ok(label, element.to_string()) Check::ok(label, element.to_string())
} else { } else {
Check::fail(label, format!("GStreamer element `{element}` not available")) Check::fail(
label,
format!("GStreamer element `{element}` not available"),
)
.with_hint(deps::install_hint_for_gst_element(element)) .with_hint(deps::install_hint_for_gst_element(element))
} }
} }
@@ -392,7 +416,12 @@ fn os_release_field(key: &str) -> Option<String> {
fn display_env_summary() -> String { fn display_env_summary() -> String {
let mut parts = Vec::new(); let mut parts = Vec::new();
for var in ["WAYLAND_DISPLAY", "DISPLAY", "XDG_SESSION_TYPE", "XDG_CURRENT_DESKTOP"] { for var in [
"WAYLAND_DISPLAY",
"DISPLAY",
"XDG_SESSION_TYPE",
"XDG_CURRENT_DESKTOP",
] {
if let Some(v) = std::env::var_os(var) { if let Some(v) = std::env::var_os(var) {
parts.push(format!("{var}={}", v.to_string_lossy())); parts.push(format!("{var}={}", v.to_string_lossy()));
} }
@@ -408,11 +437,9 @@ fn has_render_node() -> bool {
let Ok(entries) = std::fs::read_dir("/dev/dri") else { let Ok(entries) = std::fs::read_dir("/dev/dri") else {
return false; return false;
}; };
entries.flatten().any(|e| { entries
e.file_name() .flatten()
.to_string_lossy() .any(|e| e.file_name().to_string_lossy().starts_with("renderD"))
.starts_with("renderD")
})
} }
fn vainfo_output() -> Option<String> { fn vainfo_output() -> Option<String> {
@@ -559,7 +586,7 @@ mod tests {
#[test] #[test]
fn summarize_counts_fails_and_warns_only() { fn summarize_counts_fails_and_warns_only() {
let checks = vec![ let checks = [
Check::ok("a", "x"), Check::ok("a", "x"),
Check::info("b", "x"), Check::info("b", "x"),
Check::warn("c", "x"), Check::warn("c", "x"),