{"id":19599237,"url":"https://github.com/42yerevanprojects/ft_irc","last_synced_at":"2025-04-23T11:56:52.210Z","repository":{"id":132570094,"uuid":"541985715","full_name":"42YerevanProjects/ft_irc","owner":"42YerevanProjects","description":"This project is about creating your own IRC server in C++","archived":false,"fork":false,"pushed_at":"2023-01-24T19:29:51.000Z","size":84,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-23T11:56:46.421Z","etag":null,"topics":["42born2code","cpp","irc","server","socket-programming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/42YerevanProjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-27T08:42:37.000Z","updated_at":"2025-01-26T16:48:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"2dedcc7d-7128-4a26-84ae-7887d8e4e52e","html_url":"https://github.com/42YerevanProjects/ft_irc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42YerevanProjects%2Fft_irc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42YerevanProjects%2Fft_irc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42YerevanProjects%2Fft_irc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42YerevanProjects%2Fft_irc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/42YerevanProjects","download_url":"https://codeload.github.com/42YerevanProjects/ft_irc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250430589,"owners_count":21429323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42born2code","cpp","irc","server","socket-programming"],"created_at":"2024-11-11T09:09:26.374Z","updated_at":"2025-04-23T11:56:52.203Z","avatar_url":"https://github.com/42YerevanProjects.png","language":"C++","readme":"# 42 ft_irc\n\nThis test project is intended for a deeper study of the operation of sockets and their interactions on the example of an IRC chat/server. The test project is built via \nMakefile and is run using the following command:\n\n``./ircserv [port] [pass]`` \n\nMore detailed information is contained in then subject.txt \n📌If you have any questions or find bugs, write to the issues section.\n\n\u003e  **Warning**: Don't copy/paste code you don't understand: it's bad for you, and for the school.\n\n\n\n\n## \u003cimg src=\"https://github.com/markveligod/ft_irc/blob/main/img/chat.gif\" width=\"32\" height=\"32\" \u003e Description\n\nIRC (Internet Relay Chat) - an application-level Protocol for exchanging messages in real-time. Designed primarily for group communication, it also allows you to \ncommunicate via private messages and exchange data, including files. IRC uses the TCP transport protocol and cryptographic TLS (optional). IRC began to gain \nparticular popularity after Operation \"Desert Storm\" (1991), when messages from all over the world were collected in one place and broadcast on-line to IRC. \nDue to the technical simplicity of implementation, the IRC protocol was used in the organization of botnets as a means of transmitting control commands to the \ncomputers participating in the botnet from the owner.\n\n### :earth_americas: IRC network\n\nAccording to the protocol specifications, an IRC network is a group of servers connected to each other. The simplest network is a single server. The network \nshould have the form of a connected tree, in which each server is the central node for the rest of the network. A client is anything that is connected to the \nserver, except for other servers. There are two types of customers:\n\n- custom settings;\n- service stations.\n\n\u003cimg src=\"https://github.com/markveligod/ft_irc/blob/main/img/network.svg\"\u003e\n\n### Forwarding messages in the IRC network\n\nIRC provides both group and private communication. There are several possibilities for group communication. A user can send a message to a list of users, \nand a list is sent to the server, the server selects individual users from it, and sends a copy of the message to each of them. More efficient is the use \nof channels. In this case, the message is sent directly to the server, and the server sends it to all users in the channel. In both group and private \ncommunication, messages are sent to clients via the shortest path and are visible only to the sender, recipient, and incoming servers. It is also possible \nto send a broadcast message. Client messages regarding changes in the network state (for example, channel mode or user status) must be sent to all servers \nthat are part of the network. All messages originating from the server must also be sent to all other servers.\n\n## 🏷️ RFC documentation\n\n*It is highly recomended to use 281x versions of RFCs*\n\n[RFC 1459](https://tools.ietf.org/html/rfc1459)  \n[RFC 2810](https://tools.ietf.org/html/rfc2810)  \n[RFC 2811](https://tools.ietf.org/html/rfc2811)  \n[RFC 2812](https://tools.ietf.org/html/rfc2812)  \n[RFC 2813](https://tools.ietf.org/html/rfc2813)  \n[RFC 7194](https://tools.ietf.org/html/rfc7194)  \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42yerevanprojects%2Fft_irc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F42yerevanprojects%2Fft_irc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42yerevanprojects%2Fft_irc/lists"}