Network Working Group                                         J. Reschke
Internet-Draft                                                greenbytes
Expires: April 13, 2006                                 October 10, 2005


   Mounting WebDAV (Web Distributed Authoring and Versioning) servers
                     draft-reschke-webdav-mount-02

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on April 13, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   In current Web browsers, there is no uniform way to specify that a
   user clicking on a link will be presented with an editable view of a
   WebDAV server.  For example, it is frequently desirable to be able to
   click on a link, and have this link open a window that can handle
   drag and drop interaction with the resources of a WebDAV server.

   This document specifies a mechanism and a document format that
   enables Web Distributed Authoring and Versioning (WebDAV) servers to
   send "mounting" information to a WebDAV client.  The protocol is



Reschke                  Expires April 13, 2006                 [Page 1]


Internet-Draft           Mounting WebDAV servers            October 2005


   designed to work on any platform and with any combination of browser
   and WebDAV client, relying solely on the well-understood dispatch of
   documents through their MIME type.

Editorial Note (To be removed by RFC Editor before publication)

   Please send comments to the Distributed Authoring and Versioning
   (WebDAV) working group at <mailto:w3c-dist-auth@w3.org>, which may be
   joined by sending a message with subject "subscribe" to
   <mailto:w3c-dist-auth-request@w3.org>.  Discussions of the WEBDAV
   working group are archived at
   <http://lists.w3.org/Archives/Public/w3c-dist-auth/>.

   Note that although discussion takes place on the WebDAV working
   group's mailing list, this is not a working group document.

   XML versions, latest edits and the issues list for this document are
   available from
   <http://greenbytes.de/tech/webdav/#draft-reschke-webdav-mount>.
































Reschke                  Expires April 13, 2006                 [Page 2]


Internet-Draft           Mounting WebDAV servers            October 2005


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   3.  Format . . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.1   dm:mount . . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.2   dm:url . . . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.3   dm:open  . . . . . . . . . . . . . . . . . . . . . . . . .  5
     3.4   dm:username  . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  Example  . . . . . . . . . . . . . . . . . . . . . . . . . . .  6
   5.  Internationalization Considerations  . . . . . . . . . . . . .  6
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  6
     6.1   MIME type registration . . . . . . . . . . . . . . . . . .  6
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . .  8
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  8
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  8
     9.1   Normative References . . . . . . . . . . . . . . . . . . .  8
     9.2   Informative References . . . . . . . . . . . . . . . . . .  9
       Author's Address . . . . . . . . . . . . . . . . . . . . . . .  9
   A.  Alternative approaches . . . . . . . . . . . . . . . . . . . .  9
     A.1   ...through HTML/CSS extensions . . . . . . . . . . . . . .  9
     A.2   ...through custom URI schemes  . . . . . . . . . . . . . .  9
   B.  Implementations  . . . . . . . . . . . . . . . . . . . . . . . 10
     B.1   Example implementation for Webfolder client  . . . . . . . 10
     B.2   Xythos . . . . . . . . . . . . . . . . . . . . . . . . . . 13
   C.  Change Log (to be removed by RFC Editor before publication)  . 13
     C.1   Since draft-reschke-webdav-mount-00  . . . . . . . . . . . 13
     C.2   Since draft-reschke-webdav-mount-01  . . . . . . . . . . . 14
   D.  Resolved issues (to be removed by RFC Editor before
       publication) . . . . . . . . . . . . . . . . . . . . . . . . . 14
     D.1   wfimplopennotoptional  . . . . . . . . . . . . . . . . . . 14
   E.  Open issues (to be removed by RFC Editor prior to
       publication) . . . . . . . . . . . . . . . . . . . . . . . . . 14
     E.1   edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
       Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
       Intellectual Property and Copyright Statements . . . . . . . . 16















Reschke                  Expires April 13, 2006                 [Page 3]


Internet-Draft           Mounting WebDAV servers            October 2005


