{"id":29719481,"url":"https://github.com/phlearning/ft_irc","last_synced_at":"2026-02-08T15:31:45.002Z","repository":{"id":232203988,"uuid":"761201885","full_name":"phlearning/ft_irc","owner":"phlearning","description":"chat irc 42 style","archived":false,"fork":false,"pushed_at":"2024-02-10T07:20:16.000Z","size":2050,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-16T07:48:11.228Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phlearning.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-02-21T12:37:50.000Z","updated_at":"2024-02-26T15:26:06.000Z","dependencies_parsed_at":"2024-04-08T15:10:14.841Z","dependency_job_id":null,"html_url":"https://github.com/phlearning/ft_irc","commit_stats":null,"previous_names":["phlearning/ft_irc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/phlearning/ft_irc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phlearning%2Fft_irc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phlearning%2Fft_irc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phlearning%2Fft_irc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phlearning%2Fft_irc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phlearning","download_url":"https://codeload.github.com/phlearning/ft_irc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phlearning%2Fft_irc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29235229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-07-24T11:44:19.246Z","updated_at":"2026-02-08T15:31:44.978Z","avatar_url":"https://github.com/phlearning.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/bfjberger/irc_42\"\u003e\n    \u003cimg src=\"images/logo.png\" alt=\"Logo\" width=\"\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eft_irc\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Summary:\nThis project is about creating your own IRC server.\nYou will use an actual IRC client to connect to your server and test it.\nInternet is ruled by solid standards protocols that allow connected computers to interact\nwith each other.\nIt’s always a good thing to know.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/bfjberger/irc_42\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n- [About The Project](#about-the-project)\n    - [Which client was used ?](#which-client-was-used-)\n    - [How to instal IRSSI ?](#how-to-instal-irssi-)\n    - [Our implemented commands](#our-implemented-commands)\n- [Getting Started](#getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Installation](#installation)\n- [Usage](#usage)\n- [Authors](#authors)\n- [Sources](#sources)\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nThis project, `ft_irc`, is an endeavor to create a fully functional IRC (Internet Relay Chat) server from scratch. The goal is to understand and implement the protocols that govern the internet, specifically the IRC protocol, which is a cornerstone of real-time communication over the internet. We are mainly going to implement the server side, while using an already established client to test our server.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./images/socketServerClient.png\" width=\"400\"\u003e\n\u003c/p\u003e\n\n### Which client was used ?\nFor this project, we used [IRSSI](https://irssi.org/), a terminal-based IRC client for UNIX systems. It is open-source and highly configurable, making it a popular choice for IRC users.\n\nIRSSI provides a robust and user-friendly interface for IRC communications. It supports multiple servers and channels, and it offers a variety of scripts and themes to customize the user experience.\n\n\u003e We used the rawlog to be able to check for the format of IRSSI, formatting the Replies and the Errors was easier with it when\nwe were connecting to DALnet on IRSSI.  \n\u003e ```rawlog: ./rawlog open [path_of_the_rawlog_that_[was]/[will_be]_created]```\n\n### How to instal IRSSI ?\n\nOn Ubuntu/Debian:\n```sh\nsudo apt-get update\nsudo apt-get install irssi\n```\n\nOn macOS (using Homebrew)\n```sh\nbrew install irssi\n```\n\n### Our implemented commands\n\n| Command | Description |\n|:---------:|:-------------|\n| `Invite` | Invite a client to a channel that is set to invite-only |\n| `Join` | Try to join a channel or create one if it does not exist |\n| `Kick` | If the user is the channel operator, kick the targeted user from given channel |\n| `Kill` | Available to server operator, close the targeted client connection |\n| `Mode` | Set the channel mode if channel operator (channel mode: i,k,l,o,t) |\n| `Nick` | Nick set/change the nickname of the client if the nickname is not already given |\n| `Oper` | Set user to Operator if correct password given|\n| `Part` | Leave the given channel |\n| `Pass` | Set the password to the client and compare if it is the same as the server |\n| `Privmsg` | Send a message to the targeted client / channel |\n| `Quit` | Disconnect from the server and quit the IRC client used |\n| `Topic` | Available to channel operator, set the topic of the channel |\n| `User` | Set the username of the client |\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\n### Prerequisites\n\n\n### Installation\n\n1. Clone the repo\n   ```sh\n   git clone https://github.com/bfjberger/irc_42.git\n   ```\n2. Download your reference IRC client\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\n1. With our reference IRC client: irssi\n\n* start irssi\n  ```sh\n  irssi\n  ```\n* connect to the server\n  ```sh\n  /connect \u003cipaddress\u003e \u003cport\u003e \u003cpassword\u003e\n  #hence\n  /connect localhost 6667 password\n  ```\n\n2. With netcat\n\t```sh\n\tnc \u003chost\u003e \u003cport\u003e\n\t#hence\n\tnc localhost 6667\n\t```\n\nNow enjoy\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Authors --\u003e\n## Authors\n\n* [@bberger](https://github.com/bfjberger)\n* [@kmorin](https://github.com/Killian-Morin)\n* [@pvong](https://github.com/phlearning)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- SOURCES --\u003e\n## Sources\n\n* For the IRC server\n  * [RFC 1459 - Internet Relay Chat Protocol](https://datatracker.ietf.org/doc/html/rfc1459)\n  * [RFC 2810 - Internet Relay Chat: Architecture](https://datatracker.ietf.org/doc/html/rfc2810)\n  * [RFC 2811 -  Internet Relay Chat: Channel Management](https://datatracker.ietf.org/doc/html/rfc2811)\n  * [**RFC 2812 - Internet Relay Chat: Client Protocol**](https://datatracker.ietf.org/doc/html/rfc2812)\n  * [Numeric Replies](https://www.alien.net.au/irc/irc2numerics.html)\n\n* For irssi\n  * https://irssi.org\n\n* For the sockets\n  * https://beej.us/guide/bgnet/html/\n  * https://www.tutorialspoint.com/unix_sockets/index.htm\n  * https://www.ibm.com/docs/en/i/7.2?topic=programming-how-sockets-work\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphlearning%2Fft_irc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphlearning%2Fft_irc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphlearning%2Fft_irc/lists"}