69
WebDAV The good, the bad and the evil TobiasSchlitt <[email protected]> IPC SE 2009 2009-05-30 Tobias Schlitt (IPC SE 2009) WebDAV 2009-05-30 1 / 32

WebDAV - The good, the bad and the evil

Embed Size (px)

DESCRIPTION

WebDAV is a nice invention, at least from a users point of view. But who ever had a look at the RFC or even needed to implement a server for it, know about the issues in this Big Ball Of Mud. This presentation gives an overview on the HTTP extension WebDAV, on the issues you need to ship around while developing a WebDAV server and the architecture of the eZ Webdav component, which solves these issues succesfully.

Citation preview

Page 1: WebDAV - The good, the bad and the evil

WebDAVThe good, the bad and the evil

TobiasSchlitt <[email protected]>

IPC SE 2009

2009-05-30

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

Page 2: WebDAV - The good, the bad and the evil

About me

Tobias Schlitt <[email protected]>

PHP since 2001

Freelancing consultant

Qualified IT Specialist

Studying CS at TU Dortmund(expect to finish this year)

OSS addicted

PHPeZ ComponentsPHPUnit

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

Page 3: WebDAV - The good, the bad and the evil

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

Page 4: WebDAV - The good, the bad and the evil

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

Page 5: WebDAV - The good, the bad and the evil

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 / responseHeaders / bodyFormats / actions Figure: Tim Berners-Lee [Dan]

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

Page 6: WebDAV - The good, the bad and the evil

WebDAV

WebDAV HTTP Extensions for Distributed Authoring (RFC 2518)

