Skip to content

Alex-mfs/ft_irc

 
 

Repository files navigation

FT_IRC

👥 Team

This project was developed by:

Alex-mfs

mfortuna

📖 Overview

ft_irc is a custom IRC (Internet Relay Chat) server implementation written in C++98, developed as a group project at 42 School. This server complies with the RFC 1459 and RFC 2812 standards and supports multiple clients connecting simultaneously through a single process using poll() for I/O multiplexing.

🚀 Features

  • RFC-Compliant: Implements major IRC standards
  • Multi-Client Support: Handles multiple clients simultaneously
  • Channel Operations:
    • Create/join channels (#channel)
    • Channel modes (+i, +t, +k, +o, +l)
    • Topic management
  • Private Messaging: Direct messages between users
  • Operator Privileges: Channel operators can kick/ban users and manage modes
  • Network Communication: Full server-client communication protocol

📋 Supported Commands

Command Description Example
PASS Set connection password PASS 12345
NICK Set nickname NICK john
USER Set username/realname USER jdoe 0 * :John Doe
JOIN Join/create channel JOIN #general
PART Leave channel PART #general
PRIVMSG Send message PRIVMSG #general :Hello!
TOPIC Set channel topic TOPIC #general :Welcome!
MODE Set channel modes MODE #general +i
KICK Remove user from channel KICK #general john
INVITE Invite user to channel INVITE jane #general
QUIT Disconnect from server QUIT :Goodbye!

🛠️ Installation & Usage

Prerequisites

  • C++98 compatible compiler
  • Make
  • IRC client (HexChat, irssi, etc.) for testing

Building

git clone https://github.com/mfortuna23/ft_irc
cd ft_irc

Make

Running the Server

./ircserver <port> <password>
# Example:
./ircserver 6667 12345

Connecting Clients

# Using HexChat:
# Server: localhost:6667, Password: 12345

# Using netcat:
nc -C localhost 6667
PASS 12345
NICK yournick
USER youruser 0 * :Your Name

📚 Resources

RFC 1459: IRC Protocol

RFC 2812: Modern IRC

IRC Docs Horse

📄 License

This project is part of the 42 School curriculum. All rights reserved.

About

Implementation of an IRC server in C++98, developed in collaboration with https://github.com/mfortuna23

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.3%
  • Makefile 0.7%