This project is an IRC (Internet Relay Chat) server developed from the ground up using C++. It simulates a fully functioning IRC system where users can connect, join channels, communicate, and manage access privileges.
This was a group project where our efforts were split into two major sections:
- Channel Creation: Implemented functionality to create channels and manage client memberships.
- Commands:
KICK
– Remove clients from a channel.INVITE
– Send invites to clients to join a specific channel.TOPIC
– Set or view the current topic of the channel.MODE
– Adjust the mode of channels with specific options:i
– Toggle invite-only access.t
– Restrict topic changes to operators.k
– Manage channel keys (passwords).o
– Assign or remove operator privileges.l
– Set user limits for the channel.
- Core IRC Commands:
JOIN
– Join a specific channel.PART
– Leave a channel.PRIVMSG
– Send a private message to a client or a channel.QUIT
– Disconnect from the server.- User Authentication:
PASS
– Provide a password to connect to the server.NICK
– Set or change the nickname of a client.USER
– Register a username and real name for the connection.
- Built the underlying server architecture.
- Managed socket creation, client connection handling, and communication protocols.
- Multi-channel support
- Client-to-client messaging
- Real-time channel and user management
- Full implementation of IRC commands including user authentication
- C++
- Socket programming
- Clone the repository:
git clone https://github.com/your-username/irc-server-project.git
- Navigate to the project directory:
cd ft_irc
- Compile and run the server:
make ./ircserv port pass
You can use any IRC client (such as LimeChat) to connect to the server:
- Open your IRC client.
- Enter the server address and port.
If you'd like to contribute or suggest improvements, feel free to submit a pull request or open an issue.
This project was a collaboration between:
[FREDRUKUNDO's GitHub] (https://github.com/fredrukundo)
[FRUIT-DU-DEMON's GitHub] (https://github.com/FRUIT-DU-DEMON)