From 2c4e72ed720831c578654473b5e3c1539f6eb4f3 Mon Sep 17 00:00:00 2001 From: Herbie Vine Date: Sat, 31 Aug 2024 20:41:28 +0200 Subject: [PATCH 1/4] wip: ft_irc post --- .../42-a-comprehensive-guide-to-ft_irc.mdx | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx diff --git a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx new file mode 100644 index 0000000..c2ab489 --- /dev/null +++ b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx @@ -0,0 +1,122 @@ +--- +title: "42: A Comprehensive Guide to ft_irc" +description: "A comprehensive guide to the ft_irc project from 42." +author: { name: "Herbie Vine", url: "https://herbievine.com" } +contributors: [] +tags: ["42", "ft_irc", "irc", "guide", "tutorial"] +createdAt: 2024-08-31 +updatedAt: 2024-08-31 +--- + +## Introduction + +`ft_irc` is a project which you may do during your cursus, and if you're reading this then I assume you are. It's a cool project, and resolves around you developing an IRC (Internet Relay Chat) server. It's not that hard, although it will challenge your understanding of communcation + +## Understanding the project scope + +There are three fundamental pillars in this project. + +- **The Server:** This component manages critical server information such as active socket connections, connected clients and their respective FDs, channels, the current port/password, etc... It's responsible for maintaining the state of the server and handling incoming and outgoing messages between clients. +- **The Channel:** This is where clients gather to chat. The "Channel" manages channel-specific data such as the channel name, password, client limits, and topic. It handles adding and removing clients, broadcasting messages, and enforcing channel rules. Channels also keep track of operators and invited clients, ensuring proper access control and communication within the channel. + +These components work together to create a functional IRC server where clients can connect, join channels, and communicate in real-time. In the following sections, we will explore each of these pillars in more detail, understanding their roles and how they interact within the `ft_irc` server. + +### The server + +In ft_irc, the server is integral to managing socket connections, which form the backbone of the server-client communication. The server uses sockets to handle incoming and outgoing data, enabling real-time interactions between clients and the IRC network. + +Socket Management begins with creating and binding a listening socket. This socket listens for incoming connection requests from clients. Once a connection is established, the server uses another socket to communicate with the client. Managing these sockets involves several steps: creating the socket, binding it to a port, listening for incoming connections, and accepting those connections. Each accepted connection is then handled by a new socket, allowing multiple clients to interact with the server concurrently. + +Here's a basic example demonstrating how to accept connections and read data from clients using sockets: + +```cpp +#include +#include +#include +#include +#include +#include + +int main() { + int server_fd, client_fd; + struct sockaddr_in server_addr, client_addr; + socklen_t client_addr_len = sizeof(client_addr); + char buffer[1024]; + int port = 6667; // Default IRC port + + // Create the server socket + server_fd = socket(AF_INET, SOCK_STREAM, 0); + if (server_fd < 0) { + perror("socket"); + return 1; + } + + // Set up the server address struct + memset(&server_addr, 0, sizeof(server_addr)); + server_addr.sin_family = AF_INET; + server_addr.sin_addr.s_addr = INADDR_ANY; + server_addr.sin_port = htons(port); + + // Bind the socket to the address and port + if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { + perror("bind"); + close(server_fd); + return 1; + } + + // Listen for incoming connections + if (listen(server_fd, 5) < 0) { + perror("listen"); + close(server_fd); + return 1; + } + + std::cout << "Server listening on port " << port << std::endl; + + // Accept a connection + client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_addr_len); + if (client_fd < 0) { + perror("accept"); + close(server_fd); + return 1; + } + + std::cout << "Client connected" << std::endl; + + // Read data from the client + ssize_t bytes_read = read(client_fd, buffer, sizeof(buffer) - 1); + if (bytes_read < 0) { + perror("read"); + close(client_fd); + close(server_fd); + return 1; + } + + buffer[bytes_read] = '\0'; // Null-terminate the buffer + std::cout << "Received message: " << buffer << std::endl; + + // Close the client and server sockets + close(client_fd); + close(server_fd); + + return 0; +} +``` + +This is a simple program you can copy and run locally to test out (after reading the code and making it's not malware of course). You can test it out by running `nc 127.0.0.1 6697` in a separate terminal window. You can input anything you want and you'll notice back in your server logs your input is printed. Here is a quick breakdown of the code: + +- Socket Creation: The function `socket(2)` is used to create a TCP socket for the server. It establishes a communication endpoint for the server to listen for client connections. +- Binding: The function `bind(2)` binds the created socket to a specific port and IP address, as defined in the struct `sockaddr_in`. This associates the socket with a network address. +- Listening: The `listen(2)` function prepares the socket to accept incoming connections. It specifies the maximum number of connections that can be queued for acceptance. +- Accepting Connections: The `accept(2)` function waits for a client to connect. When a connection is established, it creates a new socket (referred to as client_fd) to handle the communication with the connected client. +- Reading Data: The `read(2)` function is used to read data from the client socket. It retrieves data sent by the client, which can then be processed by the server. + +This basic setup demonstrates how to handle client connections and read data in a straightforward manner. You'll need to adapt this code to suite the complexity of your server! + +### Channels + +A channel represents the core of group communication, allowing multiple clients to gather and interact in a shared space. Channels are akin to chat rooms where users can join, send messages, and participate in discussions. The channel is responsible for managing these interactions, enforcing rules, and maintaining the integrity of the group communication environment. + +Channels also have an important role in maintaining integrity, security, and synchronicity within the IRC server by enforcing access controls, managing permissions, and ensuring consistent communication among clients. They help uphold the defined rules, such as keeping unauthorized users out of invite-only channels, and maintaining a structured flow of information between clients. + +Channels work to synchronize message delivery, ensuring that all clients within the channel receive messages in the correct order and without duplication, thus maintaining the flow of conversation. They also safeguard the channel environment by allowing operators to moderate content, set topics, and manage user behavior, ensuring that the space remains orderly and adheres to the intended purpose. From ff1a50c044e2943c6b20a4b92e5e5c9d0738a943 Mon Sep 17 00:00:00 2001 From: Herbie Vine Date: Sat, 31 Aug 2024 20:48:38 +0200 Subject: [PATCH 2/4] fix: spelling --- src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx index c2ab489..9e16196 100644 --- a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx +++ b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx @@ -10,7 +10,7 @@ updatedAt: 2024-08-31 ## Introduction -`ft_irc` is a project which you may do during your cursus, and if you're reading this then I assume you are. It's a cool project, and resolves around you developing an IRC (Internet Relay Chat) server. It's not that hard, although it will challenge your understanding of communcation +`ft_irc` is a project which you may do during your cursus, and if you're reading this then I assume you are. It's a cool project, and resolves around you developing an IRC (Internet Relay Chat) server. It's not that hard, although it will challenge your understanding of bi-directional file-descriptor communication. ## Understanding the project scope From 8a0984c5aa22203a17f5e5058db21cb5b3b1c024 Mon Sep 17 00:00:00 2001 From: Herbie Vine Date: Wed, 4 Sep 2024 21:51:23 +0200 Subject: [PATCH 3/4] feat: publish irc --- public/static/assets/irc-command-flow.png | Bin 0 -> 89507 bytes public/static/assets/irc-global-overview.png | Bin 0 -> 145964 bytes src/components/meta.astro | 6 +- .../42-a-comprehensive-guide-to-ft_irc.mdx | 85 ++++++-- src/pages/index.astro | 2 +- src/pages/post/[...slug].astro | 188 +++++++++++------- 6 files changed, 188 insertions(+), 93 deletions(-) create mode 100644 public/static/assets/irc-command-flow.png create mode 100644 public/static/assets/irc-global-overview.png diff --git a/public/static/assets/irc-command-flow.png b/public/static/assets/irc-command-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..5edff67834a28f8ce71b6a082c3f970056afaa55 GIT binary patch literal 89507 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

