PS> 'reference.xsd' to simple URLs

PS> 'reference.xsd' to simple URLs

McDonald, Ira imcdonald at sharplabs.com
Thu Jan 9 18:04:10 EST 2003


Hi Dave,                                       Thursday (9 January 2003)

Below is my best effort to replace the PSI 'reference.xsd' with simple
URLs (with a few query part parameters).

More work is still needed on the RFC 2822 (SMTP) format for references
to specific messages and body parts and attachments of those messages,
for POP3 (see IMAP4 below).

Cheers,
- Ira McDonald
  High North Inc

----------------------------------------
* Convert current "reference.xsd" to use _only_ URLs

URL
---

Background:

See "Uniform Resource Identifiers (URI): Generic Syntax" (RFC 2396).


FTP
---

Example:

   ftp://joe:blues@myhost.com:21/somefile.txt?passive=true;mode=binary

Notes:

   (1) OPTIONAL 'user' here is 'joe'
   (2) OPTIONAL 'password' here is 'blues'
   (3) REQUIRED 'host' here is 'myhost.com'
   (4) OPTIONAL 'port' here is '21' (the default for FTP)
   (5) OPTIONAL 'fpath' here is 'somefile.txt'
   (6) PSI-defined query extension 'passive' here is 'true'
   (7) PSI-defined query extension 'mode' here is 'binary'
       (as opposed to 'text')

Background:

>From section 5 of "Uniform Resource Locators (URL)" (RFC 1738):

   ftpurl         = "ftp://" login [ "/" fpath [ ";type=" ftptype ]]
   fpath          = fsegment *[ "/" fsegment ]
   fsegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
   ftptype        = "A" | "I" | "D" | "a" | "i" | "d"
   login          = [ user [ ":" password ] "@" ] hostport
   hostport       = host [ ":" port ]


FILE
----

Example:

   file://myhost.com/myreference.pdf

Notes:

   (1) OPTIONAL 'host' can be empty of "localhost" (but this is not
       a safe reference to pass over the network)
   (2) REQUIRED 'path' MUST specify a specific file

Background:

>From section 3.10 of "Uniform Resource Locators (URL)" (RFC 1738):

   The file URL scheme is used to designate files accessible on a
   particular host computer. This scheme, unlike most other URL schemes,
   does not designate a resource that is universally accessible over the
   Internet.

   A file URL takes the form:

       file://<host>/<path>

   where <host> is the fully qualified domain name of the system on
   which the <path> is accessible, and <path> is a hierarchical
   directory path of the form <directory>/<directory>/.../<name>.


POP3
----

Example:

   pop://joe;auth=<sasl-info>@mailhost.com:110
         (1) (2)              (3)          (4)

Notes:

   (1) OPTIONAL 'user' parameter MUST be specified for PSI usage
   (2) OPTIONAL 'auth' parameter MAY be specified for APOP or SASL info
   (3) REQUIRED 'host' parameter SHOULD NOT be <ip-addr> for PSI usage
   (4) OPTIONAL 'port' parameter defaults to 110

Background:

>From section 3 of "POP URL Scheme", RFC 2384, August 1998:

   "The POP URL scheme designates a POP server, and optionally a port
   number, authentication mechanism, authentication ID, and/or
   authorization ID.

   The POP URL follows the common Internet scheme syntax as defined in
   RFC 1738 [BASIC-URL] except that clear text passwords are not
   permitted.  If :<port> is omitted, the port defaults to 110.

   The POP URL is described using [ABNF] in Section 8.

   A POP URL is of the general form:

        pop://<user>;auth=<auth>@<host>:<port>

   Where <user>, <host>, and <port> are as defined in RFC 1738, and some
   or all of the elements, except "pop://" and <host>, may be omitted."

>From section 8 of "POP URL Scheme", RFC 2384, August 1998:

   "The POP URL scheme is described using [ABNF]:

        achar            = uchar / "&" / "=" / "~"
                                ; see [BASIC-URL] for "uchar" definition

        auth             = ";AUTH=" ( "*" / enc-auth-type )

        enc-auth-type    = enc-sasl / enc-ext

        enc-ext          = "+" ("APOP" / 1*achar)
                              ;APOP or encoded extension mechanism name

        enc-sasl         = 1*achar
                              ;encoded version of [SASL] "auth_type"

        enc-user         = 1*achar
                              ;encoded version of [POP3] mailbox

        pop-url          = "pop://" server

        server           = [user-auth "@"] hostport
                              ;See [BASIC-URL] for "hostport" definition

        user-auth        = enc-user [auth]


