This is a group-project for 42Heilbronn school's curriculum.
It is about implementing a IRC-server, designed to handle multiple clients without hanging and uses non-blocking I/O operations, following the Internet Relay Chat Protocol.
- C++ 98 compiler
- An IRC client (KvIRC recommended)
To compile and run the server, execute the following commands:
make
./ircserv <port> <password>
port
: The port number on which your IRC server will be listening for incoming IRC connections.password
: The connection password required by any IRC client trying to connect to your server.
- Authenticate, set a nickname, and a username
- Join a channel
- Send and receive private messages
- Forward messages from one client to all other clients in the channel
- Support for operators and regular users
the right syntax for the listed commands is explained in the protocol.
PASS
: Requires passwordNICK
: Set nicknameUSER
: Set Username
NICK
: Set nicknamePRIVMSG
: Sends a message to recipientNOTICE
: Sends a message to recipient (slightly different behavior)LIST
: Lists all the channelsWHO
: Lists all the users in a channelTOPIC
: Show the topic of a channelJOIN
: Join a channelPART
: Leave a channelQUIT
: Leave the serverSHOWTIME BOT
: Activates the bot
KICK
: Eject a client from the channelINVITE
: Invite a client to a channelTOPIC
: Change or view the channel topicMODE
: Change the channel's modei
: Set/remove Invite-only channelt
: Set/remove the restrictions of the TOPIC command to channel operatorsk
: Set/remove the channel key (password)o
: Give/take channel operator privilegel
: Set/remove the user limit to the channel
OPER
: Become server operator with right passwordGLOBOPS
: Send a message to all server operatorsKILL
: Remove a user from the server
- The server must be capable of handling multiple clients simultaneously and never hang.
- Forking is not allowed.
- All I/O operations must be non-blocking.
- Communication between the client and server must be done via TCP/IP (v4 or v6).