What are your experiences with implementing / using WebDAV?

In the current project, I was thinking of implementing WebDAV to represent a virtual file vault that clients can access. So far, I have only done Google research, but it looks like I can avoid implementing only two methods:

GET, PROPFIND 

I think this is great. I was just curious. If I wanted to implement file upload via:

 PUT 

I have not implemented it, but it seems simple enough. My only problem is whether the progress bar will be displayed to the user if they use the standard Vista Explorer or OSX Finder.

I guess I'm looking for some stories from people familiar with WebDAV.

+6
windows filesystems webdav macos
source share
8 answers

For many WebDAV clients, and even read-only access, you will also need OPTIONS support. If you want to support booting, PUT is obviously required, and some clients (MacOS X?) Will require blocking support.

(btw, RFC 4918 is the official source of information).

+7
source share

I implemented most of the WebDAV protocol in about a day: http://github.com/nfarina/simpledav

I wrote it in Python to run in the Google App Engine, and I expect any other language to be similar. In general, these are approximately two pages of code.

I implemented the following methods: OPTIONS, PROPFIND, MKCOL, DELETE, MOVE, PUT, GET. So far I have tested Transmit and Cyberduck, and both of them do a great job of this.

Hope this can provide some guidance for the next person interested in implementing the WebDAV server. This is not a complex protocol, it is very dense with an abstract language, for example, “depth” and “collections” and “blah”.

Here's the specification: http://www.webdav.org/specs/rfc4918.html

But the best way to understand the protocol is to monitor client interaction with the production server. I used Transmit to connect to the Box.net WebDAV server and tracked traffic using Charles Proxy.

+7
source share

Bit was late for the party, but I implemented most of the webdav protocol, and I can safely say that you will need to implement most of the protocol.

For OS / X, you will need WebDAV class 2 support, which includes LOCK and UNLOCK (it was especially difficult for me to fully implement the http If: header, but for Finder you only need a little.)

Here are some of my personal findings:

http://sabre.io/dav/clients/windows/ http://sabre.io/dav/clients/finder/

Hope this helps

+5
source share

If you run Apache Jackrabbit under, say, Tomcat, it can be configured to offer WebDAV and save downloaded files. Perhaps this will be a useful model or even a good enough replacement for the planned implementation.

Apache Jackrabbit Support for WebDAV

In addition, you can keep abreast of the BitKinex client (a free 30-day trial), which I found a useful tool for testing the WebDAV server.

BitKinex Homepage

+2
source share

We use WebDAV internally to provide access to folders with some file resources for clients outside of our firewall. For this we use IIS6.

Basically, it comes down to creating a virtual directory in IIS, which maps to every network file system that you want to make accessible through WebDAV. Configure it for content coming from "Shares located on another computer" - use the UNC path to the share for the Network Directory value. We include all options except Index this resource. Disable all content pages by default. Enable Integrated Windows Authentication (ours is also configured using SSL). I have the root set to deny access to anonymous and allow access to any authenticated user. We also have wildcard MIME matching (. * In application / octet-stream). Enable the WebDAV Web Service Extension in IIS. You also need to configure the web server to delegate permissions to all file servers that you can access so that it can transfer user credentials.

If you have Macintosh clients, you may also need an ISAPI filter that displays 401 to 403 errors for Darwin clients. Microsoft and Apple disagree on how to deal with a situation where you do not have permission to write to the directory. Apple continues to forward credentials on error 401 (Access Denied), translating it into a 403 (Forbidden) error that prevents it from doing so. By default, Apple likes to write a point file to every directory it accesses. Navigating directories in which you do not have write access will fail Finder if you do not have a filter. I have the source code for this, if necessary.

All this from head to toe. Perhaps (perhaps?) That I may have missed something. Feel free to contact me through the contact information on my website if you have problems.

+2
source share

We have a webDAV server on our website.

I found Apache Jackrabbit a good help for its implementation. however webDav is a serious PITA for client-side support.

many client implementations vary greatly in their behavior, and you will likely have to support several different types of listening implementations.

some examples: MS vista only supports SSL authentication

most window-based window-based WebDAV clients assume that your / let webdav is a sharepoint server and will act accordingly (thus not in accordance with the webDAV protocol)

one example of this is that you NEED to allow an unauthorized LOCK request in the root directory of your server (i.e. yourdomain.com/not yourdomain.com/where/webdav/should/live), otherwise you won’t be able to write acces in MS windows. (this is a serious PITA on a tomcat machine, where your things usually live in server.com/servlets/paths/thelocation)

most (all?) versions of MS office respond to different webdav links.

I think my point is to integrate webdav support into an existing product, which can be a lot more complicated than you expected. and if possible, I would recommend using a (semi) standard webDAV server like jackrabbit webdavServer, or apache mod_webdav

+2
source share

I found support for OS X Finder WebDAV to be truly sophisticated. To get read and write support, you need to implement LOCK in addition to the other bits.

I wrote a WebDAV interface for a Postres database where python modules were stored in a database in a hierarchical structure similar to a folder. Access to it with the troupe worked fine, and IIRC also worked in the GUI window browser, but Finder refused to mount this resource as anything but read-only.

So, I do not know if this would give an indicator of progress. The files I dealt with were small enough to read / copy them almost instantly. I think that copying a large file using Finder will probably give a progress bar - it is suitable for any other installed share.

+1
source share

Here is another open source project for WSGI WebDAV http://code.google.com/p/wsgidav/ where I took the PyFileServer project.

0
source share

All Articles