1.  Introduction

   By definition, a WebDAV server ([RFC2518]) is an HTTP server as well
   ([RFC2616]).  Most WebDAV servers can be (at least partly) operated
   from an HTML-based user interface in a web browser.  However, it is
   frequently desirable to be able to switch from an HTML-based view to
   a presentation provided by a native WebDAV client, directly
   supporting the authoring features defined in WebDAV and related
   specifications.

   For example, many educational institutions use WebDAV servers as a
   mechanism for sharing documents among students.  Each student owns a
   separate collection structure on a WebDAV server, often called their
   "locker".  Ideally, when a user clicks on a link in an HTML page
   provided by the university (perhaps by their university Web portal),
   an editable view of their locker will appear.

   For completeness, Appendix A lists other approaches that have been
   implemented in existing clients.


2.  Terminology

   The terminology used here follows and extends that in the WebDAV
   Distributed Authoring Protocol specification [RFC2518].

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

   This document uses XML DTD fragments ([XML]) as a purely notational
   convention.  In particular:

   o  Element names use the namespace
      "http://purl.org/NET/webdav/mount".  When an XML element type in
      this namespace is referenced in this document outside of the
      context of an XML fragment, the string "dm:" will be prefixed to
      the element name.

   o  Element ordering is irrelevant.

   o  Extension elements/attributes (elements/attributes not already
      defined as valid child elements) may be added anywhere, except
      when explicitly stated otherwise.







Reschke                  Expires April 13, 2006                 [Page 4]


Internet-Draft           Mounting WebDAV servers            October 2005


