Skip to content

An IRC server built in C++98, capable of handling multiple clients with non-blocking I/O. Includes essential IRC functionalities like user authentication, channel management, and operator commands, along with a weather bot for real-time city weather updates.

Notifications You must be signed in to change notification settings

RIDWANE-EL-FILALI/FT_IRC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

IRC Server in C++98

Overview

This project is an implementation of an IRC (Internet Relay Chat) server using C++98. The server adheres to the IRC protocol and allows multiple clients to connect simultaneously, communicate, and perform basic IRC functions such as joining channels, sending private messages, and setting user modes. The project is designed to run on Unix-like systems and is specifically tailored for compatibility with macOS.

Features

  • Multiple Client Handling: The server can manage multiple clients at once without blocking or hanging.
  • Non-Blocking I/O: All input/output operations are non-blocking, ensuring efficient resource usage and smooth operation.
  • TCP/IP Communication: The server communicates with clients over TCP/IP (IPv4 or IPv6).
  • Basic IRC Functionality:
    • User authentication
    • Nickname and username management
    • Joining channels
    • Sending and receiving private messages
    • Broadcasting messages to all users in a channel
  • Channel Operations:
    • KICK: Eject a client from a channel
    • INVITE: Invite a client to a channel
    • TOPIC: Change or view the channel's topic
    • MODE: Modify channel modes including:
      • i: Invite-only mode
      • t: Restrict topic changes to operators
      • k: Set/remove channel key (password)
      • o: Manage operator privileges
      • l: Set/remove user limit in the channel
  • Operator and Regular Users: The server distinguishes between operators and regular users, allowing operators to perform administrative tasks within channels.

Additional Details

  • Platform Compatibility: The project includes specific accommodations for macOS, ensuring that file descriptors are handled in a non-blocking manner similar to other Unix systems.
  • Testing: The server has been rigorously tested to handle various scenarios, including partial data reception and low bandwidth situations.

Bonus Features (Optional)

For enhanced functionality, the following features could be added:

  • File Transfer: Enabling users to transfer files through the IRC server.
  • Bot Integration: Implementing a bot to automate tasks or provide additional services.

⛓️LINKS:

🥇Badge:

image

📚Skills:

  • Rigor
  • Unix
  • Network & system administration
  • Object-oriented programming

📱REACH ME

Made by RIDWANE EL FILALI 👋 See my linkedin

If you like this repo star it

About

An IRC server built in C++98, capable of handling multiple clients with non-blocking I/O. Includes essential IRC functionalities like user authentication, channel management, and operator commands, along with a weather bot for real-time city weather updates.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published