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
MOTD
command.You do not need to pass the “Robustness” tests, and they will not contribute to your score.
Do not implement the
TOPIC
command. You also do not need to support theRPL_TOPIC
reply 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_operator
flag 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
MODE
command you have to support is the following:MODE <channel> <mode> <nick>
Where
<mode>
can only be-o
and+o
. You must support repliesERR_NOSUCHCHANNEL
,ERR_CHANOPRIVSNEEDED
,ERR_UNKNOWNMODE
, andERR_USERNOTINCHANNEL
You must support the
OPER
command. 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
AWAY
command.
Do not implement the
NAMES
command. Note that you still need to send theRPL_NAMREPLY
replies after aJOIN
, but you can implement that directly in your implementation ofJOIN
.Do not implement the
WHO
command.