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 c09bb03..f9d00e8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,89 @@ -# ft_irc -Our own Internet Realy Chat for 42 school +# 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] +> This project has been developed on Unix-based systems, so please note that it will not work correctly on other systems. + +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 + +[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 +``` + +## 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