github AusAgentSmith-org/nzbdav-rs v0.5.2
nzbdav-rs v0.5.2

latest releases: v0.5.4, v0.5.3
4 hours ago

AIOStreams compatibility

This release resolves all known incompatibilities with AIOStreams, making nzbdav-rs a fully working NzbDAV backend for Stremio streaming. Set nzbdavUrl = http://your-host:8080/dav in AIOStreams — WebDAV and the SABnzbd API both resolve from that single URL.


What was broken (and is now fixed)

History item UUID mismatch — streaming never completed

move_to_history() was generating a fresh UUID for each history entry instead of reusing the queue item's UUID. AIOStreams polls mode=history&nzo_ids=<id> using the UUID returned by addurl — the mismatch meant polling never matched, so every stream request timed out.

Fix: history entries now inherit the queue item's UUID.

WebDAV PROPFIND hrefs missing the /dav mount prefix — video redirected to 404

nzbdav-rs mounts WebDAV under /dav via Axum's .nest(), which strips the prefix before the handler runs. PROPFIND responses were returning hrefs like /content/Movies/Film/film.mkv without the /dav prefix. AIOStreams's webdav-client computed these as /../content/… (a relative traversal), which resolved to the frontend fallback and returned HTML instead of video.

Fix: the PROPFIND handler reads OriginalUri from the Axum request extensions to recover the full path including the mount prefix, then applies it to all child hrefs.

nzbname parameter ignored — every play request re-added the NZB

AIOStreams sends nzbname=<FolderName> on every addurl call. This is the folder name it will look for in the WebDAV tree to check whether content already exists. nzbdav-rs was ignoring it and deriving the job name from the URL basename, so the WebDAV folder never matched AIOStreams's expected name and every play re-added the NZB.

Fix: nzbname is now used as the job/folder name when present.

SABnzbd API not reachable at /dav/api — AIOStreams config was impossible

AIOStreams derives both the WebDAV URL ({nzbdavUrl}/) and the API URL ({nzbdavUrl}/api) from a single field. With WebDAV at /dav and the API at /api, no single URL value could satisfy both paths.

Fix: the SABnzbd API is now also mounted at /dav/api.

nzo_ids history filter not implemented — O(N) history scan on every poll

AIOStreams passes nzo_ids=<id> to narrow history results to one item. The parameter was silently ignored, causing nzbdav-rs to return the full history table on every poll.

Fix: nzo_ids is now handled — handle_history fetches only the requested IDs directly.


AIOStreams configuration

Field Value
URL http://your-host:8080/dav
Public URL http://your-public-host:8080/dav
API Key your NZBDAV_API_KEY
Username your NZBDAV_WEBDAV_USER
Password your NZBDAV_WEBDAV_PASS

Binaries

  • nzbdav-app-x86_64-linux-musl — Linux x86_64 (static musl, no dependencies)
  • nzbdav-app-aarch64-linux-musl — Linux ARM64 (static musl, no dependencies)
  • nzbdav-app-aarch64-apple-darwin — macOS Apple Silicon (unsigned — run xattr -dr com.apple.quarantine nzbdav-app-aarch64-apple-darwin if blocked by Gatekeeper; uploaded separately)

Docker Images

  • ghcr.io/ausagentsmith-org/nzbdav-rs:v0.5.2
  • docker.io/ausagentsmith/nzbdav-rs:v0.5.2

Don't miss a new nzbdav-rs release

NewReleases is sending notifications on new releases.