IMAP4
-----

Example:

>From section 10 of "IMAP URL Scheme", RFC 2192, September 1997:

   The IMAP URL:

    <imap://minbari.org/gray-council;UIDVALIDITY=385759045/;UID=20>

   Results in the following client commands:

       <connect to minbari.org, port 143>
       C: A001 LOGIN ANONYMOUS sheridan at babylon5.org
       C: A002 SELECT gray-council
       <client verifies the UIDVALIDITY matches>
       C: A003 UID FETCH 20 BODY.PEEK[]

Notes:

   <to be supplied>

Background:

>From section 2 of "IMAP URL Scheme", RFC 2192, September 1997:

   "The IMAP URL scheme is used to designate IMAP servers, mailboxes,
   messages, MIME bodies [MIME], and search programs on Internet hosts
   accessible using the IMAP protocol.

   The IMAP URL follows the common Internet scheme syntax as defined
   in RFC 1738 [BASIC-URL] except that clear text passwords are not
   permitted.  If :<port> is omitted, the port defaults to 143.

   An IMAP URL takes one of the following forms:

       imap://<iserver>/
       imap://<iserver>/<enc_list_mailbox>;TYPE=<list_type>
       imap://<iserver>/<enc_mailbox>[uidvalidity][?<enc_search>]
       imap://<iserver>/<enc_mailbox>[uidvalidity]<iuid>[isection]

   The first form is used to refer to an IMAP server, the second form
   refers to a list of mailboxes, the third form refers to the
   contents of a mailbox or a set of messages resulting from a search,
   and the final form refers to a specific message or message part.
   Note that the syntax here is informal.  The authoritative formal
   syntax for IMAP URLs is defined in section 11."

>From section 12 of "IMAP URL Scheme", RFC 2192, September 1997:

   "This uses ABNF as defined in RFC 822 [IMAIL].  Terminals from the
   BNF for IMAP [IMAP4] and URLs [BASIC-URL] are also used.  Strings
   are not case sensitive and free insertion of linear-white-space is
   not permitted.

   achar            = uchar / "&" / "=" / "~"
                           ; see [BASIC-URL] for "uchar" definition

   bchar            = achar / ":" / "@" / "/"

   enc_auth_type    = 1*achar
                         ; encoded version of [IMAP-AUTH] "auth_type"

   enc_list_mailbox = 1*bchar
                           ; encoded version of [IMAP4] "list_mailbox"

   enc_mailbox      = 1*bchar
                           ; encoded version of [IMAP4] "mailbox"

   enc_search       = 1*bchar
                           ; encoded version of search_program below

   enc_section      = 1*bchar
                           ; encoded version of section below

   enc_user         = 1*achar
                           ; encoded version of [IMAP4] "userid"

   imapurl          = "imap://" iserver "/" [ icommand ]

   iauth            = ";AUTH=" ( "*" / enc_auth_type )

   icommand         = imailboxlist / imessagelist / imessagepart

   imailboxlist     = [enc_list_mailbox] ";TYPE=" list_type

   imessagelist     = enc_mailbox [ "?" enc_search ] [uidvalidity]

   imessagepart     = enc_mailbox [uidvalidity] iuid [isection]

   isection         = "/;SECTION=" enc_section

   iserver          = [iuserauth "@"] hostport
                           ; See [BASIC-URL] for "hostport" definition

   iuid             = "/;UID=" nz_number
                           ; See [IMAP4] for "nz_number" definition

   iuserauth        = enc_user [iauth] / [enc_user] iauth

   list_type        = "LIST" / "LSUB"

   search_program   = ["CHARSET" SPACE astring SPACE]
                      search_key *(SPACE search_key)
                         ; IMAP4 literals may not be used
                         ; See [IMAP4] for "astring" and "search_key"

   section          = section_text / (nz_number *["." nz_number]
                       ["." (section_text / "MIME")])
                      ; See [IMAP4] for "section_text" and "nz_number"

   uidvalidity      = ";UIDVALIDITY=" nz_number
                           ; See [IMAP4] for "nz_number" definition


UNC
---

Example:

   pwg-unc:\\myprintserver\myprinter

Notes:

   (1) Proposed new PWG standard URL scheme for UNC encapsulation
   (2) ALL printable ASCII characters are legal in the UNC, including
       the BACKSLASH (0x5C)

Background:

Microsoft uses UNC identifiers in Windows environments.



More information about the Ps mailing list