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//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 "%{}" is replaced by the media type parameter with name . 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. [IMAIL] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, University of Delaware, August 1982. [IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4rev1", RFC 2060, University of Washington, December 1996. [KEYWORDS] Bradner, "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, Harvard University, March 1997. [MAILCAP] Borenstein, "A User Agent Configuration Mechanism For Multimedia Mail Format Information", RFC 1524, Bellcore, September 1993. [MIME-IMB] Freed, Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, Innosoft, First Virtual, November 1996. 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. [MIME-REG] Freed, Klensin, Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC 2048, Innosoft, MCI, ISI, November 1996. [REL-URL] Fielding, "Relative Uniform Resource Locators", RFC 1808, UC Irvine, June 1995. [UTF8] Yergeau, F. "UTF-8, a transformation format of Unicode and ISO 10646", RFC 2044, Alis Technologies, October 1996. 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]