Network Working Group                                          C. Newman
Internet Draft: ACAP Media Type Dataset Class                   Innosoft
Document: draft-ietf-acap-mediatype-00.txt                     July 1997
                                                   Expires in six months


                     ACAP Media Type Dataset Class

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
     documents at any time.  It is inappropriate to use Internet-Drafts
     as reference material or to cite them other than as "work in
     progress."

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

Abstract

     With the definition of standardized media types in MIME [MIME-IMT]
     it has become necessary to keep mapping tables which translate
     between the standard media type names, commonly used file name
     extensions, any platform specific typing mechanism, and helper
     applications to view, compose, edit or print media types.
     Supplying a set of site defaults is useful so that users won't have
     to configure well-known types.  The mailcap mechanism [MAILCAP]
     provides some of this functionality in a homogenous environment
     with a shared filesystem, and the Macintosh program "Internet
     Config" has had success in consolidating these tables for multiple
     applications on a single machine.  But neither of these addresses
     the problems of multi-platform users or a heterogenous environment.

     ACAP provides precisely the right facilities for this need.  ACAP's
     dataset structure is extensible, and ACAP's inheritance feature is
     ideal for enterprise default settings with per-user customization.






Newman                                                          [Page i]


Internet Draft       ACAP Media Type Dataset Class             July 1997





                           Table of Contents



Status of this memo ...............................................    i
Abstract ..........................................................    i
0.   Open Issues ..................................................    1
1.   Conventions used in this document ............................    1
2.   ACAP Media Type Dataset Class ................................    1
2.1. ACAP Media Type Dataset Class Prefix .........................    1
2.3. ACAP Media Type Dataset Hierarchy ............................    1
3.   Recommended ACAP Media Type Attributes .......................    1
3.1. Basic Attributes .............................................    1
3.2. System independent attributes ................................    2
3.3. MacOS related attributes .....................................    4
3.4. Unix Related Attributes ......................................    5
3.5. Windows 95/NT Related Attributes .............................    7
3.5. Windows 3.1 Related Attributes ...............................    7
5.   Examples .....................................................    8
6.   Security Considerations ......................................    8
7.   References ...................................................    8
8.   Author's Address .............................................    9
Appendix ..........................................................   10
A.   Attribute Index ..............................................   10
























Newman                                                         [Page ii]


0.   Open Issues

     1) Can someone else do the Windows sections?  I'm not familiar with
     the platforms.

1.   Conventions used in this document

     The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD
     NOT", "OPTIONAL", and "MAY" in this document are to be interpreted
     as described in "Key words for use in RFCs to Indicate Requirement
     Levels" [KEYWORDS].

     The attribute syntax specifications use the Augmented Backus-Naur
     Form (ABNF) notation as specified in [IMAIL].

2.   ACAP Media Type Dataset Class


2.1. ACAP Media Type Dataset Class Prefix

     Datasets whose names begin with "/mediatype" are assumed to contain
     mediatype entries as defined in this specification.

2.3. ACAP Media Type Dataset Hierarchy

     Each user may have a set of named media type profiles for use on
     different hosts.  The default is "default" and is referenced with
     the path "/mediatype/user/<username>/default/".  Inheritance is
     likely to be useful both for inheriting site or group defaults as
     well as for inheriting the default configuration when using
     different hosts.

3.   Recommended ACAP Media Type Attributes

     A mediatype entry MUST have an "entry" attribute.  All other
     attributes are OPTIONAL.

     The ABNF defines the content of the attribute values prior to their
     encoding as an ACAP string.  Clients MUST conform to the syntax
     when generating these attributes, but MUST NOT assume that the
     attribute values will conform to this syntax on access.  Servers
     MUST NOT enforce the syntax.

3.1. Basic Attributes

     These attributes are defined in ACAP [ACAP] and have meaning in all
     dataset classes.  The section describes how they are used in an
     mediatype dataset.



Newman                                                          [Page 1]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     entry
          The "entry" attribute is used to hold a descriptive name of
          the media type.  This name is used for inheritance, so when
          customizing a media type which has an entry in an inherited
          dataset, the entry name needs to remain the same.


     subdataset
          The "subdataset" attribute indicates there is another media
          type dataset underneath this entry.


