SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
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
    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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
The If header
The If header
Makes operations conditional.




  Tobias Schlitt (IPC SE 2009)   WebDAV   2009-05-30   16 / 32
The If header
The If header
Makes operations conditional.
Apply operation only if ...
      ... all conditions are met
      ... none of the conditions is met
If header EBNF
If                   =   ” I f ” ” : ” ( 1∗No−tag− l i s t | 1∗ Tagged− l i s t )
No−tag− l i s t =        List
Tagged− l i s t =        R e s o u r c e 1∗ L i s t
Resource             =   Coded−URL
List                 =   ” ( ” 1 ∗ ( [ ” Not ” ] ( S t a t e −t o k e n | ” [ ” e n t i t y −t a g
        ” ] ” ) ) ”) ”
S t a t e −t o k e n =   Coded−URL
Coded−URL            =   ”<” a b s o l u t e U R I ”>”



  Tobias Schlitt (IPC SE 2009)                   WebDAV                                 2009-05-30   16 / 32
The If header
The If header
Makes operations conditional.
Can contain
      lock tokens
      entity tags

No-tag list If header

I f : (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n > [ ” I am an ETag ” ] ) ( [ ” I am
       a n o t h e r ETag ” ] )




  Tobias Schlitt (IPC SE 2009)              WebDAV                              2009-05-30   16 / 32
The If header
The If header
Makes operations conditional.
Conditions can apply to
       single resources
       sets of resources
       all affected resources
Negated tagged list If header

<h t t p : / / e x a m p l e . com/ r e s o u r c e 1 > (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n
      > [W/”A weak ETag ” ] ) ( Not [ ” s t r o n g ETag ” ] )




   Tobias Schlitt (IPC SE 2009)                     WebDAV                                  2009-05-30     16 / 32
The If header
The If header
Makes operations conditional.

      Required own parser implementation
      Parser is about 150 LOC




  Tobias Schlitt (IPC SE 2009)   WebDAV    2009-05-30   16 / 32
Locking


     2 different types of locks
            Exclusive
            Shared
     Lock conditions must be validated before anything else
     Timeout refresh on every lock use (successful or not)
     (Fixed in RCF 4918)

     Not specified how to associate principles with lock tokens
     Lock-Null-Resources
     (Partly fixed in RFC 4918)
            Do not behave like real resources
            Must vanish when the lock is released
            A collection can be created on them




 Tobias Schlitt (IPC SE 2009)         WebDAV                  2009-05-30   17 / 32
Locking


     2 different types of locks
            Exclusive
            Shared
     Lock conditions must be validated before anything else
     Timeout refresh on every lock use (successful or not)
     (Fixed in RCF 4918)

     Not specified how to associate principles with lock tokens
     Lock-Null-Resources
     (Partly fixed in RFC 4918)
            Do not behave like real resources
            Must vanish when the lock is released
            A collection can be created on them




 Tobias Schlitt (IPC SE 2009)         WebDAV                  2009-05-30   17 / 32
Locking


     2 different types of locks
            Exclusive
            Shared
     Lock conditions must be validated before anything else
     Timeout refresh on every lock use (successful or not)
     (Fixed in RCF 4918)

     Not specified how to associate principles with lock tokens
     Lock-Null-Resources
     (Partly fixed in RFC 4918)
            Do not behave like real resources
            Must vanish when the lock is released
            A collection can be created on them




 Tobias Schlitt (IPC SE 2009)         WebDAV                  2009-05-30   17 / 32
Locking


     2 different types of locks
            Exclusive
            Shared
     Lock conditions must be validated before anything else
     Timeout refresh on every lock use (successful or not)
     (Fixed in RCF 4918)

     Not specified how to associate principles with lock tokens
     Lock-Null-Resources
     (Partly fixed in RFC 4918)
            Do not behave like real resources
            Must vanish when the lock is released
            A collection can be created on them




 Tobias Schlitt (IPC SE 2009)         WebDAV                  2009-05-30   17 / 32