T$St5jc7@ma#ahZ=!xk| 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 literal 0 HcmV?d00001 diff --git a/public/static/assets/irc-global-overview.png b/public/static/assets/irc-global-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..fb46e27d807b7b0595cf1cd749e9f10d7af45404 GIT binary patch literal 145964 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 @|tBRG24SeP{epncVo=ub~ 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 literal 0 HcmV?d00001 diff --git a/src/components/meta.astro b/src/components/meta.astro index 84f5e08..2731bce 100644 --- a/src/components/meta.astro +++ b/src/components/meta.astro @@ -2,9 +2,9 @@ import "../styles/globals.css"; interface Props { - title: string; - description: string; - slug?: string + title: string; + description: string; + slug?: string; } const canonicalURL = new URL(Astro.url.pathname, Astro.site); diff --git a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx index 9e16196..ff2a057 100644 --- a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx +++ b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx @@ -8,26 +8,25 @@ createdAt: 2024-08-31 updatedAt: 2024-08-31 --- -## Introduction +`ft_irc` is a project which you may do during your cursus, and if you’re reading this then I assume you are. It’s a cool project, and resolves around you developing an IRC (Internet Relay Chat) server. While it’s a manageable project, it will challenge and expand your understanding of bi-directional file-descriptor communication (aka sockets). -`ft_irc` is a project which you may do during your cursus, and if you're reading this then I assume you are. It's a cool project, and resolves around you developing an IRC (Internet Relay Chat) server. It's not that hard, although it will challenge your understanding of bi-directional file-descriptor communication. +If you don’t know what IRC is, here’s a TL;DR: it’s a simple and robust protocol built to host communities. Think of it as an early predecessor to modern platforms like Discord or Slack, but with a key difference: IRC is open, meaning anyone can create a server or build a client, giving users complete control over their chat environment, without relying on third-party services. ## Understanding the project scope -There are three fundamental pillars in this project. +I like to separate this project under four fundamental pillars: the server, the command parser, the channels, and the client (not the actual IRC client you will use to connect to the server, but a class which represents a “connection”, which I refer to a client). Each of these components plays a crucial role in creating a functional IRC server that allows clients to connect, communicate, and interact in real-time. Let’s break down each of these components to understand their roles and how they work together to create an awesome space to chat! -- **The Server:** This component manages critical server information such as active socket connections, connected clients and their respective FDs, channels, the current port/password, etc... It's responsible for maintaining the state of the server and handling incoming and outgoing messages between clients. -- **The Channel:** This is where clients gather to chat. The "Channel" manages channel-specific data such as the channel name, password, client limits, and topic. It handles adding and removing clients, broadcasting messages, and enforcing channel rules. Channels also keep track of operators and invited clients, ensuring proper access control and communication within the channel. +Here’s a little diagram of how I personally developed this, mainly focusing on the OOP structure of the project: -These components work together to create a functional IRC server where clients can connect, join channels, and communicate in real-time. In the following sections, we will explore each of these pillars in more detail, understanding their roles and how they interact within the `ft_irc` server. +![Overview of the project, detailing mainly the OOP structure](/static/assets/irc-global-overview.png) ### The server -In ft_irc, the server is integral to managing socket connections, which form the backbone of the server-client communication. The server uses sockets to handle incoming and outgoing data, enabling real-time interactions between clients and the IRC network. +The server is integral to managing socket connections, which forms the backbone of the server-client communication, as well as safeguarding top-level variables such as the server password. The server uses sockets to handle incoming and outgoing data, enabling real-time interactions between clients and the IRC network. -Socket Management begins with creating and binding a listening socket. This socket listens for incoming connection requests from clients. Once a connection is established, the server uses another socket to communicate with the client. Managing these sockets involves several steps: creating the socket, binding it to a port, listening for incoming connections, and accepting those connections. Each accepted connection is then handled by a new socket, allowing multiple clients to interact with the server concurrently. +Socket management begins with creating and binding a listening socket. This socket listens for incoming connection requests from clients. Once a connection is established, the server uses another socket to communicate with the client. Managing these sockets involves several steps: creating the socket, binding it to a port, listening for incoming connections, and accepting those connections. Each accepted connection is then handled by a new socket, allowing multiple clients to interact with the server concurrently. -Here's a basic example demonstrating how to accept connections and read data from clients using sockets: +Here’s a basic example demonstrating how to accept connections and read data from a client using a socket: ```cpp #include @@ -42,7 +41,7 @@ int main() { struct sockaddr_in server_addr, client_addr; socklen_t client_addr_len = sizeof(client_addr); char buffer[1024]; - int port = 6667; // Default IRC port + int port = 6667; // Default IRC port // Create the server socket server_fd = socket(AF_INET, SOCK_STREAM, 0); @@ -53,9 +52,9 @@ int main() { // Set up the server address struct memset(&server_addr, 0, sizeof(server_addr)); - server_addr.sin_family = AF_INET; - server_addr.sin_addr.s_addr = INADDR_ANY; - server_addr.sin_port = htons(port); + server_addr.sin_family = AF_INET; // Set the address family to IPv4 + server_addr.sin_addr.s_addr = INADDR_ANY; // Bind to all available interfaces + server_addr.sin_port = htons(port); // Convert the port to network byte order // Bind the socket to the address and port if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { @@ -92,7 +91,7 @@ int main() { return 1; } - buffer[bytes_read] = '\0'; // Null-terminate the buffer + buffer[bytes_read] = '\0'; // Null-terminate the buffer std::cout << "Received message: " << buffer << std::endl; // Close the client and server sockets @@ -103,7 +102,7 @@ int main() { } ``` -This is a simple program you can copy and run locally to test out (after reading the code and making it's not malware of course). You can test it out by running `nc 127.0.0.1 6697` in a separate terminal window. You can input anything you want and you'll notice back in your server logs your input is printed. Here is a quick breakdown of the code: +This is a simple program you can copy and run locally (after reading the code and making it’s not malware of course!). You can test it out by running it in the background and running `nc 127.0.0.1 6697` in a separate terminal window. You can input anything you want into `STDIN` and you’ll notice back in your server logs your input is printed. Here is a quick explanation of the code: - Socket Creation: The function `socket(2)` is used to create a TCP socket for the server. It establishes a communication endpoint for the server to listen for client connections. - Binding: The function `bind(2)` binds the created socket to a specific port and IP address, as defined in the struct `sockaddr_in`. This associates the socket with a network address. @@ -111,12 +110,60 @@ This is a simple program you can copy and run locally to test out (after reading - Accepting Connections: The `accept(2)` function waits for a client to connect. When a connection is established, it creates a new socket (referred to as client_fd) to handle the communication with the connected client. - Reading Data: The `read(2)` function is used to read data from the client socket. It retrieves data sent by the client, which can then be processed by the server. -This basic setup demonstrates how to handle client connections and read data in a straightforward manner. You'll need to adapt this code to suite the complexity of your server! +This basic setup demonstrates how to handle client connections and read data in a straightforward manner. You’ll need to adapt this code just a bit to suite the complexity of your server—it would be too easy if I just gave it to you, right? + +### Parsing the input + +After you create a socket and manage active connections, you need a way to parse incoming commands and send them to the correct service for handling. This of course doesn’t require much work, mostly if-else is OK. + +However, this is the part where you might want to handle a global authentication wall, as most commands are not accessible to non-registered users. A basic setup required for the subject is a 3-tier auth state, from `UNAUTHENTICATED`, to `AUTHENTICATED`, and finally to `REGISTERED`. + +![Example of the flow of information, from raw command to reply](/static/assets/irc-command-flow.png) ### Channels -A channel represents the core of group communication, allowing multiple clients to gather and interact in a shared space. Channels are akin to chat rooms where users can join, send messages, and participate in discussions. The channel is responsible for managing these interactions, enforcing rules, and maintaining the integrity of the group communication environment. +Channels are the heart of group communication on your IRC server—they're the rooms where clients gather, chat, and interact in real-time. Think of channels as virtual spaces, each with its own set of rules, members, and vibe. + +Each channel is identified by a name (prefixed with a `#`, like `#general`) and can have various attributes such as a topic, a list of operators, a user limit, and even a password for restricted access. So when a user joins a channel, they're subject to the channel's specific rules and permissions. + +The channel is responsible for maintaining a list of members, tracking which users are in the room at any given time, and ensuring the rules are enforced. This includes managing operator privileges, which allow certain users to kick or ban others, set topics, and tweak channel settings. + +Channels also manage the flow of messages. When a user sends a message to a channel, the channel must ensure that the message is broadcasted to all members of the channel. This message synchronisation ensures everyone is on the same page, maintaining the natural rhythm of the conversation. + +Another key aspect of channels is their ability to control access. Channels can be open to all, invite-only, or password-protected. These settings are applies differently too, some upon initialisation, and others with the `MODE` command. I’ll let you figure that one out. + +### Clients + +In the context of the server, a "Client" isn't just a person sitting behind an IRC client like HexChat or irssi—it's actually a representation of a connection to the server, abstracted into a class that manages the state of each user interacting with the IRC network. + +The client class handles all the crucial data tied to each user: their nickname, username, hostname, real name, FD, and importantly, their current authentication state. As users progress through the connection lifecycle—from initial connection, to setting their nickname and username, and finally registering with the server—the client class helps track and enforce these states to ensure smooth server operations. + +This class is also responsible for managing which channels the user is currently in, handling incoming and outgoing messages, and maintaining a correct status of the user’s activity on the server. For example, when a user sends a message, the client must ensures that the message is formatted correctly and sent to the intended recipient(s), whether that’s another user or an entire channel. + +The client is more than just a data holder—it’s an active participant in the server’s functionality, ensuring that all communication happens as expected and that the user experience remains seamless and enjoyable. + +## Responding to messages + +So now that you understand the basic structure of the project, I want to give you a hand with responding to certain messages, as it’s not always clear… + +I recommend reading up on the IRCv3 specification, instead of the [RFC1459](https://tools.ietf.org/html/rfc1459), [RFC2812](https://tools.ietf.org/html/rfc2812) of [RFC7194](https://tools.ietf.org/html/rfc7194) specs, which are relatively outdated. Not that the old RFC won’t work, but simply because you may waste time decoding messages from clients that follow the new protocol. + +The next thing I recommend, is to connect to Libera Chat—the most popular public IRC server—with `netcat`. As you do this, you can replicate their behaviour instead of constantly relying on the RFC to explain the commands (as again: it’s not always clear). + +## Which client should I use? + +There are many clients to choose from, but by far the best one we found was [Halloy](https://halloy.squidowl.org/). It’s cross-platform, reliable, simple, and easy to configure. The only downside is that you need Cargo to run it at 42, which may not be available. Another option is [irssi](https://irssi.org/), but again it requires some dependancies to get up and running. + +## Common Mistakes + +- Be careful to properly broadcast each event that other clients need to see (when someone joins/leaves a channel, if someone if kicked, or if the mode changes) +- `JOIN #chan1,#chan2,#chan3 pass1,pass2` +- What if `username`, `nickname` and `realname` were all different? +- Make sure to test the `+k` mode properly! +- Why do I have a `@` prefixed to my nickname? -Channels also have an important role in maintaining integrity, security, and synchronicity within the IRC server by enforcing access controls, managing permissions, and ensuring consistent communication among clients. They help uphold the defined rules, such as keeping unauthorized users out of invite-only channels, and maintaining a structured flow of information between clients. +## Additional Resources -Channels work to synchronize message delivery, ensuring that all clients within the channel receive messages in the correct order and without duplication, thus maintaining the flow of conversation. They also safeguard the channel environment by allowing operators to moderate content, set topics, and manage user behavior, ensuring that the space remains orderly and adheres to the intended purpose. +- [Modern IRCv3 Specification](https://modern.ircdocs.horse/) +- [Blocking vs Non-Blocking Sockets via Stack Overflow](https://stackoverflow.com/questions/10654286/why-should-i-use-non-blocking-or-blocking-sockets) +- [Libera Chat](https://libera.chat/) diff --git a/src/pages/index.astro b/src/pages/index.astro index b668b26..be4f68f 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,6 +1,6 @@ --- import { getCollection } from "astro:content"; -import Meta from "@/components/meta.astro" +import Meta from "@/components/meta.astro"; import dayjs from "dayjs"; const posts = await getCollection("posts"); diff --git a/src/pages/post/[...slug].astro b/src/pages/post/[...slug].astro index 83ac80b..9847e65 100644 --- a/src/pages/post/[...slug].astro +++ b/src/pages/post/[...slug].astro @@ -1,84 +1,132 @@ --- -import { type CollectionEntry, getCollection } from 'astro:content'; -import Meta from '@/components/meta.astro'; +import { type CollectionEntry, getCollection } from "astro:content"; +import Meta from "@/components/meta.astro"; import dayjs from "dayjs"; export async function getStaticPaths() { - const posts = await getCollection('posts'); + const posts = await getCollection("posts"); - return posts.map((post) => ({ - params: { slug: post.slug }, - props: post, - })); + return posts.map((post) => ({ + params: { slug: post.slug }, + props: post, + })); } -type Props = CollectionEntry<'blog'>; +type Props = CollectionEntry<"blog">; const post = Astro.props; const { Content } = await post.render(); --- - - - - -

