[package] name = "openpxe-iso-store" version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true description = "ISO upload, storage, introspection, and boot-entry generation for OpenPXE" [lints] workspace = true [dependencies] openpxe-core.workspace = true tokio = { workspace = true } serde.workspace = true serde_json.workspace = true tracing.workspace = true anyhow.workspace = true sha2.workspace = true hex.workspace = true bcrypt.workspace = true time.workspace = true parking_lot.workspace = true bytes.workspace = true tempfile = "3.12" libc = "0.2" # v0.4.61: server-side compose of the operator's uploaded raster into a # fixed 1024x768 canvas so the PXE menu always gets a consistently-sized # PNG regardless of what the operator uploaded. We use the bare-bones # `image` crate (no default features) and explicitly enable only the # decoders we accept on upload (PNG/JPEG/WebP/GIF) plus the PNG # encoder. Keeps the build slim — no JPEG2000, TIFF, BMP, etc. image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp", "gif"] } # v0.4.67: pure-Rust NFSv3 client for reading remote ISOs without a # kernel mount. See crates/iso-store/src/nfs_share.rs for usage. nfs3_client = { workspace = true } nfs3_types = { workspace = true } # v0.5.5: pure-Rust SSH/SFTP client (ring backend) for the SFTP remote # share path. See crates/iso-store/src/sftp_share.rs for usage. russh = { workspace = true } russh-sftp = { workspace = true } # Needed for the Stream trait that wraps the mpsc receiver feeding # NFS read-loop bytes into axum's Body::from_stream. futures = { workspace = true } [dev-dependencies] tempfile = "3.12" [features] # v0.7.4: exposes the in-memory ISO9660 test-image builder # (`iso_fs::testiso`) to other crates' integration tests, so http-api's # full-flow tests can synthesize ISOs with real directory trees — the # probe-based introspection no longer classifies label-only blobs. # Never enabled in production builds. test-image = []