https://github.com/acehomard/ft_irc
Serveur IRC en C++98 ⚡ | Gestion des connexions non bloquantes avec epoll() 🖧 | Support des commandes IRC essentielles 💬 | Bonus : Transfert de fichiers 📁 & Bot 🤖
https://github.com/acehomard/ft_irc
cpp irc-server
Last synced: 3 months ago
JSON representation
Serveur IRC en C++98 ⚡ | Gestion des connexions non bloquantes avec epoll() 🖧 | Support des commandes IRC essentielles 💬 | Bonus : Transfert de fichiers 📁 & Bot 🤖
- Host: GitHub
- URL: https://github.com/acehomard/ft_irc
- Owner: AceHomard
- Created: 2025-02-17T14:36:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-17T14:49:38.000Z (over 1 year ago)
- Last Synced: 2025-02-17T15:37:39.534Z (over 1 year ago)
- Topics: cpp, irc-server
- Language: C++
- Homepage:
- Size: 538 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🛰️ ft_irc - Internet Relay Chat
## 📌 Description
`ft_irc` est un serveur **IRC** écrit en **C++98** permettant aux clients de communiquer via le protocole IRC en **TCP/IP**.
Il respecte les standards et offre les fonctionnalités essentielles pour créer et gérer des salons de discussion en temps réel.
## 🚀 Fonctionnalités principales
- 📡 **Connexion multi-utilisateurs** en simultané (sans blocage)
- 🔐 **Authentification** avec mot de passe
- 🎭 **Gestion des utilisateurs** (nicknames, usernames)
- 💬 **Salons de discussion** (join, message public & privé)
- 🔧 **Commandes opérateurs** (`KICK`, `INVITE`, `TOPIC`, `MODE`)
- 🌍 **Support IPv4 / IPv6**
- 🛠️ **Poll() unique** pour gérer les entrées/sorties
## 🛠️ Installation & Lancement
1. **Cloner le repo**
```sh
git clone https://github.com/FastaLaPasta/ft_irc.git
cd ft_irc
```
2. **Compiler avec Makefile**
```sh
make
```
3. **Lancer le serveur**
```sh
./ircserv
```
4. **Se connecter avec un client IRC**
```sh
/connect localhost
```
## 📜 Commandes IRC supportées
| 📝 Commande | 🔍 Description |
|-------------|--------------|
| `/nick` | Changer son pseudo |
| `/user` | Définir son username |
| `/join` | Rejoindre un channel |
| `/msg` | Envoyer un message privé |
| `/kick` | Expulser un utilisateur |
| `/invite` | Inviter un utilisateur |
| `/topic` | Changer ou afficher le sujet d'un channel |
| `/mode` | Gérer les permissions des channels |
---
## 🎯 Objectifs du projet
✅ Implémenter un **serveur IRC minimaliste** **sans client**
✅ **Respecter la norme C++98**
✅ Utiliser **epoll()** pour gérer les connexions de manière **non bloquante**
---
## 🏆 Bonus effectués
- 📁 **Transfert de fichiers entre utilisateurs**
- 🤖 **Ajout d'un bot IRC interactif**