Locking


     2 different types of locks
            Exclusive
            Shared
     Lock conditions must be validated before anything else
     Timeout refresh on every lock use (successful or not)
     (Fixed in RCF 4918)

     Not specified how to associate principles with lock tokens
     Lock-Null-Resources
     (Partly fixed in RFC 4918)
            Do not behave like real resources
            Must vanish when the lock is released
            A collection can be created on them




 Tobias Schlitt (IPC SE 2009)         WebDAV                  2009-05-30   17 / 32
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   18 / 32
Konqueror / Nautilus




     Konqueror (KDE)
            Does not decode URLs properly
            Requires Apache like error messages for 404
     Nautilus (Gnome)
            Cannot cope with charset=quot;...quot; info in MIME types




 Tobias Schlitt (IPC SE 2009)         WebDAV                    2009-05-30   19 / 32
Konqueror / Nautilus




     Konqueror (KDE)
            Does not decode URLs properly
            Requires Apache like error messages for 404
     Nautilus (Gnome)
            Cannot cope with charset=quot;...quot; info in MIME types




 Tobias Schlitt (IPC SE 2009)         WebDAV                    2009-05-30   19 / 32
Windows / InternetExplorer




     At least 3 different WebDAV user agents in Windows
            Loaded depending on how you initialize connection
            Transparently switched occasionally
     Requires custom header MS-Author-Via on every response
     Requires custom namespaces set on live properties
            Requires special namespace shortcut to be used (sic!)
            Requires different shortcuts for DAV: namespace




 Tobias Schlitt (IPC SE 2009)          WebDAV                       2009-05-30   20 / 32
Windows / InternetExplorer




     At least 3 different WebDAV user agents in Windows
            Loaded depending on how you initialize connection
            Transparently switched occasionally
     Requires custom header MS-Author-Via on every response
     Requires custom namespaces set on live properties
            Requires special namespace shortcut to be used (sic!)
            Requires different shortcuts for DAV: namespace




 Tobias Schlitt (IPC SE 2009)          WebDAV                       2009-05-30   20 / 32
Windows / InternetExplorer




     At least 3 different WebDAV user agents in Windows
            Loaded depending on how you initialize connection
            Transparently switched occasionally
     Requires custom header MS-Author-Via on every response
     Requires custom namespaces set on live properties
            Requires special namespace shortcut to be used (sic!)
            Requires different shortcuts for DAV: namespace




 Tobias Schlitt (IPC SE 2009)          WebDAV                       2009-05-30   20 / 32
Windows / InternetExplorer II




    Cannot cope with non-significant white spaces
    in XML bodies
    Requires newline at the end of every XML body
    Occasionally sends invalid PROPFIND requests




 Tobias Schlitt (IPC SE 2009)    WebDAV             2009-05-30   21 / 32
Windows / InternetExplorer II




    Cannot cope with non-significant white spaces
    in XML bodies
    Requires newline at the end of every XML body
    Occasionally sends invalid PROPFIND requests




 Tobias Schlitt (IPC SE 2009)    WebDAV             2009-05-30   21 / 32
Windows / InternetExplorer II




    Cannot cope with non-significant white spaces
    in XML bodies
    Requires newline at the end of every XML body
    Occasionally sends invalid PROPFIND requests




 Tobias Schlitt (IPC SE 2009)    WebDAV             2009-05-30   21 / 32
Windows / InternetExplorer II




    Cannot cope with non-significant white spaces
    in XML bodies
    Requires newline at the end of every XML body
    Occasionally sends invalid PROPFIND requests



                                                    Figure: WTF? [Nad99]




 Tobias Schlitt (IPC SE 2009)    WebDAV                   2009-05-30       21 / 32
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   22 / 32
Back end flexibility




      Exchangeable back end
             File system
             Memory (testing)
             SQL Database?
             Subversion?
      Independent of client issues
      Protocol enhancements back end independent
      Easy implementation




  Tobias Schlitt (IPC SE 2009)       WebDAV        2009-05-30   23 / 32
Back end flexibility




      Exchangeable back end
             File system
             Memory (testing)
             SQL Database?
             Subversion?
      Independent of client issues
      Protocol enhancements back end independent
      Easy implementation




  Tobias Schlitt (IPC SE 2009)       WebDAV        2009-05-30   23 / 32
Back end flexibility




      Exchangeable back end
             File system
             Memory (testing)
             SQL Database?
             Subversion?
      Independent of client issues
      Protocol enhancements back end independent
      Easy implementation




  Tobias Schlitt (IPC SE 2009)       WebDAV        2009-05-30   23 / 32
