Skip to content

Commit

Permalink
Merge pull request #38 from jdomingu98/15-hacer-un-readme-bonito
Browse files Browse the repository at this point in the history
15 hacer un readme bonito
  • Loading branch information
jdomingu98 authored Mar 26, 2024
2 parents 2f85d00 + 4d0915d commit 99a06f1
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 2 deletions.
21 changes: 21 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -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.
91 changes: 89 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -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 <port> <password>
```

Where `<port>` is the port where the server will listen for new connections and commands and `<password>` 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 <host> <port>
```
* 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

0 comments on commit 99a06f1

Please sign in to comment.