The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

HTTP::DAVServer - allows you to write server-side functions to accept, process and respond to WebDAV client requests. WebDAV - RFC 2518 - is a protocol which allows clients to manipulate files on a remote server using HTTP.

SYNOPSIS

In your favorite NPH CGI script ( for now )

use HTTP::DAVServer;
HTTP::DAVServer->handle;

You will need to add directives to Apache to request that certain methods be handled by the CGI script:

  Script PROPFIND /cgi-bin/nph-webdav
  Script PUT      /cgi-bin/nph-webdav

See INSTALL for more details. See INSTALL for important warning!

MODULE STATUS

This module is a prototype. Please see INSTALL for important warnings. You should try this module if you're interested in developing a customized WebDAV server and you want to use Perl to do most or all of fancy footwork behind the scenes.

My short term goal is to provide a reference implementation of a WebDAV server which can be subclassed for specific implementation features. Information to resolve any of the following bugs is most welcome! I will be fixing all the failed items in copymove next.

Litmus test results:

http and basic tests are good, some errors on copymove and propfind. proppatch not done so skips lots of tests.

-> running `http':
0. init.................. pass
1. begin................. pass
2. expect100............. pass
3. finish................ pass
<- summary for `http': of 4 tests run: 4 passed, 0 failed. 100.0%

-> running `basic':
0. init.................. pass
1. begin................. pass
2. options............... WARNING: server does not claim Class 2 compliance
 ...................... pass (with 1 warning)
3. put_get............... pass
4. put_get_utf8_segment.. pass
5. mkcol_over_plain...... pass
6. delete................ pass
7. delete_null........... pass
8. mkcol................. pass
9. mkcol_again........... pass
10. delete_coll........... pass
11. mkcol_no_parent....... pass
12. mkcol_with_body....... pass
13. finish................ pass
<- summary for `basic': of 14 tests run: 14 passed, 0 failed. 100.0%
-> 1 warning was issued.

-> running `copymove':
 0. init.................. pass
 1. begin................. pass
 2. copy_init............. pass
 3. copy_simple........... FAIL 
 4. copy_overwrite........ WARNING: COPY-on-existing fails with 412
    ...................... FAIL 
 5. copy_cleanup.......... pass
 6. copy_coll............. FAIL 
 7. move.................. FAIL 
 8. move_coll............. FAIL 
 9. move_cleanup.......... pass
10. finish................ pass
<- summary for `copymove': of 11 tests run: 6 passed, 5 failed. 54.5%
-> 1 warning was issued.

-> running `props':
 0. init.................. pass
 1. begin................. pass
 2. propfind_invalid...... pass
 3. propfind_invalid2..... pass
 4. propfind_d0........... FAIL (No responses returned)
 5. propinit.............. pass
 6. propset............... FAIL (PROPPATCH on `/litmus/litmus/prop': 400 Bad Request)
 7. propget............... SKIPPED
 8. propmove.............. SKIPPED
 9. propget............... SKIPPED
10. propdeletes........... SKIPPED
11. propget............... SKIPPED
12. propreplace........... SKIPPED
13. propget............... SKIPPED
14. propnullns............ SKIPPED
15. propget............... SKIPPED
16. prophighunicode....... SKIPPED
17. propget............... SKIPPED
18. propvalnspace......... SKIPPED
19. propwformed........... pass
20. propinit.............. pass
21. propmanyns............ FAIL (PROPPATCH on `/litmus/litmus/prop': 400 Bad Request)
22. propget............... FAIL (PROPFIND on `/litmus/litmus/prop': 400 Bad Request)
23. propcleanup........... pass
24. finish................ pass
-> 12 tests were skipped.
<- summary for `props': of 13 tests run: 9 passed, 4 failed. 69.2%

DEPENDENCIES

This code requires:

XML::Simple
XML::SAX     (for namespace support in XML::Simple)
DateTime     (THE new Date and Time support in Perl)

SUPPORT

For technical support please email to jlawrenc@cpan.org ... for faster service please include "HTTP::DAVServer" and "help" in your subject line.

AUTHOR

Jay J. Lawrence - jlawrenc@cpan.org
Infonium Inc., Canada
http://www.infonium.ca/

COPYRIGHT

Copyright (c) 2003 Jay J. Lawrence, Infonium Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

ACKNOWLEDGEMENTS

Thank you to the authors of my prequisite modules. With out your help this code would be much more difficult to write!

XML::Simple - Grant McLean
XML::SAX    - Matt Sergeant
DateTime    - Dave Rolsky

Also the authors of litmus, a very helpful tool indeed!

SEE ALSO

HTTP::DAV, HTTP::Webdav, http://www.webdav.org/, RFC 2518