Back end flexibility




      Exchangeable back end
             File system
             Memory (testing)
             SQL Database?
             Subversion?
      Independent of client issues
      Protocol enhancements back end independent
      Easy implementation




  Tobias Schlitt (IPC SE 2009)       WebDAV        2009-05-30   23 / 32
Outline




1 HTTP & WebDAV


2 Development challenges


3 eZ Webdav component


4 Q/A




  Tobias Schlitt (IPC SE 2009)   WebDAV   2009-05-30   24 / 32
eZ Components




     General purpose component library for PHP 5.1+
     Open source and GPL friendly (New BSD license)
     Vital open source community
     Highly tested
     Extensive docs
     Professional support available




 Tobias Schlitt (IPC SE 2009)         WebDAV          2009-05-30   25 / 32
The Webdav component




     General purpose WebDAV server
     Easy integration and customization
     Work around client issues




 Tobias Schlitt (IPC SE 2009)    WebDAV   2009-05-30   26 / 32
eZ Webdav architecture




 Tobias Schlitt (IPC SE 2009)   WebDAV   2009-05-30   27 / 32
Setup a simple WebDAV server




$ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;
$ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
      dirname (      FILE        ) . ’ / backend ’
);

$ s e r v e r −>h a n d l e ( $ b a c k e n d ) ;




  Tobias Schlitt (IPC SE 2009)                      WebDAV        2009-05-30   28 / 32
WebDAV server with locking

require once             ’ c u s t o m l o c k a u t h . php ’ ;

$ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;

$ s e r v e r −>a u t h = new myCustomLockAuth (
        // Some c o n f i g u r a t i o n d i r e c t o r y h e r e
        dirname (        FILE       ) . ’ / t o k e n s . php ’
);

$ s e r v e r −>p l u g i n R e g i s t r y −>r e g i s t e r P l u g i n (
        new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )
);

$ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d (
        // Your WebDAV d i r e c t o r y h e r e
        dirname (     FILE         ) . ’ / backend ’
);

$ s e r v e r −>h a n d l e ( $ b a c k e n d ) ;


  Tobias Schlitt (IPC SE 2009)                        WebDAV                      2009-05-30   29 / 32
Outline




1 HTTP & WebDAV


2 Development challenges


3 eZ Webdav component


4 Q/A




  Tobias Schlitt (IPC SE 2009)   WebDAV   2009-05-30   30 / 32
Q/A

                                Thank you for listening!

     Are there any questions left?
     Did the session satisfy your needs?
     Contact me: Tobias Schlitt <toby@php.net>
     Enjoy the rest of the conference!




 Tobias Schlitt (IPC SE 2009)            WebDAV            2009-05-30   31 / 32
Q/A

                                Thank you for listening!

     Are there any questions left?
     Did the session satisfy your needs?
     Contact me: Tobias Schlitt <toby@php.net>
     Enjoy the rest of the conference!




 Tobias Schlitt (IPC SE 2009)            WebDAV            2009-05-30   31 / 32
Q/A

                                Thank you for listening!

     Are there any questions left?
     Did the session satisfy your needs?
     Contact me: Tobias Schlitt <toby@php.net>
     Enjoy the rest of the conference!




 Tobias Schlitt (IPC SE 2009)            WebDAV            2009-05-30   31 / 32
Q/A

                                Thank you for listening!

     Are there any questions left?
     Did the session satisfy your needs?
     Contact me: Tobias Schlitt <toby@php.net>
     Enjoy the rest of the conference!




 Tobias Schlitt (IPC SE 2009)            WebDAV            2009-05-30   31 / 32
Q/A

                                Thank you for listening!

     Are there any questions left?
     Did the session satisfy your needs?
     Contact me: Tobias Schlitt <toby@php.net>
     Enjoy the rest of the conference!




 Tobias Schlitt (IPC SE 2009)            WebDAV            2009-05-30   31 / 32
Outline




5 Attribution




  Tobias Schlitt (IPC SE 2009)   WebDAV   2009-05-30   32 / 32