- - reactive.so - -
-
-

- {post.data.title} -

-
- - - -  •  -
- - {post.data.author.name} - -
- {post.data.contributors.length > 0 && ( - <> -  with  - {post.data.contributors.map((contributor, index) => ( - <> -
- - {contributor.name} - -
- {index < post.data.contributors.length - 2 && } - {index === post.data.contributors.length - 2 &&  and } - - ))} - - )} -
-
- -
-
- + + + + +
+ + reactive.so + +
+
+

+ {post.data.title} +

+
+ + + +  •  +
+ + {post.data.author.name} + +
+ { + post.data.contributors.length > 0 && ( + <> +  with  + {post.data.contributors.map( + (contributor, index) => ( + <> +
+ + {contributor.name} + +
+ {index < + post.data.contributors + .length - + 2 && ( + + )} + {index === + post.data.contributors + .length - + 2 && ( +  and  + )} + + ), + )} + + ) + } +
+
+ +
+
+ From f588e2f24dc4bfa27b0d4bc9d1a914cd94c38028 Mon Sep 17 00:00:00 2001 From: Herbie Vine Date: Wed, 4 Sep 2024 21:52:46 +0200 Subject: [PATCH 4/4] fix: typo --- src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx index ff2a057..8657c05 100644 --- a/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx +++ b/src/content/posts/42-a-comprehensive-guide-to-ft_irc.mdx @@ -152,7 +152,7 @@ The next thing I recommend, is to connect to Libera Chat—the most popular publ ## Which client should I use? -There are many clients to choose from, but by far the best one we found was [Halloy](https://halloy.squidowl.org/). It’s cross-platform, reliable, simple, and easy to configure. The only downside is that you need Cargo to run it at 42, which may not be available. Another option is [irssi](https://irssi.org/), but again it requires some dependancies to get up and running. +There are many clients to choose from, but by far the best one we found was [Halloy](https://halloy.squidowl.org/). It’s cross-platform, reliable, simple, and easy to configure. The only downside is that you need Cargo to run it at 42, which may not be available. Another option is [irssi](https://irssi.org/), but again it requires some dependencies to get up and running. ## Common Mistakes