Skip to content

Latest commit

 

History

History
81 lines (65 loc) · 10 KB

readme.md

File metadata and controls

81 lines (65 loc) · 10 KB

ft_irc

My own Internet Relay Chat server






About

This project was carried out as part of the School 42 Common Core. The aim of this project is to discover the IRC protocol and to create our own IRC server using c++98.

Authors

Author GitHub profile
Samuel Vanmeenen Bachelard (svanmeen) @Lyptis
Camille Bernot (cbernot) @RhesusP

Grade : 125/100 ✅✨

Subject requirements

  • Take a port and a password as parameters.
  • The server must handle several clients at the same time without being blocked.
  • Multi-threading is not allowed.
  • Server must use only one poll
  • Communication between the server and clients must be done using TCP/IP sockets.
  • User must be able to set a nickname and a username, join a channel, send and receive messages (public or private).
  • Server must be able to handle several channels.
  • Regular users and channel operators must be implemented.
  • The following commands must be implemented : KICK, INVITE, TOPIC and MODE (with modes i, t, k, o and l).
  • Server must be able to receive partial messages.

Commands implemented

Command Description
PASS Set a connection password to begin the registration process
USER Specify a username and realname of a new user during registration process
NICK Set the user a nickname (or change the previous one)
MOTD Display the Message Of The Day of the server
JOIN Join one or several channels
KICK Force remove a user from a channel
MODE Display or set channel mode :
- +k set a password to the channel
- -k remove the password
- +i set the channel as invite-only
- -i remove the invite-only restriction
- +t protect the channel topic
- -t remove topic protection
- +o give channel operator privileges to a user
- -o remove channel operator privileges to a user
- +l set a user limit
- -l remove the user limit
TOPIC Display of set the channel topic
INVITE Invite a user to a channel
PART Remove the user from the given channel(s)
QUIT Terminate client's connection to the server
PRIVMSG Send a message to a user or a channel
WHO Display infos about users
PING Check that the server is still connected to the client
BOT Activate or deactivate a bot that greets users in a channel

Usage

make && ./ircserv <port> <password>

Useful Links