3.  Format

   A WebDAV mount request is encoded in a specific XML format ([XML])
   with a well-defined MIME type (see Section 6.1).  The MIME type
   allows user agents to dispatch the content to a handler specific to
   the system's WebDAV client.

   The elements defined below use the namespace
   "http://purl.org/NET/webdav/mount".

   <!ELEMENT mount (url, open?, username?) >

   <!ELEMENT url (#PCDATA) >
   <!-- PCDATA value: scheme ":" hier-part, as defined in section 3 of
        [RFC3986] -->

   <!ELEMENT open (#PCDATA) >
   <!-- PCDATA value: path, as defined in section 3 of
        [RFC3986] -->

   <!ELEMENT username (#PCDATA) >


3.1  dm:mount

   The <dm:mount> element acts as container for all the remaining
   elements defined by this protocol.

3.2  dm:url

   The mandatory <dm:url> element provides the HTTP URL of the WebDAV
   collection that should be mounted by the client.

3.3  dm:open

   The optional <dm:open> element instructs the client to display the
   specified child collection; it's URL is computed by concatenating
   this element's value with the URL obtained from the <dm:url>
   (Section 3.2) element (see Section 7 for a discussion about why this
   element only supports displaying collections rather than opening
   arbitrary documents).

3.4  dm:username

   The server can use the optional <dm:username> element to specify the
   name of the authenticated principal.  A client can use this value to
   select a matching mount point (different users may have mounted the
   URL with different credentials under different local mount points) or



Reschke                  Expires April 13, 2006                 [Page 5]


Internet-Draft           Mounting WebDAV servers            October 2005


   to provide a meaningful default for a authentication dialogue.

4.  Example

   In the example below, the server instructs the user agent to mount
   the WebDAV URL "http://www.example.com/documents/" in its WebDAV
   client, and then to display the contents of the child collection
   "/user42/inbox/", identified by the URL
   "http://www.example.com/documents/user42/inbox/".

   >> Request:

   GET /Coll/&mount-me HTTP/1.1
   Host: www.example.com

   >> Response:

   HTTP/1.1 200 OK
   Content-Type: application/davmount+xml
   Content-Length: xxx

   <dm:mount xmlns:dm="http://purl.org/NET/webdav/mount">
     <dm:url>http://www.example.com/documents/</dm:url>
     <dm:open>user42/inbox/</dm:open>
   </dm:mount>


5.  Internationalization Considerations

   This document does not introduce any new internationalization
   considerations beyond those discussed in [RFC2518], Section 16.

6.  IANA Considerations

6.1  MIME type registration

   MIME media type name:

      application

   MIME subtype name:

      davmount+xml

   Mandatory parameters:

      none




Reschke                  Expires April 13, 2006                 [Page 6]


Internet-Draft           Mounting WebDAV servers            October 2005


   Optional parameters:

      "charset": This parameter has identical semantics to the charset
      parameter of the "application/xml" media type as specified in
      [RFC3023].

   Encoding considerations:

      Identical to those of "application/xml" as described in [RFC3023],
      section 3.2.

   Security considerations:

      As defined in this specification.  In addition, as this media type
      uses the "+xml" convention, it shares the same security
      considerations as described in [RFC3023], section 10.

   Interoperability considerations:

      There are no known interoperability issues.

   Published specification:

      This specification.

   Additional information:

      Magic number(s):

         As specified for "application/xml" in [RFC3023], section 3.2.

      File extension:

         .davmount

      Fragment identifiers:

         As specified for "application/xml" in [RFC3023], section 5.

      Base URI:

         As specified in [RFC3023], section 6.

      Macintosh File Type code:

         TEXT

   Person and email address to contact for further information:



Reschke                  Expires April 13, 2006                 [Page 7]


Internet-Draft           Mounting WebDAV servers            October 2005


      Julian Reschke <julian.reschke@greenbytes.de>

   Intended usage:

      COMMON

   Author/Change controller:

      IESG


7.  Security Considerations

   All security considerations connected to HTTP/WebDAV and XML apply
   for this specification as well, namely [RFC2518] (Section 17) and
   [RFC3470] (Section 7).

   In addition, client implementers must be careful when implementing
   the <dm:open> element (see Section 3.3).  It MUST NOT be used to
   initiate any action beyond displaying the contents of a WebDAV
   collection (supporting "opening" documents could be abused to trick a
   user into letting the operating system's shell execute arbitrary
   content, possibly running it as an executable program).

8.  Acknowledgements

   This draft has benefited from thoughtful discussion by Emile Baizel,
   Joe Gregorio, Michal Gregr, Jim Luther, Jaroslav Mazanec, and Jim
   Whitehead.

9.  References

9.1  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2518]  Goland, Y., Whitehead, E., Faizi, A., Carter, S., and D.
              Jensen, "HTTP Extensions for Distributed Authoring --
              WEBDAV", RFC 2518, February 1999.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC3023]  Murata, M., St.Laurent, S., and D. Kohn, "XML Media
              Types", RFC 3023, January 2001.




Reschke                  Expires April 13, 2006                 [Page 8]


Internet-Draft           Mounting WebDAV servers            October 2005


   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, January 2005.

   [XML]      Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and
              F. Yergeau, "Extensible Markup Language (XML) 1.0 (Third
              Edition)", W3C REC-xml-20040204, February 2004,
              <http://www.w3.org/TR/2004/REC-xml-20040204>.

9.2  Informative References

   [RFC3470]  Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for
              the Use of Extensible Markup Language (XML) within IETF
              Protocols", RFC 3470, BCP 70, January 2003.

   [WEBARCH]  Walsh, N. and I. Jacobs, "Architecture of the World Wide
              Web, Volume One", W3C REC REC-webarch-20041215,
              December 2004,
              <http://www.w3.org/TR/2004/REC-webarch-20041215/>.


Author's Address

   Julian F. Reschke
   greenbytes GmbH
   Salzmannstrasse 152
   Muenster, NW  48159
   Germany

   Phone: +49 251 2807760
   Fax:   +49 251 2807761
   Email: julian.reschke@greenbytes.de
   URI:   http://greenbytes.de/tech/webdav/

Appendix A.  Alternative approaches

A.1  ...through HTML/CSS extensions

   Microsoft Internet Explorer implements a CSS extension that allows
   switching to it's own WebDAV client ("Webfolder", see <http://
   msdn.microsoft.com/workshop/author/behaviors/reference/behaviors/
   anchor.asp>).  However, at the time of this writing this extension
   was not implemented by any other user agent.

