Internet Relay Chat
A C++ project to reproduce the behavior of an IRC server (ft. iCARUS)
Report Bug
·
Request Feature
Table of Contents
This project aims to reproduce the behavior of a real IRC server in C++ 98. It's a group project i made it with iCARUS. It requires us to develop an IRC server that's conform to the IRC standards, so we can connect to it and test it with a real IRC client. We don't have to develop a client, but we chose to use Weechat as our reference client.
Specifically, we have to:
- Manage many clients without being stucked or blocked
- Communicate with the clients using TCP/IP protocol
- It must implement the following features:
- Being able to authenticate with a nickname, a username and a realname
- Joining a channel
- Sending and receiving private messages
- Sending and receiving messages to a channel
- Having channels operators and basic users
- Having all operators specifics commands
- exit without any options
As an IRC server, we support the following commands:
NICK
- Change nicknameUSER
- Set username and realnamePASS
- Submit password on connectQUIT
- Quit the serverJOIN
- Join a channelPART
- Leave a channelPRIVMSG
- Send a messageTOPIC
- Set or check a channel topicMODE
- Set or check a user or channel modeKICK
- Kick a user from a channelINVITE
- Invite a user to a channelPING
- Ping the serverNOTICE
- Send a notice
And the i
channel mode, which allows only invited users to join the channel
We added some bonuses to our server :
- The
t
channel mode, which allows only operators to change the topic of the channel - The ability to send and receive files using the
DCC
command - Our fantastic bot, Ratatouille-b0t, who will help you to use our server by answer to your
[...] quoi
messages byfeur
and some others originals surprises !
Because it's a simple C++ project, there isn't much to say here
Having a C++ compiler like c++
-
Clone the repo
git clone https://github.com/Link-Wolf/ft_irc.git
-
Compile the project
cd ft_irc; make
-
Execute it
./ircserv [port] [password]
Use our IRC server as you'd use a real one, but please be kind to him and remember he doesn't implement everything !
- Add bonus features
- Add back to top links
See the open issues for a full list of proposed features (and known issues).
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Mail : xxxxxxx@student.42mulhouse.fr
Project Link: https://github.com/Link-Wolf/ft_irc