Enrique Dans, Tim berners-lee,
   http://en.wikipedia.org/wiki/File:
   Tim_Berners-Lee_April_2009.jpg.
   Brian Foote and Joseph Yoder, Big ball of mud,
   http://www.laputan.org/mud/mud.html#BigBallOfMud, 1999.
   Andreas Nadler, Ich will andere geschenke ...,
   http://www.flickr.com/photos/tobi_digital/3145179282/,
   1999.
   A. Faizi S. Carter D. Jensen Y. Goland, E. Whitehead, Http
   extensions for distributed authoring – webdav, IETF, Network Working
   Group, 1999.




Tobias Schlitt (IPC SE 2009)    WebDAV                    2009-05-30   32 / 32

Más contenido relacionado

La actualidad más candente

Android secure offline storage - CC Mobile
Android secure offline storage - CC MobileAndroid secure offline storage - CC Mobile
Android secure offline storage - CC MobileSteve De Zitter
 
Neo4j GraphConnect summary
Neo4j GraphConnect summaryNeo4j GraphConnect summary
Neo4j GraphConnect summaryMáté Thurzó
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC
 
Hey My Web App is Slow Where is the Problem
Hey My Web App is Slow Where is the ProblemHey My Web App is Slow Where is the Problem
Hey My Web App is Slow Where is the ProblemColdFusionConference
 
Development environment agile way
Development environment agile wayDevelopment environment agile way
Development environment agile wayIzzet Mustafaiev
 
WordPress development checklist
WordPress development checklistWordPress development checklist
WordPress development checklistBinh Quan Duc
 
MySQL GUI Administration
MySQL GUI AdministrationMySQL GUI Administration
MySQL GUI AdministrationJaime Crespo
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET CoreMiroslav Popovic
 
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...Codemotion
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGreg Schechter
 
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...Cyber Security Alliance
 
Seravo.com: WordPress Security 101
Seravo.com: WordPress Security 101Seravo.com: WordPress Security 101
Seravo.com: WordPress Security 101Seravo
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test DriveKyle Lin
 
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSEWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSRob Tweed
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentIrfan Maulana
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyoneVladimír Smitka
 
CubeJS: eBay’s Node.js Adoption Journey
CubeJS: eBay’s Node.js Adoption JourneyCubeJS: eBay’s Node.js Adoption Journey
CubeJS: eBay’s Node.js Adoption JourneyPatrick Steele-Idem
 

La actualidad más candente (20)

Android secure offline storage - CC Mobile
Android secure offline storage - CC MobileAndroid secure offline storage - CC Mobile
Android secure offline storage - CC Mobile
 
Neo4j GraphConnect summary
Neo4j GraphConnect summaryNeo4j GraphConnect summary
Neo4j GraphConnect summary
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
 
Hey My Web App is Slow Where is the Problem
Hey My Web App is Slow Where is the ProblemHey My Web App is Slow Where is the Problem
Hey My Web App is Slow Where is the Problem
 
Development environment agile way
Development environment agile wayDevelopment environment agile way
Development environment agile way
 
WordPress development checklist
WordPress development checklistWordPress development checklist
WordPress development checklist
 
MySQL GUI Administration
MySQL GUI AdministrationMySQL GUI Administration
MySQL GUI Administration
 
Introduction to ASP.NET Core
Introduction to ASP.NET CoreIntroduction to ASP.NET Core
Introduction to ASP.NET Core
 
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat Videos
 
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...
ASFWS 2012 - Node.js Security – Old vulnerabilities in new dresses par Sven V...
 
Seravo.com: WordPress Security 101
Seravo.com: WordPress Security 101Seravo.com: WordPress Security 101
Seravo.com: WordPress Security 101
 
Nodejs
NodejsNodejs
Nodejs
 
B wapp – bee bug – installation
B wapp – bee bug – installationB wapp – bee bug – installation
B wapp – bee bug – installation
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test Drive
 
Django packages list
Django packages listDjango packages list
Django packages list
 
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSEWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyone
 
CubeJS: eBay’s Node.js Adoption Journey
CubeJS: eBay’s Node.js Adoption JourneyCubeJS: eBay’s Node.js Adoption Journey
CubeJS: eBay’s Node.js Adoption Journey
 