A.2  ...through custom URI schemes

   The "kio" library of the "K Desktop Enviroment"
   (<http://www.kde.org/>) uses the URI scheme "webdav" to dispatch to



Reschke                  Expires April 13, 2006                 [Page 9]


Internet-Draft           Mounting WebDAV servers            October 2005


   the system's WebDAV client.  This URI scheme is not registered, nor
   supported on other platforms.  Furthermore, W3C's "Architecture of
   the World Wide Web, Volume One" explicitly advises against defining
   new schemes when existing schemes can be used:

      "A specification SHOULD reuse an existing URI scheme (rather than
      create a new one) when it provides the desired properties of
      identifiers and their relation to resources."

   (see [WEBARCH], Section 2.4)

Appendix B.  Implementations

B.1  Example implementation for Webfolder client

   The figure below shows a sample implementation of a dispatcher for
   the application/davmount+xml datatype, suited for Win32 systems and
   the Microsoft "Webfolder" client.

   // sample implementation of application/davmount+xml
   // dispatcher for Windows Webfolder client
   //
   // to install/uninstall:
   //        wscript davmount.js
   //
   // to open the webfolder:
   //        wscript davmount.js filename
   // (where filename refers to an XML document with MIME type
   // application/davmount+xml)

   var EXTENSION = ".davmount";
   var MIMETYPE = "application/davmount+xml";
   var REGKW = "WebDAV.mount";
   var NS = "xmlns:m='http://purl.org/NET/webdav/mount";

   // remove keys/entries from the registry

   function regdel(shell, key) {
     try {
       var x = shell.RegRead(key);
       try {
         shell.RegDelete(key);
       }
       catch(e) {
         WScript.Echo("Error removing key " + key + ": " + e);
       }
     }
     catch(e) {



Reschke                  Expires April 13, 2006                [Page 10]


Internet-Draft           Mounting WebDAV servers            October 2005


       // entry not present
     }
   }


   // methods for registering/unregistering the handler

   function install() {

     var WshShell = new ActiveXObject("WScript.Shell");
     if (WshShell == null) {
       WScript.Echo("Couldn't instantiate WScript.Shell object");
       return 2;
     }

     var fso = new ActiveXObject("Scripting.FileSystemObject");

     var RegExt = "HKCR\\" + EXTENSION + "\\";
     var RegMimeType = "HKCR\\MIME\\DataBase\\Content Type\\"
       + MIMETYPE + "\\";
     var RegKw = "HKCR\\" + REGKW + "\\";

     var extension = null;
     try {
       extension = WshShell.RegRead(RegMimeType + "Extension");
     }
     catch (e) {
     }

     if (extension == null) {
       var but = WshShell.popup("Install the dispatcher for mime type "
         + MIMETYPE + "?", 0, MIMETYPE + " installation", 4);

       if (but == 6) {
         try {
           WshShell.RegWrite(RegExt, REGKW);
           WshShell.RegWrite(RegExt + "Content Type", MIMETYPE);
           WshShell.RegWrite(RegMimeType + "Extension", EXTENSION);
           WshShell.RegWrite(RegKw, "WebDAV Mount Request");
           WshShell.RegWrite(RegKw + "DefaultIcon\\",
             "shell32.dll,103");
           var path = fso.getAbsolutePathName("davmount.js");
           WshShell.RegWrite(RegKw + "shell\\open\\command\\",
             "%SystemRoot%\\system32\\wscript.exe /nologo \""
             + path + "\" \"%1\"", "REG_EXPAND_SZ");
         }
         catch (e) {
           WScript.Echo("Error writing to registry");



Reschke                  Expires April 13, 2006                [Page 11]


Internet-Draft           Mounting WebDAV servers            October 2005


           return 1;
         }

         return 0;
       }
       else {
         return 1;
       }
     }
     else {
       var but = WshShell.popup("Remove the dispatcher for mime type "
         + MIMETYPE + "?", 0, MIMETYPE + " installation", 4);

       if (but == 6) {
         regdel(WshShell, RegExt + "Content Type");
         regdel(WshShell, RegExt);
         regdel(WshShell, RegKw + "shell\\open\\command\\");
         regdel(WshShell, RegKw + "DefaultIcon\\");
         regdel(WshShell, RegKw);
         regdel(WshShell, RegMimeType + "Extension");
         regdel(WshShell, RegMimeType);
         return 0;
       }
       else {
         return 1;
       }
     }
   }


   if (WScript.Arguments.length == 0) {
     // install/uninstall
     WScript.Quit(install());
   }
   else {
     // try to invoke Webfolder

     var inp = new ActiveXObject("MSXML2.DOMDocument");
     if (! inp.load(WScript.Arguments(0))) {
       WScript.Echo("Can't read from '"
         + WScript.Arguments(0) + "'!");
       WScript.Quit(2);
     }

     inp.setProperty("SelectionLanguage", "XPath");
     inp.setProperty("SelectionNamespaces",
       "xmlns:m='http://purl.org/NET/webdav/mount'");




Reschke                  Expires April 13, 2006                [Page 12]


Internet-Draft           Mounting WebDAV servers            October 2005


     var n1 = inp.selectSingleNode("/m:mount/m:url");
     var n2 = inp.selectSingleNode("/m:mount/m:open");

     if (n1 == null) {
       WScript.Echo("<url> element missing.");
       WScript.Quit(2);
     }


     var ie = new ActiveXObject("InternetExplorer.Application");

     ie.Navigate("about:blank");
     var doc = ie.Document;

     var folder = doc.createElement("span");
     folder.addBehavior("#default#httpFolder");

     var result = folder.navigate(n1.text +
                    (n2 == null ? "" : n2.text));

     // close the window again when there was no <open> element
     if (n2 == null) ie.Quit();

     if (result != "OK") {
       if (result == "PROTOCOL_NOT_SUPPORTED") {
         WScript.Echo("This site doesn't seem to support WebDAV.");
         WScript.Quit(1);
       }
       else {
         WScript.Echo("Unexpected status: " + result);
         WScript.Quit(2);
       }
     }
   }