3.2. System independent attributes

     These attributes are likely to have meaning for all ACAP clients.


     mediatype.common.type
          This is a multi-valued attribute which contains the MIME media
          type(s) [MIME-IMT] of the entry.  It may include type
          parameters (such parameters should be canonicalized by
          removing unnecessary quoting and converting to lower case to
          simplify lookups). New MIME media types are registered
          according to the MIME registration procedures [MIME-REG].

          The terminals type, subtype and parameter are defined in MIME
          Internet Message Bodies [MIME-IMB].  Free insertion of
          linear-white-space is not permitted in this grammar.

          A subtype of "*" indicates a catch-all entry for a type.
          Clients SHOULD check for a catch-all entry after checking for
          a regular entry.

          mtype-typenam  = type "/" mtype-subtype *(";" SPACE parameter)

          mtype-subtype  = subtype / "*"


     mediatype.common.extension
          This is a multi-valued attribute which contains the file name
          extension(s) that are commonly associated with this media
          type.  For example, with JPEG files (image/jpeg), a number of
          extensions have been observed: "jpg", "jpeg", "jfif", "jpe",
          and "jfi". Extensions should be converted to lower case to
          simplify searching.

          mtype-ext      = 1*ATOM-CHAR




Newman                                                          [Page 2]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     mediatype.common.magicNumber.bin
          This contains the magic number(s) of the media type.  A magic
          number is a set of octets at the beginning of the file which
          are always the same for that media type.  For example, all
          image/gif objects begin with the four-octet sequence (71, 73,
          70, 56 or "GIF8").  As this is a binary field, it may contain
          any octet value including 0.  This can be used to attempt to
          locate a type for an untyped file.

          mtype-magic    = 1*OCTET


     mediatype.common.textualNewlines
          If this is "1" it indicates that the media type is line
          oriented and subject to newline canonicalization.  If this is
          "0" it indicates newlines should be preserved.  If NIL, the
          client should default this to "0" for non-text types and "1"
          for text types.

          mtype-text     = "0" / "1"


     mediatype.common.description
          This is a longer textual description of the mediatype.

          mtype-desc     = *UTF8-CHAR


     mediatype.common.securityRisk
          This contains a token indicating an estimate of the security
          risks of the media type.  This is likely to be set by a site
          administrator.  Applications SHOULD consult the security risk
          field before taking action on an attachment and SHOULD NOT
          launch applications other than "probably-safe" ones without
          querying the user.

          The levels are "probably-safe", meaning there aren't any known
          or suspected problems and the media type is not extensible.
          audio/basic falls in this category. "probably-safe-but-
          extensible" meaning there aren't any known or suspected
          problems but the media type is extensible and an extension may
          result in security problems.  image/jpeg falls into this
          category.  "caution" means the media type can cause damage in
          limited circumstances.  text/plain falls in this category
          since if they are displayed on a powerful terminal embedded
          escape sequences could reprogram the keyboard or otherwise
          generate dangerous simulated user input.  "caution-extensible"
          means the media type is at the caution level, but could be



Newman                                                          [Page 3]


Internet Draft       ACAP Media Type Dataset Class             July 1997


          extended to add further damage.  text/enriched falls into this
          category.  "danger" indicates the type has dangerous functions
          which can be used to destroy data and must be executed in a
          safe environment or the sender must be trusted.
          application/postscript falls into this category due to it's
          file operators.  text/html falls into this category due to the
          numerous security problems it continues to have from
          proprietary extensions. Finally, "embedded" means the type is
          an encapsulating type which inherits risks from the type
          embedded within it. application/applefile falls into this
          category.

          When this is NIL, clients SHOULD assume "unknown".

          mtype-risk     = "probably-safe" / "probably-safe-but-extensible" /
                           "caution" / "caution-but-extensible" / "danger" /
                           "embedded" / "unknown"


3.3. MacOS related attributes

     These are attributes which apply to MacOS systems.

     mediatype.macOS.type.bin
          This contains the 4-octet MacOS type code for this media type.

          mtype-mactype   = 4OCTET


     mediatype.macOS.creator.bin
          This contains the 4-octet MacOS creator code which the user
          prefers for use with documents of this type.

          mtype-maccreat   = 4OCTET


     mediatype.macOS.postProcess.bin
          This contains the 4-octet MacOS creator code of an application
          which the user wishes to use when post-processing documents of
          this type.  If NIL, then no post-processing is required.  This
          is primarily used for encapsulating formats such as
          application/applefile.

          mtype-macpost   = 4OCTET







