It's better when it's simple

User Tools

Site Tools


WebDAV for DokuWiki

The aim is to create a WebDAV interface that will present all DokuWiki contents as a virtual filesystem. A flexible interface mechanism should allow to plug filters between the save and load mechanisms. Filters could then convert between DokuWiki syntax and other formats (like OpenOffice) on the fly.

Example virtual directory structure:

  • media
    • all media namespaces and files here
  • txt
    • raw access to the page files
  • odt
    • pages with on-the-fly Open Office conversion


A first implementation based on SabreDAV was started some years ago at but never completed.

For each “type” or “filter” a file is placed in lib/plugins/webdav/types. Eg. lib/plugins/webdav/types/media.php handles the access to the media files. The file contains two classes, one for handling directories (and listings) the other handles files.

webdav plugin is another SabreDAV implementation with support for pages, media, odt plugin, tag plugin.

Open Questions

  • Authentification
    • Currently only via HTTP Basic Auth?
    • Can we implement Basic Auth without relying on mod_php?
    • BasicAuth without SSL is not allowed by the WebDAV specs
      • most clients ignore this
      • Windows needs a registry change
    • DigestAuth would be better
      • We may need to store passwords in MD5 or create a second password file
  • Authentication has to be triggered by a 401 header, but this disables anonymous access
    • Add another virtual folder at top? → anonymous / login
  • Windows requires the DAV endpoint to be at the root of the domain
    • have some subdomain configuration example?
    • have some simple include to be copied to root?
  • Should the history of pages be available somehow? Can WebDAV history support be used?
  • What happens when I upload a “Upper Case.jpg” via WebDAV, but DokuWiki saves it at “upper_case.jpg”?
  • How to make old revisions accessible via WebDAV
devel/ideas/webdav.txt · Last modified: 2021-01-14 00:44 by lotar

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki