Skip to content
GNOMEPublic

Repository files navigation

phởdav

About

phởdav is a WebDAV server implementation using libsoup (RFC 4918) and GIO. It provides:

  • libphodav, a GObject WebDAV server library
  • chezdav, a small tool to share a directory (with optional digest authentication and TLS)
  • spice-webdavd, the Spice WebDAV daemon, which shares a folder between a host and its guests

Building

phởdav uses the meson build system:

meson setup build
meson compile -C build
meson test -C build
meson install -C build

The build is configurable through meson options (Avahi/mDNS support, GObject introspection, API documentation...), see meson_options.txt.

Documentation

The API reference is generated with gi-docgen:

meson compile -C build phodav-3.0-doc

The chezdav(1) manual page is installed in the usual locations.

Releases

A release is made by pushing a signed tag to the repository:

git evtag sign v3.1   # or: git tag -s v3.1
git push origin v3.1

The tag must match a protected tag pattern (such as v*) in the project settings, and the version in NEWS must already be updated. The tarball version is derived from the tag with git describe.

The tag triggers a CI pipeline which builds and tests the release, generates the tarball and uploads it to download.gnome.org and to the releases section, as described in the maintainer handbook. The tag message becomes the release notes, and the NEWS file of the tarball is published alongside the tarball. The Windows installers built by the CI are attached to the release as additional assets.

Notes

Windows WebDAV clients

The Windows WebDAV redirector limits downloads to 50,000,000 bytes by default. Larger files fail to open with "The file size exceeds the limit allowed and cannot be saved"; uploads are not affected by this setting. To allow larger downloads, set the FileSizeLimitInBytes DWORD under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters to the desired size in bytes, and restart the WebClient service.

phởdav was initially developed as a filesharing mechanism for Spice, but it is generic enough to be reused in other projects, in particular in the GNOME desktop. Further integration work would be a welcome contribution!

Contributing

git clone https://gitlab.gnome.org/GNOME/phodav.git

The sources are formatted with clang-format and linted with gobject-linter; both are run by pre-commit hooks:

cargo install gobject-linter   # Rust tool, not managed by pre-commit
pre-commit install

Note that Jujutsu does not run Git hooks: jj users should run pre-commit run --all-files before pushing instead.

Please report bugs and open merge requests on GitLab: https://gitlab.gnome.org/GNOME/phodav/

Opening merge requests is recommended, as it runs the CI tests.

Releases

Packages

Contributors

Languages