Newman                                                          [Page 4]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     mediatype.macOS.creatorName
          This contains the filename of the application whose creator
          code is stored in mediatype.MacOS.creator.bin.  This value
          MUST be UTF-8 and not in a MacOS internal character set.

          mtype-maccname   = 1*UTF8-CHAR


     mediatype.macOS.postProcessName
          This contains the filename of the application whose creator
          code is stored in mediatype.MacOS.postProcess.bin.  This value
          MUST be UTF-8 and not in a MacOS internal character set.

          mtype-macpname   = 1*UTF8-CHAR


     mediatype.macOS.alwaysUseHelper
          If this is non-NIL, it states a user preference to use the
          specified helper application rather than any internal viewer
          contained in the dispatching application.

          mtype-macalways   = "1"


3.4. Unix Related Attributes

     These attributes are used to launch unix helper applications
     similar to the mailcap [MAILCAP] mechanism.

     When a client executes a Unix command line helpers it runs under
     the Bourne shell (usually by using the system() function call).
     Prior to execution, the client SHOULD perform the following
     substitutions into the command line: the string "%s" is replaced by
     a temporary file name for the body part or MIME part (if %s is
     absent, the body part or MIME part is passed through standard
     input).  The string "%t" is replaced by the media type and subtype,
     the string "%{<param>}" is replaced by the media type parameter
     with name <param>.  The character "%" is quoted with "\%".  By
     default, multi-part types are left intact with MIME headers prior
     to dispatching.  A dispatching application MAY support the %n and
     %F options of mailcap [MAILCAP] for backwards compatibility.


     mediatype.unix.viewer
          This contains a command to execute a viewer for the media
          type.

          mtype-unixview  = *UTF8-CHAR



Newman                                                          [Page 5]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     mediatype.unix.viewerMIME
          If this is non-NIL it indicates that the viewer uses MIME
          entities (with complete headers) rather than body parts.

          mtype-unixvmime = "1"


     mediatype.unix.composer
          This contains a command to execute a program to compose a new
          body part of the specified media type.  If not set, it is
          assumed to be the same as mediatype.unix.editor.

          mtype-unixcomp  = *UTF8-CHAR


     mediatype.unix.composerMIME
          If this is non-NIL it indicates that the composer uses MIME
          entities (with complete headers) rather than body parts.

          mtype-unixcmime = "1"


     mediatype.unix.editor
          This contains a command to execute a program to edit body
          parts of the specified media type.  If not set, it is assumed
          to be the same as mediatype.unix.viewer.

          mtype-unixedit  = *UTF8-CHAR


     mediatype.unix.editorMIME
          If this is non-NIL it indicates that the editor uses MIME
          entities (with complete headers) rather than body parts.

          mtype-unixemime = "1"


     mediatype.unix.print
          This contains a command to print a body part of the specified
          type.

          mtype-unixprint = *UTF8-CHAR


     mediatype.unix.printMIME
          If this is non-NIL it indicates that the print command uses
          MIME entities (with complete headers) rather than body parts.




Newman                                                          [Page 6]


Internet Draft       ACAP Media Type Dataset Class             July 1997


          mtype-unixpmime = "1"


     mediatype.unix.output
          This indicates any output assistance which the viewer command
          needs.  The "terminal" option indicates an interactive
          terminal is needed and the dispatcher should create a terminal
          window or the equivalent.  The "pager" option indicates the
          output may be more than 24 lines and the viewer does not have
          a built-in pager.

          mtype-unixout = "terminal" / "pager"


     mediatype.unix.alwaysUseHelper
          If this is non-NIL, it states a user preference to use the
          specified helper application rather than any internal viewer
          contained in the dispatching application.

          mtype-unixalways   = "1"


3.5. Windows 95/NT Related Attributes



     mediatype.win32.viewer


     mediatype.win32.editor


     mediatype.win32.alwaysUseHelper


3.5. Windows 3.1 Related Attributes

     These attributes are specific to Windows 3.1 machines.  If these
     are not present, then the mediatype.win32.* attributes may be used
     instead.


     mediatype.win31.viewer


     mediatype.win31.editor





Newman                                                          [Page 7]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     mediatype.win31.alwaysUseHelper


5.   Examples

     TODO

6.   Security Considerations

     Security considerations for launching helper applications for media
     types are discussed in the section for the
     mediatype.common.securityRisk attribute.

