Internet-Draft                                        Leslie L. Daigle
Expires: September 11, 1998            Bunyip Information Systems Inc.
draft-daigle-wppresp-00.txt                           Patrik Faltstrom
                                                         Tele2/Swipnet
                                                          January 1998

                  The application/whoispp-response Content-type

Status of this Memo

      This document is an Internet-Draft.  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 docu-
      ments at any time.  It is inappropriate to use Internet-Drafts as
      reference material or to cite them other than as ``work in
      progress.''

      To learn the current status of any Internet-Draft, please check
      the ``1id-abstracts.txt'' listing contained in the Internet-
      Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net
      (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
      Coast), or ftp.isi.edu (US West Coast).

      Distribution of this document is unlimited.

Abstract

   This document defines the expression of Whois++ protocol (originally
   defined in [RFC1835], updated in [draft-asid-whoispp-02.txt])
   responses within MIME [RFC2046] media types.  The intention of this
   document, in conjunction with [draft-daigle-wppresp-00.txt] is
   to enable MIME-enabled mail software, and other systems using
   Internet media types, to carry out Whois++ transactions.




1.  MIME Registration Information

To: iana@isi.edu
Subject:  Registration of MIME media type application/whoispp-response

MIME Type name:         Application

MIME subtype name:      whoispp-response

Required parameters:    none

Optional parameters:    none

Encoding considerations: Any valid MIME encodings may be used

Security considerations: This content-type contains purely descriptive
information (i.e., no directives).  There are security considerations
with regards to the appropriateness (privacy) of information provided
through the use of this content-type, and the authenticity of the
information so-provided.  This content-type provides no native
mechanisms for authentication.

Published specification:  this document

Person & email address to contact for further information:

                        Leslie L. Daigle
                        leslie@bunyip.com

Intended usage:         common



2.  whoispp-response Syntax

The following grammar, which uses ABNF-like notation as defined in
[RFC2234], defines a subset of responses expected from a Whois++ server
upon receipt of a valid Whois++ query.  As such, it describes the
expected structure of a whoispp-response media type object.

N.B.:  As outlined in the ABNF definition, rule names and string
literals are in the US-ASCII character set, and are case-insensitive.


   server          =   goodmessage mnl output mnl endmessage nl
                     / badmessage nl endmessage nl

   output          =   full / abridged / summary / handle

   full            =   0*(full-record / server-to-ask)

   abridged        =   0*(abridged-record / server-to-ask)

   summary         =   summary-record

   handle          =   0*(handle-record / server-to-ask)

   full-record     =   "# FULL " template serverhandle localhandle
                              system-nl
                       1*(fulldata system-nl)
                       "# END" system-nl

   abridged-record =   "# ABRIDGED " template serverhandle localhandle system-nl
                       abridgeddata
                       "# END" system-nl

   summary-record   =  "# SUMMARY " serverhandle system-nl
                       summarydata
                       "# END" system-nl

   handle-record    =  "# HANDLE " template serverhandle localhandle system-nl

   server-to-ask   =   "# SERVER-TO-ASK " serverhandle system-nl
                       server-to-askdata
                       "# END" system-nl

   fulldata        =   " " attributename ": " attributevalue

   abridgeddata    =   " " 0*( attributevalue / tab )

   summarydata     =   " Matches: " number system-nl
                       [" Referrals: " number system-nl]
                       " Templates: " template 0*( system-nl "-"
                                                   template)

   server-to-ask-data = " Server-Handle:" serverhandle system-nl
                        " Host-Name: " hostname system-nl
                        " Host-Port: " number system-nl
                        [" Protocol: " prot system-nl]
                        0*(" " labelstring ": " labelstring system-nl)


   attributename   =   1*attrbyte

   attrbyte        =   <%d33-127 except specialbyte>

   attributevalue  =   longstring

   template        =   labelstring

   serverhandle    =   labelstring

   localhandle     =   labelstring

   hostname        =   labelstring

   prot            =   labelstring

   longstring      =   bytestring 0*( nl ( "+" / "-" ) bytestring )

   bytestring      =   0*charbyte

   labelstring     =   0*restrictedbyte

   restrictedbyte  =   <%d32-%d255 except specialbyte>

   charbyte        =   <%d32-%d255 except nl>

   specialbyte     =   ":" / " " / tab / nl

   tab             =   %d09

   mnl             =   1*system-nl

   system-nl       =   nl [ 1*(message nl) ]

   nl              =   %d13 %d10

   message         =   [1*( messagestart "-" bytestring nl)]
                       messagestart " " bytestring nl

   messagestart    =   "% " digit digit digit

   goodmessage     =   [1*( goodmessagestart "-" bytestring nl)]
                       goodmessagestart " " bytestring nl

   goodmessagestart=   "% 200"

   messagestart    =   "% " digit digit digit

   badmessage      =   [1*( badmessagestart "-" bytestring nl)]
                       badmessagestart " " bytestring nl

   badmessagestart =   "% 5" digit digit

   endmessage      =   endmessageclose

   endmessageclose =   [endmessagestart " " bytestring nl]
                       byemessage

   endmessagestart =   "% 226"

   byemessage      =   byemessagestart " " bytestring nl

   endmessagestart =   "% 203"

   number          =   1*( digit )

   digit           =   "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"







3.  References

   [ALVE95]        Alvestrand H., "Tags for the Identification of
                   Languages", RFC 1766, UNINETT, March 1995.

   [RFC2234]       Crocker, D., and P. Overell,  "Augmented BNF for
                   Syntax Specifications: ABNF", RFC 2234, November 1997.
   [RFC1835]       Deutsch, P., R. Schoultz, P. Faltstrom and C.
                   Weider.  "Architecture of the WHOIS++ service",
                   RFC 1835. August 1995.

   [HARR85]        Harrenstein K., Stahl M., and E. Feinler,
                   "NICNAME/WHOIS", RFC 954, SRI, October 1985.

   [POST82]        Postel J., "Simple Mail Transfer Protocol", STD 10,
                   RFC 821, USC/Information Sciences Institute,
                   August 1982.

   [IIIR]          Weider C., and P. Deutsch, "A Vision of an
                   Integrated Internet Information Service", RFC 1727
                   Bunyip Information Systems, Inc., December 1994.

   [WINDX]         Weider, C., J. Fullton, and S. Spero, "Architecture
                   of the Whois++ Index Service", RFC 1913, February
                   1996.


4.  Authors Addresses

   Leslie L. Daigle
   Bunyip Information Systems Inc.
   310 Ste. Catherine St. W
   Suite 300
   Montreal, Quebec,  CANADA
   H2X 2A1

   Email:  leslie@bunyip.com


   Patrik Faltstrom
   Tele2
   Borgarfjordsgatan 16
   BOX 62
   194 64 Kista
   SWEDEN

   Email: paf@swip.net