Skip to content

ElMariuso/ft_irc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

project-logo

FT_IRC

Empowering seamless communication and collaboration in code.

license last-commit repo-top-language repo-language-count


Table of Contents

Overview

Ft_irc is an open-source IRC server software offering robust communication capabilities for users. With core functionalities like message handling, command execution, and channel management, ft_irc facilitates seamless interaction within IRC networks. It empowers users to exchange messages, join channels, set modes, and manage connections efficiently. The projects value proposition lies in its ability to provide a stable and feature-rich environment for real-time communication, enhancing user experience and fostering community engagement.


Features

Feature Description
⚙️ Architecture A modular IRC server with separate components for server, client, messages, commands, channels, and utilities. The architecture organizes functionalities efficiently, promoting code separation and maintainability. File structure is well-segmented and follows a standard layout.
🔩 Code Quality The codebase demonstrates good code quality with clear and concise naming conventions, proper commenting, and consistent formatting. It adheres to C++ best practices with well-structured classes and functions. The Makefile orchestrates the build process effectively, ensuring robust compilation and linking processes.
📄 Documentation Extensive documentation is provided for each key component, detailing their roles, interactions, and functionalities. Functionality summaries in source files enhance code understanding. However, more high-level overview documentation could improve onboard efficiency for new contributors.
🔌 Integrations The project relies on C++ as the primary language and utilizes a Makefile for build automation. External dependencies include only standard C++ libraries, facilitating easy setup and deployment. The project demonstrates self-sufficiency in managing dependencies and integrations.
🧩 Modularity The codebase exhibits high modularity, allowing for easy component reusability and extension. Encapsulation of functionalities within distinct classes promotes separation of concerns and simplifies maintenance. The architecture facilitates adding new features without disrupting existing functionalities.
🧪 Testing Testing frameworks and tools are not explicitly mentioned in the repository details. Incorporating testing frameworks like Google Test or Catch2 could enhance code reliability and maintainability by enabling automated testing procedures.
⚡️ Performance The performance evaluation is not explicitly described in the repository details. However, the use of efficient C++ coding practices and modular design principles likely contributes to optimal performance. Further performance profiling and optimization could enhance resource efficiency.
🛡️ Security Security measures are not explicitly discussed in the repository details. Implementing secure coding practices, input validation mechanisms, and role-based access control could enhance data protection and mitigate security vulnerabilities in the IRC server application.
📦 Dependencies Key dependencies include standard C++ libraries for functionalities like networking, string operations, and time handling. The project minimizes external dependencies, promoting self-contained development and deployment. Leveraging minimal dependencies enhances project maintainability and portability.

Repository Structure

└── ft_irc/
    ├── Makefile
    ├── include
    │   ├── Channel.hpp
    │   ├── Client.hpp
    │   ├── Command.hpp
    │   ├── Message.hpp
    │   ├── Server.hpp
    │   ├── Utils.hpp
    │   └── library.hpp
    └── src
        ├── Channel.cpp
        ├── Client.cpp
        ├── Command.cpp
        ├── Message.cpp
        ├── Server.cpp
        ├── Utils.cpp
        └── main.cpp

Modules

.
File Summary
Makefile Orchestrates build process.-Defines compiler flags and directories.-Manages object file creation and compilation.-Cleans object files and executable.
src
File Summary
Utils.cpp Retrieves current time and formats messages.-Displays debug and error messages.-Allows dynamic waiting message with increasing dots.-Offers functions for integer to string conversion, copying strings, and date/time formatting.-Validates integer strings.
Channel.cpp Modes, operators, topic, access control. Manages connected clients with functions to set, get, find, remove. Enables sending messages to clients and clearing invite list.
main.cpp Initiates server setup, handles interruptions, and starts server processing in the ft_irc repository. Parses command-line arguments, configures server, and manages exceptions using Library functions.
Message.cpp Message.cpp SummaryThe Message.cpp file in the ft_irc repository plays a crucial role in handling message-related functionalities for the IRC server. It implements the logic for creating, parsing, and processing messages exchanged between clients and the server. By encapsulating message operations within this file, it ensures seamless communication within the IRC network, enhancing overall system reliability and efficiency.
Client.cpp Implements functionality to handle client connections within the architecture. Manages client information, communication, and modes in the IRC server. Supports sending and receiving messages, managing user modes, and setting client attributes like nickname and hostname.
Command.cpp The Command.cpp file in the ft_irc repository plays a vital role in handling various IRC commands within the server application. It encapsulates the logic for parsing and executing IRC commands sent by clients, ensuring seamless communication and interaction between users. This component significantly contributes to the core functionality of the IRC server by interpreting and executing commands accurately, enhancing the overall user experience and system performance.
Server.cpp The Server.cpp file in the ft_irc repository plays a crucial role in the implementation of the IRC server component of the project. It encapsulates the logic for handling server functionality such as accepting client connections, managing channels, processing commands, and facilitating message exchange between clients. This file serves as the backbone of the server module, orchestrating the overall communication flow and ensuring seamless interaction among clients within the IRC network.
include
File Summary
Utils.hpp Enables generating current time, debug, error messages, and more. Provides functions for string conversions, date operations, and input validation within the parent repositorys architecture.
Server.hpp Defines a server class managing client connections and channels, offering methods for processing, handling new connections, commands, and disconnections. It includes utilities for socket creation and message processing, ensuring commands have at least 3 arguments.
Message.hpp Defines message handling for IRC server interactions, including connection, commands, RPL codes, and errors. Specifies methods for various server-client messages. Organizes and formats message content for the communication protocol.
Command.hpp Defines command handling for IRC server, encapsulating message parsing and processing. Handles various IRC commands like NICK, JOIN, PRIVMSG, MODE, etc. Facilitates server, client, and channel interactions.
library.hpp Defines color codes, constants, and necessary includes for the parent repositorys networking chat application, ft_irc. Facilitates structured communication between channels, clients, and servers using defined colors and buffer sizes.
Channel.hpp Defines and manages properties of chat channels, including modes, operators, and connected clients. Facilitates setting and retrieving channel information for effective communication within the system.
Client.hpp Defines a client class with key attributes and methods for handling user connections in the parent repositorys IRC server. Manages user modes, connection status, and user data, providing essential functionality for client operations.

Getting Started

System Requirements:

  • CPP: version x.y.z

Installation

From source

  1. Clone the ft_irc repository:
$ git clone https://github.com/ElMariuso/ft_irc.git
  1. Change to the project directory:
$ cd ft_irc
  1. Install the dependencies:
$ g++ -o myapp main.cpp

Usage

From source

Run ft_irc using the command below:

$ ./myapp

Tests

Run the test suite using the command below:

$ googletest

Acknowledgments

  • List any resources, contributors, inspiration, etc. here.

Return


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published