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.
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!
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%
This code requires:
XML::Simple XML::SAX (for namespace support in XML::Simple) DateTime (THE new Date and Time support in Perl)
For technical support please email to jlawrenc@cpan.org ... for faster service please include "HTTP::DAVServer" and "help" in your subject line.
Jay J. Lawrence - jlawrenc@cpan.org Infonium Inc., Canada http://www.infonium.ca/
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.
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!
HTTP::DAV, HTTP::Webdav, http://www.webdav.org/, RFC 2518
To install HTTP::DAVServer, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTTP::DAVServer
CPAN shell
perl -MCPAN -e shell install HTTP::DAVServer
For more information on module installation, please visit the detailed CPAN module installation guide.