You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RFC2811.txt 41KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065
  1. Network Working Group C. Kalt
  2. Request for Comments: 2811 April 2000
  3. Updates: 1459
  4. Category: Informational
  5. Internet Relay Chat: Channel Management
  6. Status of this Memo
  7. This memo provides information for the Internet community. It does
  8. not specify an Internet standard of any kind. Distribution of this
  9. memo is unlimited.
  10. Copyright Notice
  11. Copyright (C) The Internet Society (2000). All Rights Reserved.
  12. Abstract
  13. One of the most notable characteristics of the IRC (Internet Relay
  14. Chat) protocol is to allow for users to be grouped in forums, called
  15. channels, providing a mean for multiple users to communicate
  16. together.
  17. There was originally a unique type of channels, but with the years,
  18. new types appeared either as a response to a need, or for
  19. experimental purposes.
  20. This document specifies how channels, their characteristics and
  21. properties are managed by IRC servers.
  22. Table of Contents
  23. 1. Introduction ............................................... 2
  24. 2. Channel Characteristics .................................... 3
  25. 2.1 Namespace .............................................. 3
  26. 2.2 Channel Scope .......................................... 3
  27. 2.3 Channel Properties ..................................... 4
  28. 2.4 Privileged Channel Members ............................. 4
  29. 2.4.1 Channel Operators ................................. 5
  30. 2.4.2 Channel Creator ................................... 5
  31. 3. Channel lifetime ........................................... 5
  32. 3.1 Standard channels ...................................... 5
  33. 3.2 Safe Channels .......................................... 6
  34. 4. Channel Modes .............................................. 7
  35. 4.1 Member Status .......................................... 7
  36. 4.1.1 "Channel Creator" Status .......................... 7
  37. Kalt Informational [Page 1]
  38. RFC 2811 Internet Relay Chat: Channel Management April 2000
  39. 4.1.2 Channel Operator Status ........................... 8
  40. 4.1.3 Voice Privilege ................................... 8
  41. 4.2 Channel Flags .......................................... 8
  42. 4.2.1 Anonymous Flag .................................... 8
  43. 4.2.2 Invite Only Flag .................................. 8
  44. 4.2.3 Moderated Channel Flag ............................ 9
  45. 4.2.4 No Messages To Channel From Clients On The Outside 9
  46. 4.2.5 Quiet Channel ..................................... 9
  47. 4.2.6 Private and Secret Channels ....................... 9
  48. 4.2.7 Server Reop Flag .................................. 10
  49. 4.2.8 Topic ............................................. 10
  50. 4.2.9 User Limit ........................................ 10
  51. 4.2.10 Channel Key ...................................... 10
  52. 4.3 Channel Access Control ................................. 10
  53. 4.3.1 Channel Ban and Exception ......................... 11
  54. 4.3.2 Channel Invitation ................................ 11
  55. 5. Current Implementations .................................... 11
  56. 5.1 Tracking Recently Used Channels ........................ 11
  57. 5.2 Safe Channels .......................................... 12
  58. 5.2.1 Channel Identifier ................................ 12
  59. 5.2.2 Channel Delay ..................................... 12
  60. 5.2.3 Abuse Window ...................................... 13
  61. 5.2.4 Preserving Sanity In The Name Space ............... 13
  62. 5.2.5 Server Reop Mechanism ............................. 13
  63. 6. Current problems ........................................... 14
  64. 6.1 Labels ................................................. 14
  65. 6.1.1 Channel Delay ..................................... 14
  66. 6.1.2 Safe Channels ..................................... 15
  67. 6.2 Mode Propagation Delays ................................ 15
  68. 6.3 Collisions And Channel Modes ........................... 15
  69. 6.4 Resource Exhaustion .................................... 16
  70. 7. Security Considerations .................................... 16
  71. 7.1 Access Control ......................................... 16
  72. 7.2 Channel Privacy ........................................ 16
  73. 7.3 Anonymity ............................................... 17
  74. 8. Current support and availability ........................... 17
  75. 9. Acknowledgements ........................................... 17
  76. 10. References ................................................ 18
  77. 11. Author's Address .......................................... 18
  78. 12. Full Copyright Statement ................................... 19
  79. 1. Introduction
  80. This document defines in detail on how channels are managed by the
  81. IRC servers and will be mostly useful to people working on
  82. implementing an IRC server.
  83. Kalt Informational [Page 2]
  84. RFC 2811 Internet Relay Chat: Channel Management April 2000
  85. While the concepts defined here are an important part of IRC, they
  86. remain non essential for implementing clients. While the trend seems
  87. to be towards more and more complex and "intelligent" clients which
  88. are able to take advantage of knowing the internal workings of
  89. channels to provide the users with a more friendly interface, simple
  90. clients can be implemented without reading this document.
  91. Many of the concepts defined here were designed with the IRC
  92. architecture [IRC-ARCH] in mind and mostly make sense in this
  93. context. However, many others could be applied to other
  94. architectures in order to provide forums for a conferencing system.
  95. Finally, it is to be noted that IRC users may find some of the
  96. following sections of interest, in particular sections 2 (Channel
  97. Characteristics) and 4 (Channel Modes).
  98. 2. Channel Characteristics
  99. A channel is a named group of one or more users which will all
  100. receive messages addressed to that channel. A channel is
  101. characterized by its name, properties and current members.
  102. 2.1 Namespace
  103. Channels names are strings (beginning with a '&', '#', '+' or '!'
  104. character) of length up to fifty (50) characters. Channel names are
  105. case insensitive.
  106. Apart from the the requirement that the first character being either
  107. '&', '#', '+' or '!' (hereafter called "channel prefix"). The only
  108. restriction on a channel name is that it SHALL NOT contain any spaces
  109. (' '), a control G (^G or ASCII 7), a comma (',' which is used as a
  110. list item separator by the protocol). Also, a colon (':') is used as
  111. a delimiter for the channel mask. The exact syntax of a channel name
  112. is defined in "IRC Server Protocol" [IRC-SERVER].
  113. The use of different prefixes effectively creates four (4) distinct
  114. namespaces for channel names. This is important because of the
  115. protocol limitations regarding namespaces (in general). See section
  116. 6.1 (Labels) for more details on these limitations.
  117. 2.2 Channel Scope
  118. A channel entity is known by one or more servers on the IRC network.
  119. A user can only become member of a channel known by the server to
  120. which the user is directly connected. The list of servers which know
  121. Kalt Informational [Page 3]
  122. RFC 2811 Internet Relay Chat: Channel Management April 2000
  123. of the existence of a particular channel MUST be a contiguous part of
  124. the IRC network, in order for the messages addressed to the channel
  125. to be sent to all the channel members.
  126. Channels with '&' as prefix are local to the server where they are
  127. created.
  128. Other channels are known to one (1) or more servers that are
  129. connected to the network, depending on the channel mask:
  130. If there is no channel mask, then the channel is known to all
  131. the servers.
  132. If there is a channel mask, then the channel MUST only be known
  133. to servers which has a local user on the channel, and to its
  134. neighbours if the mask matches both the local and neighbouring
  135. server names. Since other servers have absolutely no knowledge of
  136. the existence of such a channel, the area formed by the servers
  137. having a name matching the mask has to be contiguous for the
  138. channel to be known by all these servers. Channel masks are best
  139. used in conjunction with server hostmasking [IRC-SERVER].
  140. 2.3 Channel Properties
  141. Each channel has its own properties, which are defined by channel
  142. modes. Channel modes can be manipulated by the channel members. The
  143. modes affect the way servers manage the channels.
  144. Channels with '+' as prefix do not support channel modes. This means
  145. that all the modes are unset, with the exception of the 't' channel
  146. flag which is set.
  147. 2.4 Privileged Channel Members
  148. In order for the channel members to keep some control over a channel,
  149. and some kind of sanity, some channel members are privileged. Only
  150. these members are allowed to perform the following actions on the
  151. channel:
  152. INVITE - Invite a client to an invite-only channel (mode +i)
  153. KICK - Eject a client from the channel
  154. MODE - Change the channel's mode, as well as
  155. members' privileges
  156. PRIVMSG - Sending messages to the channel (mode +n, +m, +v)
  157. TOPIC - Change the channel topic in a mode +t channel
  158. Kalt Informational [Page 4]
  159. RFC 2811 Internet Relay Chat: Channel Management April 2000
  160. 2.4.1 Channel Operators
  161. The channel operators (also referred to as a "chop" or "chanop") on a
  162. given channel are considered to 'own' that channel. Ownership of a
  163. channel is shared among channel operators.
  164. Channel operators are identified by the '@' symbol next to their
  165. nickname whenever it is associated with a channel (i.e., replies to
  166. the NAMES, WHO and WHOIS commands).
  167. Since channels starting with the character '+' as prefix do not
  168. support channel modes, no member can therefore have the status of
  169. channel operator.
  170. 2.4.2 Channel Creator
  171. A user who creates a channel with the character '!' as prefix is
  172. identified as the "channel creator". Upon creation of the channel,
  173. this user is also given channel operator status.
  174. In recognition of this status, the channel creators are endowed with
  175. the ability to toggle certain modes of the channel which channel
  176. operators may not manipulate.
  177. A "channel creator" can be distinguished from a channel operator by
  178. issuing the proper MODE command. See the "IRC Client Protocol"
  179. [IRC-CLIENT] for more information on this topic.
  180. 3. Channel lifetime
  181. In regard to the lifetime of a channel, there are typically two
  182. groups of channels: standard channels which prefix is either '&', '#'
  183. or '+', and "safe channels" which prefix is '!'.
  184. 3.1 Standard channels
  185. These channels are created implicitly when the first user joins it,
  186. and cease to exist when the last user leaves it. While the channel
  187. exists, any client can reference the channel using the name of the
  188. channel.
  189. The user creating a channel automatically becomes channel operator
  190. with the notable exception of channels which name is prefixed by the
  191. character '+', see section 4 (Channel modes). See section 2.4.1
  192. (Channel Operators) for more details on this title.
  193. Kalt Informational [Page 5]
  194. RFC 2811 Internet Relay Chat: Channel Management April 2000
  195. In order to avoid the creation of duplicate channels (typically when
  196. the IRC network becomes disjoint because of a split between two
  197. servers), channel names SHOULD NOT be allowed to be reused by a user
  198. if a channel operator (See Section 2.4.1 (Channel Operators)) has
  199. recently left the channel because of a network split. If this
  200. happens, the channel name is temporarily unavailable. The duration
  201. while a channel remains unavailable should be tuned on a per IRC
  202. network basis. It is important to note that this prevents local
  203. users from creating a channel using the same name, but does not
  204. prevent the channel to be recreated by a remote user. The latter
  205. typically happens when the IRC network rejoins. Obviously, this
  206. mechanism only makes sense for channels which name begins with the
  207. character '#', but MAY be used for channels which name begins with
  208. the character '+'. This mechanism is commonly known as "Channel
  209. Delay".
  210. 3.2 Safe Channels
  211. Unlike other channels, "safe channels" are not implicitly created. A
  212. user wishing to create such a channel MUST request the creation by
  213. sending a special JOIN command to the server in which the channel
  214. identifier (then unknown) is replaced by the character '!'. The
  215. creation process for this type of channel is strictly controlled.
  216. The user only chooses part of the channel name (known as the channel
  217. "short name"), the server automatically prepends the user provided
  218. name with a channel identifier consisting of five (5) characters.
  219. The channel name resulting from the combination of these two elements
  220. is unique, making the channel safe from abuses based on network
  221. splits.
  222. The user who creates such a channel automatically becomes "channel
  223. creator". See section 2.4.2 (Channel Creator) for more details on
  224. this title.
  225. A server MUST NOT allow the creation of a new channel if another
  226. channel with the same short name exists; or if another channel with
  227. the same short name existed recently AND any of its member(s) left
  228. because of a network split. Such channel ceases to exist after last
  229. user leaves AND no other member recently left the channel because of
  230. a network split.
  231. Unlike the mechanism described in section 5.2.2 (Channel Delay), in
  232. this case, channel names do not become unavailable: these channels
  233. may continue to exist after the last user left. Only the user
  234. creating the channel becomes "channel creator", users joining an
  235. existing empty channel do not automatically become "channel creator"
  236. nor "channel operator".
  237. Kalt Informational [Page 6]
  238. RFC 2811 Internet Relay Chat: Channel Management April 2000
  239. To ensure the uniqueness of the channel names, the channel identifier
  240. created by the server MUST follow specific rules. For more details
  241. on this, see section 5.2.1 (Channel Identifier).
  242. 4. Channel Modes
  243. The various modes available for channels are as follows:
  244. O - give "channel creator" status;
  245. o - give/take channel operator privilege;
  246. v - give/take the voice privilege;
  247. a - toggle the anonymous channel flag;
  248. i - toggle the invite-only channel flag;
  249. m - toggle the moderated channel;
  250. n - toggle the no messages to channel from clients on the
  251. outside;
  252. q - toggle the quiet channel flag;
  253. p - toggle the private channel flag;
  254. s - toggle the secret channel flag;
  255. r - toggle the server reop channel flag;
  256. t - toggle the topic settable by channel operator only flag;
  257. k - set/remove the channel key (password);
  258. l - set/remove the user limit to channel;
  259. b - set/remove ban mask to keep users out;
  260. e - set/remove an exception mask to override a ban mask;
  261. I - set/remove an invitation mask to automatically override
  262. the invite-only flag;
  263. Unless mentioned otherwise below, all these modes can be manipulated
  264. by "channel operators" by using the MODE command defined in "IRC
  265. Client Protocol" [IRC-CLIENT].
  266. 4.1 Member Status
  267. The modes in this category take a channel member nickname as argument
  268. and affect the privileges given to this user.
  269. 4.1.1 "Channel Creator" Status
  270. The mode 'O' is only used in conjunction with "safe channels" and
  271. SHALL NOT be manipulated by users. Servers use it to give the user
  272. creating the channel the status of "channel creator".
  273. Kalt Informational [Page 7]
  274. RFC 2811 Internet Relay Chat: Channel Management April 2000
  275. 4.1.2 Channel Operator Status
  276. The mode 'o' is used to toggle the operator status of a channel
  277. member.
  278. 4.1.3 Voice Privilege
  279. The mode 'v' is used to give and take voice privilege to/from a
  280. channel member. Users with this privilege can talk on moderated
  281. channels. (See section 4.2.3 (Moderated Channel Flag).
  282. 4.2 Channel Flags
  283. The modes in this category are used to define properties which
  284. affects how channels operate.
  285. 4.2.1 Anonymous Flag
  286. The channel flag 'a' defines an anonymous channel. This means that
  287. when a message sent to the channel is sent by the server to users,
  288. and the origin is a user, then it MUST be masked. To mask the
  289. message, the origin is changed to "anonymous!anonymous@anonymous."
  290. (e.g., a user with the nickname "anonymous", the username "anonymous"
  291. and from a host called "anonymous."). Because of this, servers MUST
  292. forbid users from using the nickname "anonymous". Servers MUST also
  293. NOT send QUIT messages for users leaving such channels to the other
  294. channel members but generate a PART message instead.
  295. On channels with the character '&' as prefix, this flag MAY be
  296. toggled by channel operators, but on channels with the character '!'
  297. as prefix, this flag can be set (but SHALL NOT be unset) by the
  298. "channel creator" only. This flag MUST NOT be made available on
  299. other types of channels.
  300. Replies to the WHOIS, WHO and NAMES commands MUST NOT reveal the
  301. presence of other users on channels for which the anonymous flag is
  302. set.
  303. 4.2.2 Invite Only Flag
  304. When the channel flag 'i' is set, new members are only accepted if
  305. their mask matches Invite-list (See section 4.3.2) or they have been
  306. invited by a channel operator. This flag also restricts the usage of
  307. the INVITE command (See "IRC Client Protocol" [IRC-CLIENT]) to
  308. channel operators.
  309. Kalt Informational [Page 8]
  310. RFC 2811 Internet Relay Chat: Channel Management April 2000
  311. 4.2.3 Moderated Channel Flag
  312. The channel flag 'm' is used to control who may speak on a channel.
  313. When it is set, only channel operators, and members who have been
  314. given the voice privilege may send messages to the channel.
  315. This flag only affects users.
  316. 4.2.4 No Messages To Channel From Clients On The Outside
  317. When the channel flag 'n' is set, only channel members MAY send
  318. messages to the channel.
  319. This flag only affects users.
  320. 4.2.5 Quiet Channel
  321. The channel flag 'q' is for use by servers only. When set, it
  322. restricts the type of data sent to users about the channel
  323. operations: other user joins, parts and nick changes are not sent.
  324. From a user's point of view, the channel contains only one user.
  325. This is typically used to create special local channels on which the
  326. server sends notices related to its operations. This was used as a
  327. more efficient and flexible way to replace the user mode 's' defined
  328. in RFC 1459 [IRC].
  329. 4.2.6 Private and Secret Channels
  330. The channel flag 'p' is used to mark a channel "private" and the
  331. channel flag 's' to mark a channel "secret". Both properties are
  332. similar and conceal the existence of the channel from other users.
  333. This means that there is no way of getting this channel's name from
  334. the server without being a member. In other words, these channels
  335. MUST be omitted from replies to queries like the WHOIS command.
  336. When a channel is "secret", in addition to the restriction above, the
  337. server will act as if the channel does not exist for queries like the
  338. TOPIC, LIST, NAMES commands. Note that there is one exception to
  339. this rule: servers will correctly reply to the MODE command.
  340. Finally, secret channels are not accounted for in the reply to the
  341. LUSERS command (See "Internet Relay Chat: Client Protocol" [IRC-
  342. CLIENT]) when the <mask> parameter is specified.
  343. Kalt Informational [Page 9]
  344. RFC 2811 Internet Relay Chat: Channel Management April 2000
  345. The channel flags 'p' and 's' MUST NOT both be set at the same time.
  346. If a MODE message originating from a server sets the flag 'p' and the
  347. flag 's' is already set for the channel, the change is silently
  348. ignored. This should only happen during a split healing phase
  349. (mentioned in the "IRC Server Protocol" document [IRC-SERVER]).
  350. 4.2.7 Server Reop Flag
  351. The channel flag 'r' is only available on channels which name begins
  352. with the character '!' and MAY only be toggled by the "channel
  353. creator".
  354. This flag is used to prevent a channel from having no channel
  355. operator for an extended period of time. When this flag is set, any
  356. channel that has lost all its channel operators for longer than the
  357. "reop delay" period triggers a mechanism in servers to reop some or
  358. all of the channel inhabitants. This mechanism is described more in
  359. detail in section 5.2.4 (Channel Reop Mechanism).
  360. 4.2.8 Topic
  361. The channel flag 't' is used to restrict the usage of the TOPIC
  362. command to channel operators.
  363. 4.2.9 User Limit
  364. A user limit may be set on channels by using the channel flag 'l'.
  365. When the limit is reached, servers MUST forbid their local users to
  366. join the channel.
  367. The value of the limit MUST only be made available to the channel
  368. members in the reply sent by the server to a MODE query.
  369. 4.2.10 Channel Key
  370. When a channel key is set (by using the mode 'k'), servers MUST
  371. reject their local users request to join the channel unless this key
  372. is given.
  373. The channel key MUST only be made visible to the channel members in
  374. the reply sent by the server to a MODE query.
  375. 4.3 Channel Access Control
  376. The last category of modes is used to control access to the channel,
  377. they take a mask as argument.
  378. Kalt Informational [Page 10]
  379. RFC 2811 Internet Relay Chat: Channel Management April 2000
  380. In order to reduce the size of the global database for control access
  381. modes set for channels, servers MAY put a maximum limit on the number
  382. of such modes set for a particular channel. If such restriction is
  383. imposed, it MUST only affect user requests. The limit SHOULD be
  384. homogeneous on a per IRC network basis.
  385. 4.3.1 Channel Ban and Exception
  386. When a user requests to join a channel, his local server checks if
  387. the user's address matches any of the ban masks set for the channel.
  388. If a match is found, the user request is denied unless the address
  389. also matches an exception mask set for the channel.
  390. Servers MUST NOT allow a channel member who is banned from the
  391. channel to speak on the channel, unless this member is a channel
  392. operator or has voice privilege. (See Section 4.1.3 (Voice
  393. Privilege)).
  394. A user who is banned from a channel and who carries an invitation
  395. sent by a channel operator is allowed to join the channel.
  396. 4.3.2 Channel Invitation
  397. For channels which have the invite-only flag set (See Section 4.2.2
  398. (Invite Only Flag)), users whose address matches an invitation mask
  399. set for the channel are allowed to join the channel without any
  400. invitation.
  401. 5. Current Implementations
  402. The only current implementation of these rules as part of the IRC
  403. protocol is the IRC server, version 2.10.
  404. The rest of this section deals with issues that are mostly of
  405. importance to those who wish to implement a server but some parts may
  406. also be of interest for client writers.
  407. 5.1 Tracking Recently Used Channels
  408. This mechanism is commonly known as "Channel Delay" and generally
  409. only applies to channels which names is prefixed with the character
  410. '#' (See Section 3.1 "Standard channels").
  411. When a network split occurs, servers SHOULD keep track of which
  412. channels lost a "channel operator" as the result of the break. These
  413. channels are then in a special state which lasts for a certain period
  414. of time. In this particular state, the channels cannot cease to
  415. Kalt Informational [Page 11]
  416. RFC 2811 Internet Relay Chat: Channel Management April 2000
  417. exist. If all the channel members leave the channel, the channel
  418. becomes unavailable: the server local clients cannot join the channel
  419. as long as it is empty.
  420. Once a channel is unavailable, it will become available again either
  421. because a remote user has joined the channel (most likely because the
  422. network is healing), or because the delay period has expired (in
  423. which case the channel ceases to exist and may be re-created).
  424. The duration for which a channel death is delayed SHOULD be set
  425. considering many factors among which are the size (user wise) of the
  426. IRC network, and the usual duration of network splits. It SHOULD be
  427. uniform on all servers for a given IRC network.
  428. 5.2 Safe Channels
  429. This document introduces the notion of "safe channels". These
  430. channels have a name prefixed with the character '!' and great effort
  431. is made to avoid collisions in this name space. Collisions are not
  432. impossible, however they are very unlikely.
  433. 5.2.1 Channel Identifier
  434. The channel identifier is a function of the time. The current time
  435. (as defined under UNIX by the number of seconds elapsed since
  436. 00:00:00 GMT, January 1, 1970) is converted in a string of five (5)
  437. characters using the following base:
  438. "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" (each character has a decimal
  439. value starting from 0 for 'A' to 35 for '0').
  440. The channel identifier therefore has a periodicity of 36^5 seconds
  441. (about 700 days).
  442. 5.2.2 Channel Delay
  443. These channels MUST be subject to the "channel delay" mechanism
  444. described in section 5.1 (Channel Delay). However, the mechanism is
  445. slightly adapted to fit better.
  446. Servers MUST keep track of all such channels which lose members as
  447. the result of a network split, no matter whether the user is a
  448. "channel operator" or not.
  449. However, these channels do NOT ever become unavailable, it is always
  450. possible to join them even when they are empty.
  451. Kalt Informational [Page 12]
  452. RFC 2811 Internet Relay Chat: Channel Management April 2000
  453. 5.2.3 Abuse Window
  454. Because the periodicity is so long, attacks on a particular channel
  455. (name) may only occur once in a very long while. However, with luck
  456. and patience, it is still possible for a user to cause a channel
  457. collision. In order to avoid this, servers MUST "look in the future"
  458. and keep a list of channel names which identifier is about to be used
  459. (in the coming few days for example). Such list should remain small,
  460. not be a burden for servers to maintain and be used to avoid channel
  461. collisions by preventing the re-creation of such channel for a longer
  462. period of time than channel delay does.
  463. Eventually a server MAY choose to extend this procedure to forbid
  464. creation of channels with the same shortname only (then ignoring the
  465. channel identifier).
  466. 5.2.4 Preserving Sanity In The Name Space
  467. The combination of the mechanisms described in sections 5.2.2 and
  468. 5.2.3 makes it quite difficult for a user to create a channel
  469. collision. However, another type of abuse consists of creating many
  470. channels having the same shortname, but different identifiers. To
  471. prevent this from happening, servers MUST forbid the creation of a
  472. new channel which has the same shortname of a channel currently
  473. existing.
  474. 5.2.5 Server Reop Mechanism
  475. When a channel has been opless for longer than the "reop delay"
  476. period and has the channel flag 'r' set (See Section 4.2.7 (Server
  477. Reop Flag)), IRC servers are responsible for giving the channel
  478. operator status randomly to some of the members.
  479. The exact logic used for this mechanism by the current implementation
  480. is described below. Servers MAY use a different logic, but that it
  481. is strongly RECOMMENDED that all servers use the same logic on a
  482. particular IRC network to maintain coherence as well as fairness.
  483. For the same reason, the "reop delay" SHOULD be uniform on all
  484. servers for a given IRC network. As for the "channel delay", the
  485. value of the "reop delay" SHOULD be set considering many factors
  486. among which are the size (user wise) of the IRC network, and the
  487. usual duration of network splits.
  488. a) the reop mechanism is triggered after a random time following the
  489. expiration of the "reop delay". This should limit the eventuality
  490. of the mechanism being triggered at the same time (for the same
  491. channel) on two separate servers.
  492. Kalt Informational [Page 13]
  493. RFC 2811 Internet Relay Chat: Channel Management April 2000
  494. b) If the channel is small (five (5) users or less), and the "channel
  495. delay" for this channel has expired,
  496. Then reop all channel members if at least one member is local to
  497. the server.
  498. c) If the channel is small (five (5) users or less), and the "channel
  499. delay" for this channel has expired, and the "reop delay" has
  500. expired for longer than its value,
  501. Then reop all channel members.
  502. d) For other cases, reop at most one member on the channel, based on
  503. some method build into the server. If you don't reop a member, the
  504. method should be such that another server will probably op
  505. someone. The method SHOULD be the same over the whole network. A
  506. good heuristic could be just random reop.
  507. (The current implementation actually tries to choose a member
  508. local to the server who has not been idle for too long, eventually
  509. postponing action, therefore letting other servers have a chance
  510. to find a "not too idle" member. This is over complicated due to
  511. the fact that servers only know the "idle" time of their local
  512. users)
  513. 6. Current problems
  514. There are a number of recognized problems with the way IRC channels
  515. are managed. Some of these can be directly attributed to the rules
  516. defined in this document, while others are the result of the
  517. underlying "IRC Server Protocol" [IRC-SERVER]. Although derived from
  518. RFC 1459 [IRC], this document introduces several novelties in an
  519. attempt to solve some of the known problems.
  520. 6.1 Labels
  521. This document defines one of the many labels used by the IRC
  522. protocol. Although there are several distinct namespaces (based on
  523. the channel name prefix), duplicates inside each of these are not
  524. allowed. Currently, it is possible for users on different servers to
  525. pick the label which may result in collisions (with the exception of
  526. channels known to only one server where they can be averted).
  527. 6.1.1 Channel Delay
  528. The channel delay mechanism described in section 5.1 (Tracking
  529. Recently Used Channels) and used for channels prefixed with the
  530. character '#' is a simple attempt at preventing collisions from
  531. happening. Experience has shown that, under normal circumstances, it
  532. Kalt Informational [Page 14]
  533. RFC 2811 Internet Relay Chat: Channel Management April 2000
  534. is very efficient; however, it obviously has severe limitations
  535. keeping it from being an adequate solution to the problem discussed
  536. here.
  537. 6.1.2 Safe Channels
  538. "Safe channels" described in section 3.2 (Safe Channels) are a better
  539. way to prevent collisions from happening as it prevents users from
  540. having total control over the label they choose. The obvious
  541. drawback for such labels is that they are not user friendly.
  542. However, it is fairly trivial for a client program to improve on
  543. this.
  544. 6.2 Mode Propagation Delays
  545. Because of network delays induced by the network, and because each
  546. server on the path is REQUIRED to check the validity of mode changes
  547. (e.g., user exists and has the right privileges), it is not unusual
  548. for a MODE message to only affect part of the network, often creating
  549. a discrepancy between servers on the current state of a channel.
  550. While this may seem easy to fix (by having only the original server
  551. check the validity of mode changes), it was decided not to do so for
  552. various reasons. One concern is that servers cannot trust each
  553. other, and that a misbehaving servers can easily be detected. This
  554. way of doing so also stops wave effects on channels which are out of
  555. synch when mode changes are issued from different directions.
  556. 6.3 Collisions And Channel Modes
  557. The "Internet Relay Chat: Server Protocol" document [IRC-SERVER]
  558. describes how channel data is exchanged when two servers connect to
  559. each other. Channel collisions (either legitimate or not) are
  560. treated as inclusive events, meaning that the resulting channel has
  561. for members all the users who are members of the channel on either
  562. server prior to the connection.
  563. Similarly, each server sends the channel modes to the other one.
  564. Therefore, each server also receives these channel modes. There are
  565. three types of modes for a given channel: flags, masks, and data.
  566. The first two types are easy to deal with as they are either set or
  567. unset. If such a mode is set on one server, it MUST be set on the
  568. other server as a result of the connection.
  569. Kalt Informational [Page 15]
  570. RFC 2811 Internet Relay Chat: Channel Management April 2000
  571. As topics are not sent as part of this exchange, they are not a
  572. problem. However, channel modes 'l' and 'k' are exchanged, and if
  573. they are set on both servers prior to the connection, there is no
  574. mechanism to decide which of the two values takes precedence. It is
  575. left up to the users to fix the resulting discrepancy.
  576. 6.4 Resource Exhaustion
  577. The mode based on masks defined in section 4.3 make the IRC servers
  578. (and network) vulnerable to a simple abuse of the system: a single
  579. channel operator can set as many different masks as possible on a
  580. particular channel. This can easily cause the server to waste
  581. memory, as well as network bandwidth (since the info is propagated to
  582. other servers). For this reason it is RECOMMENDED that a limit be
  583. put on the number of such masks per channels as mentioned in section
  584. 4.3.
  585. Moreover, more complex mechanisms MAY be used to avoid having
  586. redundant masks set for the same channel.
  587. 7. Security Considerations
  588. 7.1 Access Control
  589. One of the main ways to control access to a channel is to use masks
  590. which are based on the username and hostname of the user connections.
  591. This mechanism can only be efficient and safe if the IRC servers have
  592. an accurate way of authenticating user connections, and if users
  593. cannot easily get around it. While it is in theory possible to
  594. implement such a strict authentication mechanism, most IRC networks
  595. (especially public networks) do not have anything like this in place
  596. and provide little guaranty about the accuracy of the username and
  597. hostname for a particular client connection.
  598. Another way to control access is to use a channel key, but since this
  599. key is sent in plaintext, it is vulnerable to traditional man in the
  600. middle attacks.
  601. 7.2 Channel Privacy
  602. Because channel collisions are treated as inclusive events (See
  603. Section 6.3), it is possible for users to join a channel overriding
  604. its access control settings. This method has long been used by
  605. individuals to "take over" channels by "illegitimately" gaining
  606. channel operator status on the channel. The same method can be used
  607. to find out the exact list of members of a channel, as well as to
  608. eventually receive some of the messages sent to the channel.
  609. Kalt Informational [Page 16]
  610. RFC 2811 Internet Relay Chat: Channel Management April 2000
  611. 7.3 Anonymity
  612. The anonymous channel flag (See Section 4.2.1) can be used to render
  613. all users on such channel "anonymous" by presenting all messages to
  614. the channel as originating from a pseudo user which nickname is
  615. "anonymous". This is done at the client-server level, and no
  616. anonymity is provided at the server-server level.
  617. It should be obvious to readers, that the level of anonymity offered
  618. is quite poor and insecure, and that clients SHOULD display strong
  619. warnings for users joining such channels.
  620. 8. Current support and availability
  621. Mailing lists for IRC related discussion:
  622. General discussion: ircd-users@irc.org
  623. Protocol development: ircd-dev@irc.org
  624. Software implementations:
  625. ftp://ftp.irc.org/irc/server
  626. ftp://ftp.funet.fi/pub/unix/irc
  627. ftp://coombs.anu.edu.au/pub/irc
  628. Newsgroup: alt.irc
  629. 9. Acknowledgements
  630. Parts of this document were copied from the RFC 1459 [IRC] which
  631. first formally documented the IRC Protocol. It has also benefited
  632. from many rounds of review and comments. In particular, the
  633. following people have made significant contributions to this
  634. document:
  635. Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa
  636. Ruokonen, Magnus Tjernstrom, Stefan Zehl.
  637. Kalt Informational [Page 17]
  638. RFC 2811 Internet Relay Chat: Channel Management April 2000
  639. 10. References
  640. [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
  641. Requirement Levels", BCP 14, RFC 2119, March 1997.
  642. [IRC] Oikarinen, J. and D. Reed, "Internet Relay Chat
  643. Protocol", RFC 1459, May 1993.
  644. [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
  645. April 2000.
  646. [IRC-CLIENT] Kalt, C., "Internet Relay Chat: Client Protocol", RFC
  647. 2812, April 2000.
  648. [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
  649. 2813, April 2000.
  650. 11. Author's Address
  651. Christophe Kalt
  652. 99 Teaneck Rd, Apt #117
  653. Ridgefield Park, NJ 07660
  654. USA
  655. EMail: kalt@stealth.net
  656. Kalt Informational [Page 18]
  657. RFC 2811 Internet Relay Chat: Channel Management April 2000
  658. 12. Full Copyright Statement
  659. Copyright (C) The Internet Society (2000). All Rights Reserved.
  660. This document and translations of it may be copied and furnished to
  661. others, and derivative works that comment on or otherwise explain it
  662. or assist in its implementation may be prepared, copied, published
  663. and distributed, in whole or in part, without restriction of any
  664. kind, provided that the above copyright notice and this paragraph are
  665. included on all such copies and derivative works. However, this
  666. document itself may not be modified in any way, such as by removing
  667. the copyright notice or references to the Internet Society or other
  668. Internet organizations, except as needed for the purpose of
  669. developing Internet standards in which case the procedures for
  670. copyrights defined in the Internet Standards process must be
  671. followed, or as required to translate it into languages other than
  672. English.
  673. The limited permissions granted above are perpetual and will not be
  674. revoked by the Internet Society or its successors or assigns.
  675. This document and the information contained herein is provided on an
  676. "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  677. TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  678. BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  679. HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  680. MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  681. Acknowledgement
  682. Funding for the RFC Editor function is currently provided by the
  683. Internet Society.
  684. Kalt Informational [Page 19]