Skip to content

42sin/ft_irc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

ft_irc

Your own IRC Server in C++
Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Features
  4. License

About The Project

Subject PDF

This is a simple IRC server based on the RFC 2812 and following the C++ 98 standard. Even though this project mainly follows the RFC, it was not necessary by the Subject PDF, so some behaviours might differentiate from the original protocol. This is the first big project during our 42 Core Curriculum that we had to write in C++. The Server follows the reactor design pattern and therefore handles concurrent service requests from one or more inputs by dispatching them synchronously to the associated request handlers.

(back to top)

Getting Started

The Project was mainly tested on macOS.

Prerequisites

To connect to the server, you need to use an IRC Client that terminates packages with \r\n.
I used WeeChat as a reference client.

brew install weechat
weechat

Installation

  1. Clone the repo
    git clone https://github.com/42sin/ft_irc.git && cd ft_irc
  2. Compile the project
    make
  3. Start the server
    ./ircserv <port> <password>
  4. Connect to the server inside of weechat
    /server add <name> <IP-Address>/<port> -password=<password>
    /connect <name>

(back to top)

Features

Server:

  • SHUTDOWN Shuts down the server, behaves the same as DIE from the RFC 2812
  • PING Pings the server, this is done in intervals by WeeChat
  • PASS Sends the password to the server, WeeChat does this on your first time connecting

User:

  • USER Sets a Username
  • NICK Sets a Nickname
  • OPER Sets a new Operator
  • PRIVMSG | NOTICE Sends a private message

Channel:

  • INVITE Invite someone to a channel
  • JOIN Join or create a new channel
  • MODE (t, i, o, k, l) Changes the Channel Mode, see Subject PDF for more informations
  • KICK Ejects a client from a channel
  • TOPIC View or change the channel topic
  • PART Leave a channel

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published