Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/link-wolf/ft_irc
42 project - Create an irc server
https://github.com/link-wolf/ft_irc
42 42born2code 42school cpp98 irc macos
Last synced: 3 days ago
JSON representation
42 project - Create an irc server
- Host: GitHub
- URL: https://github.com/link-wolf/ft_irc
- Owner: Link-Wolf
- Created: 2022-11-29T11:22:23.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-09-23T14:12:35.000Z (4 days ago)
- Last Synced: 2024-09-24T20:55:10.414Z (3 days ago)
- Topics: 42, 42born2code, 42school, cpp98, irc, macos
- Language: C++
- Homepage:
- Size: 126 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
ft_irc
Internet Relay Chat
A C++ project to reproduce the behavior of an IRC server (ft. iCARUS)
Report Bug
·
Request Feature
Table of Contents
## About The Project
This project aims to reproduce the behavior of a real IRC server in C++ 98. It's a group project i made it with iCARUS.
It requires us to develop an IRC server that's conform to the IRC standards, so we can connect to it and test it with a real IRC client. We don't have to develop a client, but we chose to use Weechat as our reference client.Specifically, we have to:
- Manage many clients without being stucked or blocked
- Communicate with the clients using TCP/IP protocol
- It must implement the following features:
- Being able to authenticate with a nickname, a username and a realname
- Joining a channel
- Sending and receiving private messages
- Sending and receiving messages to a channel
- Having channels operators and basic users
- Having all operators specifics commands
- exit without any optionsAs an IRC server, we support the following commands:
- `NICK` - Change nickname
- `USER` - Set username and realname
- `PASS` - Submit password on connect
- `QUIT` - Quit the server
- `JOIN` - Join a channel
- `PART` - Leave a channel
- `PRIVMSG` - Send a message
- `TOPIC` - Set or check a channel topic
- `MODE` - Set or check a user or channel mode
- `KICK` - Kick a user from a channel
- `INVITE` - Invite a user to a channel
- `PING` - Ping the server
- `NOTICE` - Send a noticeAnd the `i` channel mode, which allows only invited users to join the channel
We added some bonuses to our server :
- The `t` channel mode, which allows only operators to change the topic of the channel
- The ability to send and receive files using the `DCC` command
- Our fantastic bot, Ratatouille-b0t, who will help you to use our server by answer to your `[...] quoi` messages by `feur` and some others originals surprises !## Getting Started
Because it's a simple C++ project, there isn't much to say here
### Prerequisites
Having a C++ compiler like c++
### Installation
1. Clone the repo
```sh
git clone https://github.com/Link-Wolf/ft_irc.git
```2. Compile the project
```sh
cd ft_irc; make
```3. Execute it
```sh
./ircserv [port] [password]
```## Usage
Use our IRC server as you'd use a real one, but please be kind to him and remember he doesn't implement everything !
## Roadmap
- [x] Add bonus features
- [x] Add back to top linksSee the [open issues](https://github.com/Link-Wolf/ft_irc/issues) for a full list of proposed features (and known issues).
## Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request## Contact
Mail : [email protected]
Project Link: [https://github.com/Link-Wolf/ft_irc](https://github.com/Link-Wolf/ft_irc)