Assignment 4: Abridged version of Assignments 2 and 3¶
As an alternative to doing Assignments 2 and 3, you can do an abridged version of those assignments that will still implement enough of the functionality required to move on to Assignment 5.
In this assignment, you should follow the instructions provided in Assignments 2 and 3, with the following modifications:
Do not implement the
MOTDcommand.You do not need to pass the “Robustness” tests, and they will not contribute to your score.
Do not implement the
TOPICcommand. You also do not need to support theRPL_TOPICreply in other commands.You will implement a greatly simplified version of “User and channel modes”. More specifically:
You only need to support the user operator mode and the channel operator mode. This means you do not need to implement a general-purpose mechanism for keeping track of modes in users, channels, and in channel memberships. You are allowed to have some sort of
is_irc_operatorflag to keep track of whether a user is an IRC operator or not, and you are allowed to associate some sort of “list of users who are operators in this channel” to keep track of who the channel operators are.The only form of the
MODEcommand you have to support is the following:MODE <channel> <mode> <nick>
Where
<mode>can only be-oand+o. You must support repliesERR_NOSUCHCHANNEL,ERR_CHANOPRIVSNEEDED,ERR_UNKNOWNMODE, andERR_USERNOTINCHANNELYou must support the
OPERcommand. Once a user becomes an IRC Operator, you can assume they cannot lose that status (that means you do not need to support the commandMODE <nick> -o)You do not need to implement the
AWAYcommand.
Do not implement the
NAMEScommand. Note that you still need to send theRPL_NAMREPLYreplies after aJOIN, but you can implement that directly in your implementation ofJOIN.Do not implement the
WHOcommand.