DICE IRC Interface : the differences from RFC 1459/2812
The priority on what remains or is deprecated in the DICE IRC service is arranged to give the DICE the highest security while maintaining high performance.
As the result, unreasonablly resource-consuming commands that can be exploited to inflict
DoS attacks are removed. Attackers shouldn't get information
on what's going on in the server side. User/channel privacy is highly valued
as a part of server-wide security.
that can be substituted by other commands are also removed to present a simple
and efficient interface.
The IRC RFC doesn't clearly separate the protocol design from the original implementation (IRCnet IRCd). Most of the commands dependent on wild-card match on object property strings are removed in the DICE IRC to make it free from low performance/scalability in a certain implementation.
* A command string must be in 7 bytes
* A prefix in a message issued by a client is ignored - an attached prefix is simply interpreted as a part of a command (and eventually the entire message will be ignored too)
* Removed oper/service/server commands - OPER, SERVICE, SQUIT, LINKS, CONNECT, TRACE, ADMIN, SERVLIST, SQUERY, ERROR, REHASH, DIE, RESTART
* Removed unnecessary commands: STATS, NAMES, SUMMON, USERS, USERHOST, WHOWAS
* Removed user modes other than +/-a - if the nickname parameter is different from the user who issued a command, it's interpreted as a channel mode command
* The BNF for a nick name is modified; a digit / hyphen is allowed even at the beginning of a nick.
* Only '#'-prefixed channel is implemented. All channel modes can be set to '#'-prefixed channels.
* Some channel modes are deprecated; 'n' (no external message) and 't' (topic changeable only by operators) are now persistent and can't be toggled off. The 'q' (quiet) and 'p' (private) modes are removed.
* The available channel modes are:
'c' (require channel membership)
'i' (invite only)
'k' (require key)
'm' (moderated - +o & +v can speak)
'r' (require account registration)
'z' (SSL-user only)
For ban mask control,
'b' (ban mask)
'e' (ban exempt)
* In registered channels, only operators with the MODE privilege can change their channel mode.
* Removed invite mask and its listing by MODE
* Removed topic check from the TOPIC command and replaced it with the topic-clear command
* The WHO command works only when the argument is a channel name
* RPL_WHOREPLY - administrator status is not revealed public
* Removed RPL_WHOISOPERATOR
* Removed idle time in WHOIS reply (always zero)
* /invite lifespan is shortened; invitation expires when an invited client parts (or is kicked out of) an invited channel. Instead users should use mode "+r" (require membership) when invitation has to last longer. "/invite" is limited to a temporary one-way ticket and not more than the compatibility with the old "+i".
* The maximum size of a message parameter list is REDUCED TO 10 (15 in RFC).
* ','(0x2c) is allowed to be in a channel name
* The longest nick is 32 bytes
* New channel user mode: +d (silent user) is mutually exclusive to +o/+v
* +b adds +d to ban-mask-applicable users in a channel, and +d can be toggled off (-d) separately.
* LIST with a parameter of a lesser/greater operator: people (</>num), channel creation time (C</>minute), topic-set time (T</>minute)
* The /shell command is available to control the IRC-User Shell