B.2  Xythos

   The "Xythos Drive" WebDAV client for WebDAV supports this
   specification starting with version 4.4.

Appendix C.  Change Log (to be removed by RFC Editor before publication)

C.1  Since draft-reschke-webdav-mount-00

   Add implementations section; add sample implementation for Microsoft
   Webfolder client.  Add acknowledgments section.



Reschke                  Expires April 13, 2006                [Page 13]


Internet-Draft           Mounting WebDAV servers            October 2005


C.2  Since draft-reschke-webdav-mount-01

   Be consistent in using trailing slashes on collection URLs in
   examples.  Fix webfolder reference impl not to require <open>
   element.  Update acknowledgments.  Incorporate some of JimW's
   suggestions in abstract and introduction.  Expand security
   considerations regarding <open> and fwd-reference it from the spec.

Appendix D.  Resolved issues (to be removed by RFC Editor before
             publication)

   Issues that were either rejected or resolved in this version of this
   document.

D.1  wfimplopennotoptional

   Type: change

   julian.reschke@greenbytes.de (2005-09-22): Fix Webfolder reference
   impl not to require open element.

   Resolution (2005-09-22): Fixed.

Appendix E.  Open issues (to be removed by RFC Editor prior to
             publication)

E.1  edit

   Type: edit

   julian.reschke@greenbytes.de (2005-09-17): Umbrella issue for
   editorial fixes/enhancements.



















Reschke                  Expires April 13, 2006                [Page 14]


Internet-Draft           Mounting WebDAV servers            October 2005


Index

   A
      application/mount
         xml MIME type  6

   D
      dm:mount  5
      dm:opent  5
      dm:url  5
      dm:username  5

   M
      MIME type
         application/mount  6




































Reschke                  Expires April 13, 2006                [Page 15]


Internet-Draft           Mounting WebDAV servers            October 2005


Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.




Reschke                  Expires April 13, 2006                [Page 16]