A small Internet Relay Chat (IRC) server made in C++.
This project has been archived in the state it was in at the time of evaluation.
Clone this repository and cd
into it. To build, use make
.
To launch the server:
./ircserv <port> <password>
This project was developed for the IRSSI client. After launching irssi
, run the following command:
/connect localhost <server_port> <server_password>
Alternatively, connect to the server using nc
, netcat
or ncat
, whichever one has the -C
or --crlf
options to enable CRLF for EOL sequence: the IRC protocol specifies that messages are only valid if they end with \r\n
.
nc -C localhost <server_port>
Then, you can input your IRC commands. To properly register on the server, use the following commands:
PASS <server_password>
USER <user> <mode(unused)> <host(unused)> <realname>
NICK <nickname>
ADMIN
: Displays information about the administrator of the server.INFO
: Displays information about the server.INVITE <nickname> <channel_name>
: Invites a user to a channel.JOIN <channel_name>
: Joins an existing channel or creates one. If0
is specified as the channel name, removes the user from all channels.KICK <nickname> <channel_name>
: Kicks a user from a channel (this is a channel operator command)LIST
: Lists all channels on the server.MODE <channel_name> <mode(s)>
: Sets/removes channel modes. Implemented channel modes:i
: set/remove invite-only mode.k
: set/remove the channel key (password)l
: set/remove a channel's user limito
: give/take channel operator privilegest
: set/remove the restrictions of the TOPIC command to channel operators
NAMES
: lists all of the nicknames on the server.NICK <nickname>
: sets the user's nickname.PART <channel_name> <message>
: removes user from channel(s) and notifies the other users in the channel.PASS <password>
: Used for registration to the server. The client must supply the server password as part of the registration process.PING
: Used to test the presence of an active client.PONG
: Used to reply to aPING
message.PRIVMSG <nickname_or_channel_name> <message>
: sends a message to the specified user or channel.QUIT <message>
: Removes the user from the server and notifies other users in the channels the quitting user was in.SUMMON
: Not implemented.TOPIC <channel_name> <message>
: sets message as the channel topic.USER <user> <mode(unused)> <host(unused)> <realname>
: sets a new user's information during registration.USERS
: Not implemented.VERSION
: Displays the server version.