Skip to content

RhesusP/ft_irc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Internet Relay Chat

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published