WebDAV HTTP Extensions for Web Distributed Authoring andVersioning (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

Page 7: WebDAV - The good, the bad and the evil

WebDAV

WebDAV HTTP Extensions for Distributed Authoring (RFC 2518)

WebDAV HTTP Extensions for Web Distributed Authoring andVersioning (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

Page 8: WebDAV - The good, the bad and the evil

WebDAV

WebDAV HTTP Extensions for Distributed Authoring (RFC 2518)

WebDAV HTTP Extensions for Web Distributed Authoring andVersioning (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

Page 9: WebDAV - The good, the bad and the evil

Request methods

HTTP

OPTIONS

GET

HEAD

POST

PUT

DELETE

TRACE

CONNECT

WebDAV

PROPFIND

PROPPATCH

MKCOL

COPY

MOVE

LOCK

UNLOCK

Significant methods

Not all methods are significant for implementing a WebDAV server.

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

Page 10: WebDAV - The good, the bad and the evil

Request methods

HTTP

OPTIONS

GET

HEAD

POST

PUT

DELETE

TRACE

CONNECT

WebDAV

PROPFIND

PROPPATCH

MKCOL

COPY

MOVE

LOCK

UNLOCK

Significant methods

Not all methods are significant for implementing a WebDAV server.

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

Page 11: WebDAV - The good, the bad and the evil

Request methods

HTTP

OPTIONS

GET

HEAD

POST

PUT

DELETE

TRACE

CONNECT

WebDAV

PROPFIND

PROPPATCH

MKCOL

COPY

MOVE

LOCK

UNLOCK

Significant methods

Not all methods are significant for implementing a WebDAV server.

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

Page 12: WebDAV - The good, the bad and the evil

Request headers

HTTP

Accept[-*]

Authorization

If-[None-]Match

If-[Un]Modified-Since

User-Agent

...

WebDAV

Depth

Destination

If

Overwrite

Timeout

Significant headers

Not all headers are significant for implementing a WebDAV server.

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

Page 13: WebDAV - The good, the bad and the evil

Request headers

HTTP

Accept[-*]

Authorization

If-[None-]Match

If-[Un]Modified-Since

User-Agent

...

WebDAV

Depth

Destination

If

Overwrite

Timeout

Significant headers

Not all headers are significant for implementing a WebDAV server.

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

Page 14: WebDAV - The good, the bad and the evil

Request headers

HTTP

Accept[-*]

Authorization

If-[None-]Match

If-[Un]Modified-Since

User-Agent

...

WebDAV

Depth

Destination

If

Overwrite

Timeout

Significant headers

Not all headers are significant for implementing a WebDAV server.

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

Page 15: WebDAV - The good, the bad and the evil

Response headers

HTTP

Accept-Ranges

Content-Length

Content-Type

ETag

Location

Retry-After

Server

WWW-Authenticate

...

WebDAV

DAV

Lock-Token

Timeout

Significant headers

Not all methods are significant for implementing a WebDAV server.

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

Page 16: WebDAV - The good, the bad and the evil

Response headers

HTTP

Accept-Ranges

Content-Length

Content-Type

ETag

Location

Retry-After

Server

WWW-Authenticate

...

WebDAV

DAV

Lock-Token

Timeout

Significant headers

Not all methods are significant for implementing a WebDAV server.

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

Page 17: WebDAV - The good, the bad and the evil

Response headers

HTTP

Accept-Ranges

Content-Length

Content-Type

ETag

Location

Retry-After

Server

WWW-Authenticate

...

WebDAV

DAV

Lock-Token

Timeout

Significant headers

Not all methods are significant for implementing a WebDAV server.

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

Page 18: WebDAV - The good, the bad and the evil

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

Page 19: WebDAV - The good, the bad and the evil

Request / response bodies

WebDAV

Bodies are significant

Many methods require XML bodies

Request

PROPFIND

PROPPATCH

COPY (optional)

MOVE (optional)

LOCK

Response

PROPFIND

PROPPATCH

LOCK

Potentially others(multi-status)

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

Page 20: WebDAV - The good, the bad and the evil

Request / response bodies

WebDAV

Bodies are significant

Many methods require XML bodies

Request

PROPFIND

PROPPATCH

COPY (optional)

MOVE (optional)

LOCK

Response

PROPFIND

PROPPATCH

LOCK

Potentially others(multi-status)

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

Page 21: WebDAV - The good, the bad and the evil

Request / response bodies

WebDAV

Bodies are significant

Many methods require XML bodies

Request

PROPFIND

PROPPATCH

COPY (optional)

MOVE (optional)

LOCK

Response

PROPFIND

PROPPATCH

LOCK

Potentially others(multi-status)

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

Page 22: WebDAV - The good, the bad and the evil

Properties

Concept introduced by WebDAV

Store meta information about content

Usually not directly visible to the user

Pre-defined: Live properties

creationdate

displayname

get*

lockdiscovery

resourcetype

source

supportedlock

Client-specific: Dead properties

May contain arbitrary data

Must reside in their own namespace

XML representation favored

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

Page 23: WebDAV - The good, the bad and the evil

Properties

Concept introduced by WebDAV

Store meta information about content

Usually not directly visible to the user

Pre-defined: Live properties

creationdate

displayname

get*

lockdiscovery

resourcetype

source

supportedlock

Client-specific: Dead properties

May contain arbitrary data

Must reside in their own namespace

XML representation favored

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

Page 24: WebDAV - The good, the bad and the evil

Properties

Concept introduced by WebDAV

Store meta information about content

Usually not directly visible to the user

Pre-defined: Live properties

creationdate

displayname

get*

lockdiscovery

resourcetype

source

supportedlock

Client-specific: Dead properties

May contain arbitrary data

Must reside in their own namespace

XML representation favored

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

Page 25: WebDAV - The good, the bad and the evil

Outline

1 HTTP & WebDAV

2 Development challengesRFC problemsClient problemsBack end flexibility

3 eZ Webdav component

4 Q/A

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

Page 26: WebDAV - The good, the bad and the evil

Development challenges

Server development in general

WebDAV RFCs are a BBOM

UnstructuredAmbiguousDesign fails

Misbehaving clients

Ignore the specificationDifferent interpretations of RFCsProprietary BS

Exchangeable back endsFigure: Big Ball Of Mud [FY99]

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

Page 27: WebDAV - The good, the bad and the evil

Outline - Development challenges

1 HTTP & WebDAV

2 Development challengesRFC problemsClient problemsBack end flexibility

3 eZ Webdav component

4 Q/A

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

Page 28: WebDAV - The good, the bad and the evil

COPY / MOVE methods

Errors on COPY

“[...] if an error occurs while copying an internal collection, the serverMUST 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 consistencymaintenance processing, followed by a delete of the source,[...]” [YG99]

MOVE errors

“[...] after detecting the error, the move operation SHOULD try to finishas much of the original move as possible [...]” [YG99]

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

Page 29: WebDAV - The good, the bad and the evil

COPY / MOVE methods

Errors on COPY

“[...] if an error occurs while copying an internal collection, the serverMUST 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 consistencymaintenance processing, followed by a delete of the source,[...]” [YG99]

MOVE errors

“[...] after detecting the error, the move operation SHOULD try to finishas much of the original move as possible [...]” [YG99]

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

Page 30: WebDAV - The good, the bad and the evil

COPY / MOVE methods

Errors on COPY

“[...] if an error occurs while copying an internal collection, the serverMUST 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 consistencymaintenance processing, followed by a delete of the source,[...]” [YG99]

MOVE errors

“[...] after detecting the error, the move operation SHOULD try to finishas much of the original move as possible [...]” [YG99]

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

Page 31: WebDAV - The good, the bad and the evil

The If header

The If header

Makes operations conditional.

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

Page 32: WebDAV - The good, the bad and the evil

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

I f = ” I f ” ” :” ( 1∗No−tag− l i s t | 1∗Tagged− l i s t )No−tag− l i s t = L i s tTagged− l i s t = Resource 1∗ L i s tResource = Coded−URLL i s t = ”(” 1∗ ( [ ” Not ” ] ( State−token | ” [” e n t i t y−tag

” ] ” ) ) ”) ”State−token = Coded−URLCoded−URL = ”<” abso lu t eURI ”>”

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

Page 33: WebDAV - The good, the bad and the evil

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 en : a−wr i t e−l ock−token> [ ” I am an ETag ” ] ) ( [ ” I amanothe r ETag ” ] )

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

Page 34: WebDAV - The good, the bad and the evil

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

<ht tp : // example . com/ r e sou r c e1 > (< l o c k t o k en : a−wr i t e−l ock−token> [W/”A weak ETag ” ] ) (Not [ ” s t r o ng ETag ” ] )

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

Page 35: WebDAV - The good, the bad and the evil

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

Page 36: WebDAV - The good, the bad and the evil

Locking

2 different types of locks

ExclusiveShared

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 resourcesMust vanish when the lock is releasedA collection can be created on them

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

Page 37: WebDAV - The good, the bad and the evil

Locking

2 different types of locks

ExclusiveShared

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 resourcesMust vanish when the lock is releasedA collection can be created on them

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

Page 38: WebDAV - The good, the bad and the evil

Locking

2 different types of locks

ExclusiveShared

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 resourcesMust vanish when the lock is releasedA collection can be created on them

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

Page 39: WebDAV - The good, the bad and the evil

Locking

2 different types of locks

ExclusiveShared

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 resourcesMust vanish when the lock is releasedA collection can be created on them

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

Page 40: WebDAV - The good, the bad and the evil

Locking

2 different types of locks

ExclusiveShared

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 resourcesMust vanish when the lock is releasedA collection can be created on them

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

Page 41: WebDAV - The good, the bad and the evil

Outline - Development challenges

1 HTTP & WebDAV

2 Development challengesRFC problemsClient problemsBack end flexibility

3 eZ Webdav component

4 Q/A

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

Page 42: WebDAV - The good, the bad and the evil

Konqueror / Nautilus

Konqueror (KDE)

Does not decode URLs properlyRequires Apache like error messages for 404

Nautilus (Gnome)

Cannot cope with charset="..." info in MIME types

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

Page 43: WebDAV - The good, the bad and the evil

Konqueror / Nautilus

Konqueror (KDE)

Does not decode URLs properlyRequires Apache like error messages for 404

Nautilus (Gnome)

Cannot cope with charset="..." info in MIME types

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

Page 44: WebDAV - The good, the bad and the evil

Windows / InternetExplorer

At least 3 different WebDAV user agents in Windows

Loaded depending on how you initialize connectionTransparently 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

Page 45: WebDAV - The good, the bad and the evil

Windows / InternetExplorer

At least 3 different WebDAV user agents in Windows

Loaded depending on how you initialize connectionTransparently 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

Page 46: WebDAV - The good, the bad and the evil

Windows / InternetExplorer

At least 3 different WebDAV user agents in Windows

Loaded depending on how you initialize connectionTransparently 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

Page 47: WebDAV - The good, the bad and the evil

Windows / InternetExplorer II

Cannot cope with non-significant white spacesin 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

Page 48: WebDAV - The good, the bad and the evil

Windows / InternetExplorer II

Cannot cope with non-significant white spacesin 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

Page 49: WebDAV - The good, the bad and the evil

Windows / InternetExplorer II

Cannot cope with non-significant white spacesin 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

Page 50: WebDAV - The good, the bad and the evil

Windows / InternetExplorer II

Cannot cope with non-significant white spacesin 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

Page 51: WebDAV - The good, the bad and the evil

Outline - Development challenges

1 HTTP & WebDAV

2 Development challengesRFC problemsClient problemsBack end flexibility

3 eZ Webdav component

4 Q/A

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

Page 52: WebDAV - The good, the bad and the evil

Back end flexibility

Exchangeable back end

File systemMemory (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

Page 53: WebDAV - The good, the bad and the evil

Back end flexibility

Exchangeable back end

File systemMemory (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

Page 54: WebDAV - The good, the bad and the evil

Back end flexibility

Exchangeable back end

File systemMemory (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

Page 55: WebDAV - The good, the bad and the evil

Back end flexibility

Exchangeable back end

File systemMemory (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

Page 56: WebDAV - The good, the bad and the evil

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

Page 57: WebDAV - The good, the bad and the evil

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

Page 58: WebDAV - The good, the bad and the evil

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

Page 59: WebDAV - The good, the bad and the evil

eZ Webdav architecture

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

Page 60: WebDAV - The good, the bad and the evil

Setup a simple WebDAV server

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

dirname ( F I LE ) . ’ / backend ’) ;

$ s e r v e r−>hand l e ( $backend ) ;

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

Page 61: WebDAV - The good, the bad and the evil

WebDAV server with locking

r e q u i r e o n c e ’ cu s t om lo ck au th . 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−>auth = 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 he r edirname ( F I LE ) . ’ / tokens . php ’

) ;

$ s e r v e r−>p l u g i nR e g i s t r y−>r e g i s t e r P l u g i n (new ezcWebdavLockP lug inCon f i gu ra t i on ( )

) ;

$backend = new ezcWebdavFi leBackend (// Your WebDAV d i r e c t o r y he r edirname ( F I LE ) . ’ / backend ’

) ;

$ s e r v e r−>hand l e ( $backend ) ;

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

Page 62: WebDAV - The good, the bad and the evil

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

Page 63: WebDAV - The good, the bad and the evil

Q/A

Thank you for listening!

Are there any questions left?

Did the session satisfy your needs?

Contact me: Tobias Schlitt <[email protected]>

Enjoy the rest of the conference!

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

Page 64: WebDAV - The good, the bad and the evil

Q/A

Thank you for listening!

Are there any questions left?

Did the session satisfy your needs?

Contact me: Tobias Schlitt <[email protected]>

Enjoy the rest of the conference!

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

Page 65: WebDAV - The good, the bad and the evil

Q/A

Thank you for listening!

Are there any questions left?

Did the session satisfy your needs?

Contact me: Tobias Schlitt <[email protected]>

Enjoy the rest of the conference!

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

Page 66: WebDAV - The good, the bad and the evil

Q/A

Thank you for listening!

Are there any questions left?

Did the session satisfy your needs?

Contact me: Tobias Schlitt <[email protected]>

Enjoy the rest of the conference!

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

Page 67: WebDAV - The good, the bad and the evil

Q/A

Thank you for listening!

Are there any questions left?

Did the session satisfy your needs?

Contact me: Tobias Schlitt <[email protected]>

Enjoy the rest of the conference!

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

Page 68: WebDAV - The good, the bad and the evil

Outline

5 Attribution

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

Page 69: WebDAV - The good, the bad and the evil

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, Httpextensions for distributed authoring – webdav, IETF, Network WorkingGroup, 1999.

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