webdav
play

WebDAV The good, the bad and the evil TobiasSchlitt < - PowerPoint PPT Presentation

WebDAV The good, the bad and the evil TobiasSchlitt < toby@php.net > IPC SE 2009 2009-05-30 Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 1 / 32 About me Tobias Schlitt < toby@php.net > PHP since 2001 Freelancing consultant


  1. WebDAV The good, the bad and the evil TobiasSchlitt < toby@php.net > IPC SE 2009 2009-05-30 Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 1 / 32

  2. About me Tobias Schlitt < toby@php.net > PHP since 2001 Freelancing consultant Qualified IT Specialist Studying CS at TU Dortmund (expect to finish this year) OSS addicted PHP eZ Components PHPUnit Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 2 / 32

  3. Agenda 1 HTTP & WebDAV 2 Development challenges 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 3 / 32

  4. Outline 1 HTTP & WebDAV 2 Development challenges 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 4 / 32

  5. HTTP Network protocol driving the web Current version: 1.1 RFC 2616 (June 1999) http://tools.ietf.org/html/rfc2616 Originlally invented by Sir Tim Berners-Lee Client / server based Stateless communication Defines Request / response Headers / body Formats / actions Figure: Tim Berners-Lee [Dan] Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 5 / 32

  6. WebDAV WebDAV HTTP Extensions for Distributed Authoring (RFC 2518) WebDAV HTTP Extensions for Web Distributed Authoring and Versioning (RFC 4918) IETF Standard Specified in RFC 2518 (February 1999) http://tools.ietf.org/html/rfc2518 Refined in RFC 4918 (June 2007) http://tools.ietf.org/html/rfc4918 Extension to HTTP Distributed editing WebDAV ... allows your users to edit web content easily. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 6 / 32

  7. WebDAV WebDAV HTTP Extensions for Distributed Authoring (RFC 2518) WebDAV HTTP Extensions for Web Distributed Authoring and Versioning (RFC 4918) IETF Standard Specified in RFC 2518 (February 1999) http://tools.ietf.org/html/rfc2518 Refined in RFC 4918 (June 2007) http://tools.ietf.org/html/rfc4918 Extension to HTTP Distributed editing WebDAV ... allows your users to edit web content easily. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 6 / 32

  8. WebDAV WebDAV HTTP Extensions for Distributed Authoring (RFC 2518) WebDAV HTTP Extensions for Web Distributed Authoring and Versioning (RFC 4918) IETF Standard Specified in RFC 2518 (February 1999) http://tools.ietf.org/html/rfc2518 Refined in RFC 4918 (June 2007) http://tools.ietf.org/html/rfc4918 Extension to HTTP Distributed editing WebDAV ... allows your users to edit web content easily. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 6 / 32

  9. Request methods HTTP WebDAV OPTIONS PROPFIND GET PROPPATCH HEAD MKCOL POST COPY PUT MOVE DELETE LOCK TRACE UNLOCK CONNECT Significant methods Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 7 / 32

  10. Request methods HTTP WebDAV OPTIONS PROPFIND GET PROPPATCH HEAD MKCOL POST COPY PUT MOVE DELETE LOCK TRACE UNLOCK CONNECT Significant methods Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 7 / 32

  11. Request methods HTTP WebDAV OPTIONS PROPFIND GET PROPPATCH HEAD MKCOL POST COPY PUT MOVE DELETE LOCK TRACE UNLOCK CONNECT Significant methods Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 7 / 32

  12. Request headers HTTP WebDAV Accept[-*] Depth Authorization Destination If-[None-]Match If If-[Un]Modified-Since Overwrite User-Agent Timeout ... Significant headers Not all headers are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 8 / 32

  13. Request headers HTTP WebDAV Accept[-*] Depth Authorization Destination If-[None-]Match If If-[Un]Modified-Since Overwrite User-Agent Timeout ... Significant headers Not all headers are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 8 / 32

  14. Request headers HTTP WebDAV Accept[-*] Depth Authorization Destination If-[None-]Match If If-[Un]Modified-Since Overwrite User-Agent Timeout ... Significant headers Not all headers are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 8 / 32

  15. Response headers HTTP WebDAV Accept-Ranges DAV Content-Length Lock-Token Content-Type Timeout ETag Location Retry-After Server WWW-Authenticate ... Significant headers Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 9 / 32

  16. Response headers HTTP WebDAV Accept-Ranges DAV Content-Length Lock-Token Content-Type Timeout ETag Location Retry-After Server WWW-Authenticate ... Significant headers Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 9 / 32

  17. Response headers HTTP WebDAV Accept-Ranges DAV Content-Length Lock-Token Content-Type Timeout ETag Location Retry-After Server WWW-Authenticate ... Significant headers Not all methods are significant for implementing a WebDAV server. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 9 / 32

  18. Request / response bodies HTTP Request body mostly not significant Only PUT method needs body (to be stored) Response body usually content to deliver (unspecified) Error responses may contain arbitrary content Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 10 / 32

  19. Request / response bodies WebDAV Bodies are significant Many methods require XML bodies Request Response PROPFIND PROPFIND PROPPATCH PROPPATCH COPY (optional) LOCK MOVE (optional) Potentially others (multi-status) LOCK Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 10 / 32

  20. Request / response bodies WebDAV Bodies are significant Many methods require XML bodies Request Response PROPFIND PROPFIND PROPPATCH PROPPATCH COPY (optional) LOCK MOVE (optional) Potentially others (multi-status) LOCK Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 10 / 32

  21. Request / response bodies WebDAV Bodies are significant Many methods require XML bodies Request Response PROPFIND PROPFIND PROPPATCH PROPPATCH COPY (optional) LOCK MOVE (optional) Potentially others (multi-status) LOCK Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 10 / 32

  22. Properties Concept introduced by WebDAV Store meta information about content Usually not directly visible to the user Pre-defined: Live properties Client-specific: Dead properties creationdate May contain arbitrary data displayname Must reside in their own namespace get* XML representation favored lockdiscovery resourcetype source supportedlock Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 11 / 32

  23. Properties Concept introduced by WebDAV Store meta information about content Usually not directly visible to the user Pre-defined: Live properties Client-specific: Dead properties creationdate May contain arbitrary data displayname Must reside in their own namespace get* XML representation favored lockdiscovery resourcetype source supportedlock Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 11 / 32

  24. Properties Concept introduced by WebDAV Store meta information about content Usually not directly visible to the user Pre-defined: Live properties Client-specific: Dead properties creationdate May contain arbitrary data displayname Must reside in their own namespace get* XML representation favored lockdiscovery resourcetype source supportedlock Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 11 / 32

  25. Outline 1 HTTP & WebDAV 2 Development challenges RFC problems Client problems Back end flexibility 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 12 / 32

  26. Development challenges Server development in general WebDAV RFCs are a BBOM Unstructured Ambiguous Design fails Misbehaving clients Ignore the specification Different interpretations of RFCs Proprietary BS Figure: Big Ball Of Mud [FY99] Exchangeable back ends Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 13 / 32

  27. Outline - Development challenges 1 HTTP & WebDAV 2 Development challenges RFC problems Client problems Back end flexibility 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 14 / 32

  28. COPY / MOVE methods Errors on COPY “[...] if an error occurs while copying an internal collection, the server MUST NOT copy any resources identified by members of this collection (i.e., the server must skip this subtree) [...]” [YG99] MOVE “[...] is the logical equivalent of a copy (COPY), followed by consistency maintenance processing, followed by a delete of the source,[...]” [YG99] MOVE errors “[...] after detecting the error, the move operation SHOULD try to finish as much of the original move as possible [...]” [YG99] Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 15 / 32

  29. COPY / MOVE methods Errors on COPY “[...] if an error occurs while copying an internal collection, the server MUST NOT copy any resources identified by members of this collection (i.e., the server must skip this subtree) [...]” [YG99] MOVE “[...] is the logical equivalent of a copy (COPY), followed by consistency maintenance processing, followed by a delete of the source,[...]” [YG99] MOVE errors “[...] after detecting the error, the move operation SHOULD try to finish as much of the original move as possible [...]” [YG99] Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 15 / 32

Recommend


More recommend