Similar a WebDAV - The good, the bad and the evil

Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyC2B2 Consulting
 
WebSocket Server - Jul 2010
WebSocket Server - Jul 2010WebSocket Server - Jul 2010
WebSocket Server - Jul 2010takanao ENODH
 
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksPowering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksHortonworks
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - English2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - EnglishAlexandre Gouaillard
 
Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Peter Lubbers
 
How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?Zend by Rogue Wave Software
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerCodemotion
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014Victor Pascual Ávila
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PROIDEA
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Edward Burns
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 

Similar a WebDAV - The good, the bad and the evil (20)

Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and Grizzly
 
WebSocket Server - Jul 2010
WebSocket Server - Jul 2010WebSocket Server - Jul 2010
WebSocket Server - Jul 2010
 
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksPowering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
 
2015 Q4 webrtc standards update
2015 Q4 webrtc standards update2015 Q4 webrtc standards update
2015 Q4 webrtc standards update
 
Ws
WsWs
Ws
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - English2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - English
 
Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)
 
How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?How do I securely deploy Internet websites in PHP on my IBMi?
How do I securely deploy Internet websites in PHP on my IBMi?
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet Container
 
DevCon5 (July 2014) - Intro to WebRTC
DevCon5 (July 2014) - Intro to WebRTCDevCon5 (July 2014) - Intro to WebRTC
DevCon5 (July 2014) - Intro to WebRTC
 
WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
Kamailio World 2013 - SIP and MSRP over WebSocket
Kamailio World 2013 - SIP and MSRP over WebSocketKamailio World 2013 - SIP and MSRP over WebSocket
Kamailio World 2013 - SIP and MSRP over WebSocket
 
DevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDKDevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDK
 
FOSDEM 2013 - SIP and MSRP over WebSocket in Kamailio
FOSDEM 2013 - SIP and MSRP over WebSocket in KamailioFOSDEM 2013 - SIP and MSRP over WebSocket in Kamailio
FOSDEM 2013 - SIP and MSRP over WebSocket in Kamailio
 

Más de Tobias Schlitt

Más de Tobias Schlitt (8)

HTML to ODT to XML to PDF to …
HTML to ODT to XML to PDF to …HTML to ODT to XML to PDF to …
HTML to ODT to XML to PDF to …
 
Xdebug
XdebugXdebug
Xdebug
 
Unit-Tests
Unit-TestsUnit-Tests
Unit-Tests
 
Validating XML - Avoiding the pain
Validating XML - Avoiding the painValidating XML - Avoiding the pain
Validating XML - Avoiding the pain
 
XPath - A practical guide
XPath - A practical guideXPath - A practical guide
XPath - A practical guide
 
Professional XML with PHP
Professional XML with PHPProfessional XML with PHP
Professional XML with PHP
 
Xdebug
XdebugXdebug
Xdebug
 
XML and XPath with PHP
XML and XPath with PHPXML and XPath with PHP
XML and XPath with PHP
 

Último

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 