7.   References

     [BASIC-URL] Berners-Lee, Masinter, McCahill, "Uniform Resource
     Locators (URL)", RFC 1738, CERN, Xerox Coproration, University of
     Minnesota, December 1994.

         <ftp://ds.internic.net/rfc/rfc1738.txt>

     [IMAIL] Crocker, D., "Standard for the Format of ARPA Internet Text
     Messages", STD 11, RFC 822, University of Delaware, August 1982.

         <ftp://ds.internic.net/rfc/rfc822.txt>

     [IMAP4] Crispin, M., "Internet Message Access Protocol - Version
     4rev1", RFC 2060, University of Washington, December 1996.

         <ftp://ds.internic.net/rfc/rfc2060.txt>

     [KEYWORDS] Bradner, "Key words for use in RFCs to Indicate
     Requirement Levels", RFC 2119, Harvard University, March 1997.

         <ftp://ds.internic.net/rfc/rfc2119.txt>

     [MAILCAP] Borenstein, "A User Agent Configuration Mechanism For
     Multimedia Mail Format Information", RFC 1524, Bellcore, September
     1993.

         <ftp://ds.internic.net/rfc/rfc1524.txt>

     [MIME-IMB] Freed, Borenstein, "Multipurpose Internet Mail
     Extensions (MIME) Part One: Format of Internet Message Bodies", RFC
     2045, Innosoft, First Virtual, November 1996.

         <ftp://ds.internic.net/rfc/rfc2045.txt>




Newman                                                          [Page 8]


Internet Draft       ACAP Media Type Dataset Class             July 1997


     [MIME-IMT] Freed, Borenstein, "Multipurpose Internet Mail
     Extensions (MIME) Part Two: Media Types", RFC 2046, Innosoft, First
     Virtual, November 1996.

         <ftp://ds.internic.net/rfc/rfc2046.txt>

     [MIME-REG] Freed, Klensin, Postel, "Multipurpose Internet Mail
     Extensions (MIME) Part Four: Registration Procedures", RFC 2048,
     Innosoft, MCI, ISI, November 1996.

         <ftp://ds.internic.net/rfc/rfc2048.txt>

     [REL-URL] Fielding, "Relative Uniform Resource Locators", RFC 1808,
     UC Irvine, June 1995.

         <ftp://ds.internic.net/rfc/rfc1808.txt>

     [UTF8] Yergeau, F. "UTF-8, a transformation format of Unicode and
     ISO 10646", RFC 2044, Alis Technologies, October 1996.

         <ftp://ds.internic.net/rfc/rfc2044.txt>


8.   Author's Address


     Chris Newman
     Innosoft International, Inc.
     1050 Lakes Drive
     West Covina, CA 91790 USA

     Email: chris.newman@innosoft.com



















Newman                                                          [Page 9]


Internet Draft       ACAP Media Type Dataset Class             July 1997


Appendix

A.   Attribute Index


       entry ......................................................    2
       mediatype.common.description ...............................    3
       mediatype.common.extension .................................    2
       mediatype.common.magicNumber.bin ...........................    3
       mediatype.common.securityRisk ..............................    3
       mediatype.common.textualNewlines ...........................    3
       mediatype.common.type ......................................    2
       mediatype.macOS.alwaysUseHelper ............................    5
       mediatype.macOS.creator.bin ................................    4
       mediatype.macOS.creatorName ................................    5
       mediatype.macOS.postProcess.bin ............................    4
       mediatype.macOS.postProcessName ............................    5
       mediatype.macOS.type.bin ...................................    4
       mediatype.unix.alwaysUseHelper .............................    7
       mediatype.unix.composer ....................................    6
       mediatype.unix.composerMIME ................................    6
       mediatype.unix.editor ......................................    6
       mediatype.unix.editorMIME ..................................    6
       mediatype.unix.output ......................................    7
       mediatype.unix.print .......................................    6
       mediatype.unix.printMIME ...................................    6
       mediatype.unix.viewer ......................................    5
       mediatype.unix.viewerMIME ..................................    6
       mediatype.win31.alwaysUseHelper ............................    8
       mediatype.win31.editor .....................................    7
       mediatype.win31.viewer .....................................    7
       mediatype.win32.alwaysUseHelper ............................    7
       mediatype.win32.editor .....................................    7
       mediatype.win32.viewer .....................................    7
       subdataset .................................................    2

















Newman                                                         [Page 10]