chore: update dependencies for RustSec advisories
This commit is contained in:
Generated
+584
-591
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -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
@@ -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"),
|
||||||
|
|||||||
Reference in New Issue
Block a user