Rust core for FlingDLNA: a DLNA controller and media server, a command-line client, and C-compatible bindings for the macOS application.
The companion app lives in flingdlna-macos. It pins this
repository as a Git submodule and builds the FFI library locally; this
repository intentionally contains no prebuilt libraries.
- DLNA renderer discovery, playback control, queues, subtitles, and Wake-on-LAN
- DLNA media server and file watcher
- Chromecast discovery and playback
- CLI, TUI, and optional Unix-socket daemon
- C FFI for macOS clients
Install the pinned Rust toolchain with rustup. The
repository's rust-toolchain.toml installs rustfmt, Clippy, and the macOS
Apple Silicon and Intel targets automatically.
ffprobe is optional and is used only for duration probing of AVI, WMV, and
FLV files.
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --release
./target/release/flingdlna --helpBuild a universal macOS FFI library and C header outside the source tree:
cargo install cbindgen --locked
FLINGDLNA_FFI_OUTPUT_DIR=/tmp/flingdlna-ffi ./scripts/build-ffi.shThe output directory contains lib/libflingdlna_ffi.a and
include/flingdlna.h. The macOS app performs this step automatically in
DerivedData.
- Never commit credentials, certificate material, provisioning profiles, local
databases, or logs. Run
./scripts/audit-open-source.shbefore every release. - User-controlled integrations belong in the client application's Keychain or local configuration, never in this repository.
- This project's source is MIT licensed. Dependency licensing is
checked with
cargo deny; the tracked THIRD_PARTY_NOTICES.md and SBOM.json are generated from the locked graph.
- Run the quality commands above plus
cargo deny check licenses bans sources. - Regenerate the third-party notice and CycloneDX SBOM with
./scripts/generate-third-party-materials.sh. - Run
./scripts/audit-open-source.shand inspect the complete output. - Tag the core release before advancing the macOS submodule pointer.