Network Working Group D. Meglio Internet-Draft UnrealIRCd Expires: February 20, 2006 August 19, 2005 Simple Extension to the IRC Protocol for Pre-Connection Usermode Setting draft-meglio-irc-preconn-umodes-00 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 February 20, 2006. Copyright Notice Copyright (C) The Internet Society (2005). Abstract RFC2812 introduced the ability to set certain usermodes before connection has occurred via a simple extension to the USER command. However, this implementation is believed to be excessively limiting. The RFC2812 implementation only allows a limited number of modes (+i and +w) to be set. Modern IRC servers provide many more modes and a method is necessary to set these modes at the pre-connection stage. Therefore, this specification introduces a method to allow users to set arbitrary usermodes at the pre-connection stage while maintaining Meglio Expires February 20, 2006 [Page 1] Internet-Draft Pre-Conn Umode August 2005 backward compatibility with RFC2812. Requirements Language 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 RFC 2119 [RFC2119]. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. USER Message Extension . . . . . . . . . . . . . . . . . . . 4 3. Security Considerations . . . . . . . . . . . . . . . . . . 5 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . 6 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 6.1. Normative References . . . . . . . . . . . . . . . . . . . . 8 6.2. Informative References . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . 9 Intellectual Property and Copyright Statements . . . . . . . 10 Meglio Expires February 20, 2006 [Page 2] Internet-Draft Pre-Conn Umode August 2005 1. Introduction The method defined in RFC2812 for specifying usermodes in the USER command is limited and flawed. To begin with, it violates a significant rule of programming practice: external interfaces should not rely on internal implementations. RFC2812 states that the mode parameter of the USER command is a bitflag value with each bit representing a specific mode. This indicates that the client must have knowledge of the internal workings of the server. This should not be the case. It is quite possible that a particular IRC implementation has decided to implement modes in a manner that does not rely on bitflags. Secondly, it is limited to only the +i and +w modes. While this may be fine for servers that strictly conform to RFC2812, the original IRC specification, RFC1459, states that additional usermodes may be added (See RFC1459 Section 4.2.3.2 [RFC1459]). Hence, to support these new modes, a more robust method of pre-connection mode setting is necessary. Meglio Expires February 20, 2006 [Page 3] Internet-Draft Pre-Conn Umode August 2005 2. USER Message Extension As defined in RFC2812 Section 3.1.3 [RFC2812], the syntax for the USER message is as follows: USER SP SP SP SP As previously stated, the parameter is a bitflag. The value of this flag must be an integer (bitflag) with bits 2 and 3 being significant. This extension modifies the mode parameter to the following as defined in ABNF Syntax [RFC2234]: mode = "4"/"8"/"12" ; RFC2812 style mode setting mode /= "+" modecharacters ; Extended style mode setting modecharacters ; See RFC1459 Section 4.2.3.2 ; and RFC2812 Section 3.1.5 With the latter definition of mode, any arbitrary mode may be set. In order to determine whether the modes were set successfully, after the connection sequences has been completed, the user SHOULD issue a MODE command to determine the modes that are currently enabled. See the Security Considerations for information on ensuring the security of this extension. Examples: USER foo 8 unused :My Name is Foo ; Using the RFC2812 style to ; set +i USER foo +i unused :My Name is Foo ; Using the new style mode ; parameter to do the same This allows new modes to be added to the IRC protocol with the ability to be set in the pre-connection phase. Meglio Expires February 20, 2006 [Page 4] Internet-Draft Pre-Conn Umode August 2005 3. Security Considerations Care must be taken by the implementors to ensure that only modes that a user should have access to set are settable. For example, if a user attempts to specify the +o usermode, the server MUST ignore this as it could be a potential security breach otherwise. For the most part, the same security practices in place for post-connection mode setting should be used for pre-connection mode setting. Meglio Expires February 20, 2006 [Page 5] Internet-Draft Pre-Conn Umode August 2005 4. IANA Considerations This document has no actions for IANA. Meglio Expires February 20, 2006 [Page 6] Internet-Draft Pre-Conn Umode August 2005 5. Acknowledgements I would like to take the time to acknowledge the hard work and dedication of all of those people who have spent countless hours making IRC the feature rich communication medium that it is today and who receive little or nothing in return. Meglio Expires February 20, 2006 [Page 7] Internet-Draft Pre-Conn Umode August 2005 6. References 6.1. Normative References [RFC1459] Oikarinen, J. and D. Reed, "Internet Relay Chat Protocol", RFC 1459, May 1993. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. [RFC2812] Kalt, C., "Internet Relay Chat: Client Protocol", RFC 2812, April 2000. 6.2. Informative References [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June 1999. Meglio Expires February 20, 2006 [Page 8] Internet-Draft Pre-Conn Umode August 2005 Author's Address Dominick Meglio UnrealIRCd Email: dmeglio@codemastr.com Meglio Expires February 20, 2006 [Page 9] Internet-Draft Pre-Conn Umode August 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. Meglio Expires February 20, 2006 [Page 10]