Último (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 

WebDAV - The good, the bad and the evil

  • 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
  • 30. 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
  • 31. The If header The If header Makes operations conditional. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 16 / 32
  • 32. The If header The If header Makes operations conditional. Apply operation only if ... ... all conditions are met ... none of the conditions is met If header EBNF If = ” I f ” ” : ” ( 1∗No−tag− l i s t | 1∗ Tagged− l i s t ) No−tag− l i s t = List Tagged− l i s t = R e s o u r c e 1∗ L i s t Resource = Coded−URL List = ” ( ” 1 ∗ ( [ ” Not ” ] ( S t a t e −t o k e n | ” [ ” e n t i t y −t a g ” ] ” ) ) ”) ” S t a t e −t o k e n = Coded−URL Coded−URL = ”<” a b s o l u t e U R I ”>” Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 16 / 32
  • 33. The If header The If header Makes operations conditional. Can contain lock tokens entity tags No-tag list If header I f : (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n > [ ” I am an ETag ” ] ) ( [ ” I am a n o t h e r ETag ” ] ) Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 16 / 32
  • 34. The If header The If header Makes operations conditional. Conditions can apply to single resources sets of resources all affected resources Negated tagged list If header <h t t p : / / e x a m p l e . com/ r e s o u r c e 1 > (< l o c k t o k e n : a−w r i t e −l o c k −t o k e n > [W/”A weak ETag ” ] ) ( Not [ ” s t r o n g ETag ” ] ) Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 16 / 32
  • 35. The If header The If header Makes operations conditional. Required own parser implementation Parser is about 150 LOC Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 16 / 32
  • 36. Locking 2 different types of locks Exclusive Shared Lock conditions must be validated before anything else Timeout refresh on every lock use (successful or not) (Fixed in RCF 4918) Not specified how to associate principles with lock tokens Lock-Null-Resources (Partly fixed in RFC 4918) Do not behave like real resources Must vanish when the lock is released A collection can be created on them Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 17 / 32
  • 37. Locking 2 different types of locks Exclusive Shared Lock conditions must be validated before anything else Timeout refresh on every lock use (successful or not) (Fixed in RCF 4918) Not specified how to associate principles with lock tokens Lock-Null-Resources (Partly fixed in RFC 4918) Do not behave like real resources Must vanish when the lock is released A collection can be created on them Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 17 / 32
  • 38. Locking 2 different types of locks Exclusive Shared Lock conditions must be validated before anything else Timeout refresh on every lock use (successful or not) (Fixed in RCF 4918) Not specified how to associate principles with lock tokens Lock-Null-Resources (Partly fixed in RFC 4918) Do not behave like real resources Must vanish when the lock is released A collection can be created on them Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 17 / 32
  • 39. Locking 2 different types of locks Exclusive Shared Lock conditions must be validated before anything else Timeout refresh on every lock use (successful or not) (Fixed in RCF 4918) Not specified how to associate principles with lock tokens Lock-Null-Resources (Partly fixed in RFC 4918) Do not behave like real resources Must vanish when the lock is released A collection can be created on them Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 17 / 32
  • 40. Locking 2 different types of locks Exclusive Shared Lock conditions must be validated before anything else Timeout refresh on every lock use (successful or not) (Fixed in RCF 4918) Not specified how to associate principles with lock tokens Lock-Null-Resources (Partly fixed in RFC 4918) Do not behave like real resources Must vanish when the lock is released A collection can be created on them Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 17 / 32
  • 41. 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 18 / 32
  • 42. Konqueror / Nautilus Konqueror (KDE) Does not decode URLs properly Requires Apache like error messages for 404 Nautilus (Gnome) Cannot cope with charset=quot;...quot; info in MIME types Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 19 / 32
  • 43. Konqueror / Nautilus Konqueror (KDE) Does not decode URLs properly Requires Apache like error messages for 404 Nautilus (Gnome) Cannot cope with charset=quot;...quot; info in MIME types Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 19 / 32
  • 44. Windows / InternetExplorer At least 3 different WebDAV user agents in Windows Loaded depending on how you initialize connection Transparently switched occasionally Requires custom header MS-Author-Via on every response Requires custom namespaces set on live properties Requires special namespace shortcut to be used (sic!) Requires different shortcuts for DAV: namespace Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 20 / 32
  • 45. Windows / InternetExplorer At least 3 different WebDAV user agents in Windows Loaded depending on how you initialize connection Transparently switched occasionally Requires custom header MS-Author-Via on every response Requires custom namespaces set on live properties Requires special namespace shortcut to be used (sic!) Requires different shortcuts for DAV: namespace Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 20 / 32
  • 46. Windows / InternetExplorer At least 3 different WebDAV user agents in Windows Loaded depending on how you initialize connection Transparently switched occasionally Requires custom header MS-Author-Via on every response Requires custom namespaces set on live properties Requires special namespace shortcut to be used (sic!) Requires different shortcuts for DAV: namespace Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 20 / 32
  • 47. Windows / InternetExplorer II Cannot cope with non-significant white spaces in XML bodies Requires newline at the end of every XML body Occasionally sends invalid PROPFIND requests Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 21 / 32
  • 48. Windows / InternetExplorer II Cannot cope with non-significant white spaces in XML bodies Requires newline at the end of every XML body Occasionally sends invalid PROPFIND requests Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 21 / 32
  • 49. Windows / InternetExplorer II Cannot cope with non-significant white spaces in XML bodies Requires newline at the end of every XML body Occasionally sends invalid PROPFIND requests Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 21 / 32
  • 50. Windows / InternetExplorer II Cannot cope with non-significant white spaces in XML bodies Requires newline at the end of every XML body Occasionally sends invalid PROPFIND requests Figure: WTF? [Nad99] Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 21 / 32
  • 51. 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 22 / 32
  • 52. Back end flexibility Exchangeable back end File system Memory (testing) SQL Database? Subversion? Independent of client issues Protocol enhancements back end independent Easy implementation Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 23 / 32
  • 53. Back end flexibility Exchangeable back end File system Memory (testing) SQL Database? Subversion? Independent of client issues Protocol enhancements back end independent Easy implementation Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 23 / 32
  • 54. Back end flexibility Exchangeable back end File system Memory (testing) SQL Database? Subversion? Independent of client issues Protocol enhancements back end independent Easy implementation Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 23 / 32
  • 55. Back end flexibility Exchangeable back end File system Memory (testing) SQL Database? Subversion? Independent of client issues Protocol enhancements back end independent Easy implementation Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 23 / 32
  • 56. Outline 1 HTTP & WebDAV 2 Development challenges 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 24 / 32
  • 57. eZ Components General purpose component library for PHP 5.1+ Open source and GPL friendly (New BSD license) Vital open source community Highly tested Extensive docs Professional support available Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 25 / 32
  • 58. The Webdav component General purpose WebDAV server Easy integration and customization Work around client issues Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 26 / 32
  • 59. eZ Webdav architecture Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 27 / 32
  • 60. Setup a simple WebDAV server $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ; $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d ( dirname ( FILE ) . ’ / backend ’ ); $ s e r v e r −>h a n d l e ( $ b a c k e n d ) ; Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 28 / 32
  • 61. WebDAV server with locking require once ’ c u s t o m l o c k a u t h . php ’ ; $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ; $ s e r v e r −>a u t h = new myCustomLockAuth ( // Some c o n f i g u r a t i o n d i r e c t o r y h e r e dirname ( FILE ) . ’ / t o k e n s . php ’ ); $ s e r v e r −>p l u g i n R e g i s t r y −>r e g i s t e r P l u g i n ( new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( ) ); $ b a c k e n d = new e z c W e b d a v F i l e B a c k e n d ( // Your WebDAV d i r e c t o r y h e r e dirname ( FILE ) . ’ / backend ’ ); $ s e r v e r −>h a n d l e ( $ b a c k e n d ) ; Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 29 / 32
  • 62. Outline 1 HTTP & WebDAV 2 Development challenges 3 eZ Webdav component 4 Q/A Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 30 / 32
  • 63. Q/A Thank you for listening! Are there any questions left? Did the session satisfy your needs? Contact me: Tobias Schlitt <toby@php.net> Enjoy the rest of the conference! Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 31 / 32
  • 64. Q/A Thank you for listening! Are there any questions left? Did the session satisfy your needs? Contact me: Tobias Schlitt <toby@php.net> Enjoy the rest of the conference! Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 31 / 32
  • 65. Q/A Thank you for listening! Are there any questions left? Did the session satisfy your needs? Contact me: Tobias Schlitt <toby@php.net> Enjoy the rest of the conference! Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 31 / 32
  • 66. Q/A Thank you for listening! Are there any questions left? Did the session satisfy your needs? Contact me: Tobias Schlitt <toby@php.net> Enjoy the rest of the conference! Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 31 / 32
  • 67. Q/A Thank you for listening! Are there any questions left? Did the session satisfy your needs? Contact me: Tobias Schlitt <toby@php.net> Enjoy the rest of the conference! Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 31 / 32
  • 68. Outline 5 Attribution Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 32 / 32
  • 69. Enrique Dans, Tim berners-lee, http://en.wikipedia.org/wiki/File: Tim_Berners-Lee_April_2009.jpg. Brian Foote and Joseph Yoder, Big ball of mud, http://www.laputan.org/mud/mud.html#BigBallOfMud, 1999. Andreas Nadler, Ich will andere geschenke ..., http://www.flickr.com/photos/tobi_digital/3145179282/, 1999. A. Faizi S. Carter D. Jensen Y. Goland, E. Whitehead, Http extensions for distributed authoring – webdav, IETF, Network Working Group, 1999. Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 32 / 32