From 88903ae9fdb9b42c478f7aafd6a07146aa4fbeac Mon Sep 17 00:00:00 2001 From: jdomingu98 Date: Thu, 14 Mar 2024 13:03:11 +0100 Subject: [PATCH 1/2] Minimum description added --- README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c09bb03..092c179 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,15 @@ -# ft_irc -Our own Internet Realy Chat for 42 school +## ft_irc: A custom Internet Relay Chat Server + +> [!NOTE] +> Para poder conectarte al servidor debes instalarte el cliente irrsi o el comando netcat (o equivalente) + +> [!CAUTION] +> La instalación del cliente que uses dependerá de tu sistema operativo. +> Visita la página oficial del cliente irssi o la documentación de netcat para más información + + +# Descarga el proyecto + +``` +git clone https://github.com/jdomingu98/ft_irc.git +``` \ No newline at end of file From 4d0915db4a77834af29f79c86868a041a269126a Mon Sep 17 00:00:00 2001 From: jdomingu98 Date: Tue, 26 Mar 2024 15:14:40 +0100 Subject: [PATCH 2/2] Added LICENSE.md and a complete README.md --- LICENSE.md | 21 +++++++++++++ README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c248a73 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Juan Antonio Domínguez Arcas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 092c179..f9d00e8 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,89 @@ -## ft_irc: A custom Internet Relay Chat Server +# ft_irc: A custom Internet Relay Chat Server + +> "Internet Relay Chat (IRC) is a text-based chat system for instant messaging. IRC is designed for group communication in discussion forums, called channels, but also allows one-on-one communication via private messages as well as chat and data transfer, including file sharing.\ +Internet Relay Chat is implemented as an application layer protocol to facilitate communication in the form of text. The chat process works on a client–server networking model. Users connect, using a client—which may be a web app, a standalone desktop program, or embedded into part of a larger program—to an IRC server, which may be part of a larger IRC network." ([source]) + +[source]: https://www.radware.com/security/ddos-knowledge-center/ddospedia/irc-internet-relay-chat/ + +As part of the "42 common-core" roadmap, we are asked to implement a custom IRC server, with a limited range of commands and handling only client-server communications. + +## Requeriments > [!NOTE] -> Para poder conectarte al servidor debes instalarte el cliente irrsi o el comando netcat (o equivalente) +> This project has been developed on Unix-based systems, so please note that it will not work correctly on other systems. -> [!CAUTION] -> La instalación del cliente que uses dependerá de tu sistema operativo. -> Visita la página oficial del cliente irssi o la documentación de netcat para más información +To correctly run this project on your computer, you need to have installed: +* An Unix-based system, such as MacOS, Ubuntu, Debian, etc. +* Git -> [installation tutorial] +* C++ programming language -> We use C++98 in the project, but a newer version also works +* Makefile +* An IRC client -> We test the server with **netcat command** and the **irssi** client -# Descarga el proyecto +[installation tutorial]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git + +## Install the project + +Once you have fullfilled the requeriments, you are ready to start intalling the project on your system.\ +To install it, you have to run the following command in a terminal: ``` git clone https://github.com/jdomingu98/ft_irc.git -``` \ No newline at end of file +``` + +## Compile and run the server + +Once you have downloaded the repository, you have to enter the directory using the `cd` command and compile it using `make` command.\ +This will generate an executable called `ircserv` that can be execute using the following structure: + +``` +./ircserv +``` + +Where `` is the port where the server will listen for new connections and commands and `` is the connection password + +## How to connect to the server + +> [!WARNING] +> This project was tested with `netcat command` and with `irssi client`. Using other clients may lead to some errors and incorrect behaviour + +* To connect using netcat (nc) command, you only have to launch: + + ``` + nc + ``` + +* To install and use the **irssi client** you must follow [this] guide + +[this]: https://irssi.org/download/ + +## Commands implemented + +| Command | Description | +| :-----------: | :----------- | +| PASS | Set a ‘connection password’. If set, the password must be set before any attempt to register the connection is made. | +| NICK | Give the client a nickname or change the previous one. | +| USER | Used at the beginning of a connection to specify the username and realname of a new user. | +| JOIN | The client wants to join the given channel(s), using the given key (if necessary) for it. | +| PART | Removes the client from the given channel(s). | +| MODE | Set or remove options (or modes) from a given target. Our channels modes: i,t,k,o,l | +| INVITE| Invite a user to a invite-only channel. | +| KICK | Request the forced removal of a user from a channel. | +| OPER | Used by a normal user to obtain operator privileges. | +| TOPIC | Change or view the topic of the given channel. | +| PRIVMSG | Send private messages between users, as well as to send messages to channels. | +| QUIT | Terminates a client’s connection to the server. | + +## See the wiki + +For more detailed information about the project, please visit the [wiki] + +[wiki]: https://github.com/jdomingu98/ft_irc/wiki + +--- + +Project made by [@ruzafa8], [@Atrujillo02] and [@jdomingu98] + +[@ruzafa8]: https://github.com/ruzafa8 +[@Atrujillo02]: https://github.com/Atrujillo02 +[@jdomingu98]: https://github.com/jdomingu98 \ No newline at end of file