From be09476005b138729d86853c219ce3b2c07718a9 Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Fri, 10 May 2024 15:07:49 +0200 Subject: [PATCH] first --- ft_irc/.vscode/settings.json | 52 +++++++++++++++++++ ft_irc/build/Channel.o | Bin 44352 -> 45288 bytes ft_irc/build/Client.o | Bin 5128 -> 7832 bytes ft_irc/build/CommandHandler.o | Bin 121432 -> 122992 bytes ft_irc/build/Server.o | Bin 24784 -> 46280 bytes ft_irc/include/Client.hpp | 11 ++-- ft_irc/include/Server.hpp | 24 +++++++-- ft_irc/ircserv | Bin 96352 -> 110112 bytes ft_irc/src/Client.cpp | 27 ++++++++-- ft_irc/src/CommandHandler.cpp | 4 +- ft_irc/src/Server.cpp | 93 +++++++++++++++++++++------------- notessujet | 2 + 12 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 ft_irc/.vscode/settings.json diff --git a/ft_irc/.vscode/settings.json b/ft_irc/.vscode/settings.json new file mode 100644 index 0000000..c875477 --- /dev/null +++ b/ft_irc/.vscode/settings.json @@ -0,0 +1,52 @@ +{ + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "map": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/ft_irc/build/Channel.o b/ft_irc/build/Channel.o index 1b17daf22c33ad06b861bd7a7139b0b80632f200..4457dab8b90a947fe76192ca57e0d84410a407e2 100644 GIT binary patch delta 9333 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 diff --git a/ft_irc/build/Client.o b/ft_irc/build/Client.o index d40aa3801f386371517c18302348408d269fa5ab..82b2d7764f8dd44c216d215e9d3d4f55d7fec61e 100644 GIT binary patch literal 7832 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 literal 121432 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

C|TnC*jzux2%{3gKP1AGPGN62P_<-Zy5p@4r0 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 diff --git a/ft_irc/build/Server.o b/ft_irc/build/Server.o index b90c263dda2f687d5b8bc7786703518df56242e5..0baa7a95b31909340972beebfecd9b123a393ef9 100644 GIT binary patch literal 46280 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 TgPSJ)p;pQCD*4Bgpa1^=NUS+- diff --git a/ft_irc/include/Client.hpp b/ft_irc/include/Client.hpp index 85dc221..b550e0e 100644 --- a/ft_irc/include/Client.hpp +++ b/ft_irc/include/Client.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:07:00 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:33:20 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/10 14:10:35 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,7 @@ #include #include #include +#include class Client { public: @@ -25,12 +26,16 @@ public: void sendMessage(const std::string& message); std::string receiveMessage(); - void setNickname(const std::string& newNickname); // Ajout de la méthode setNickname + void setNickname(const std::string& newNickname); + std::string getNickname() const; // Ajout de la méthode getNickname + int getSocket() const; private: int socket; - std::string nickname; + std::string nickname; // Assurez-vous que cette donnée membre est accessible via getNickname std::string username; }; #endif + + diff --git a/ft_irc/include/Server.hpp b/ft_irc/include/Server.hpp index 2a44f32..5d395d2 100644 --- a/ft_irc/include/Server.hpp +++ b/ft_irc/include/Server.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:01:12 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:39:02 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/10 14:10:44 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,6 @@ #include #include -#include "Client.hpp" -#include "CommandHandler.hpp" #include #include #include @@ -24,7 +22,21 @@ #include #include #include +#include +#include "Client.hpp" // Assurez-vous que Client est inclus avant Server +#include "CommandHandler.hpp" + +class Server; // Déclaration anticipée de Server si nécessaire + +// Structure pour passer des données aux threads +struct ClientContext { + Client* client; + Server* server; + CommandHandler* cmdHandler; + + ClientContext(Client* c, Server* s, CommandHandler* ch) : client(c), server(s), cmdHandler(ch) {} +}; class Server { public: Server(int port, const std::string& password); @@ -37,9 +49,11 @@ private: int port; // Port number to bind the server std::string password; // Server password for client connections bool running; // Server running status - std::vector clients; // List of connected clients + std::vector threads; // List of threads for client management - void manageClient(Client* client, CommandHandler& cmdHandler); + static void *manageClient(void *clientContext); // Static to be compatible with pthread }; #endif // SERVER_HPP + + diff --git a/ft_irc/ircserv b/ft_irc/ircserv index ae7b4734e0d5eeba47a5089b417c6b26530dc614..e37856d1b68040905c10e68fbc915567966e662e 100755 GIT binary patch literal 110112 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 literal 96352 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 P9j@UkT2TRrE|dQNntps0 diff --git a/ft_irc/src/Client.cpp b/ft_irc/src/Client.cpp index 3f475da..22355da 100644 --- a/ft_irc/src/Client.cpp +++ b/ft_irc/src/Client.cpp @@ -6,11 +6,13 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:07:27 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:33:11 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/10 13:33:20 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ #include "Client.hpp" +#include +#include Client::Client(int socket, const std::string& nickname, const std::string& username) : socket(socket), nickname(nickname), username(username) {} @@ -20,19 +22,38 @@ Client::~Client() { } void Client::sendMessage(const std::string& message) { + std::cout << "Sending message: " << message << std::endl; send(socket, message.c_str(), message.size(), 0); } std::string Client::receiveMessage() { char buffer[1024]; std::memset(buffer, 0, sizeof(buffer)); - int len = recv(socket, buffer, sizeof(buffer), 0); + int len = recv(socket, buffer, sizeof(buffer) - 1, 0); if (len > 0) { - return std::string(buffer, len); + buffer[len] = '\0'; // Ensure null termination + std::string received(buffer); + // Erase newline and carriage return characters + size_t pos; + while ((pos = received.find_first_of("\r\n")) != std::string::npos) { + received.erase(pos, 1); + } + std::cout << "Received message: [" << received << "]" << std::endl; + return received; } return ""; } + void Client::setNickname(const std::string& newNickname) { nickname = newNickname; } + +std::string Client::getNickname() const { + return nickname; +} + +int Client::getSocket() const { + return socket; +} + diff --git a/ft_irc/src/CommandHandler.cpp b/ft_irc/src/CommandHandler.cpp index a605ea9..0ad09b2 100644 --- a/ft_irc/src/CommandHandler.cpp +++ b/ft_irc/src/CommandHandler.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:19:15 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:33:32 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/10 12:33:00 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,9 +62,11 @@ void CommandHandler::handleNick(const std::string& command, Client* client) { std::vector tokens = split(command, ' '); if (tokens.size() > 1) { client->setNickname(tokens[1]); + std::cout << "Nickname set to: " << tokens[1] << std::endl; // Afficher et enregistrer l'action } } + void CommandHandler::handlePrivmsg(const std::string& command, Client* client) { std::vector tokens = split(command, ' '); if (tokens.size() > 2) { diff --git a/ft_irc/src/Server.cpp b/ft_irc/src/Server.cpp index 56780e2..f487f5e 100644 --- a/ft_irc/src/Server.cpp +++ b/ft_irc/src/Server.cpp @@ -6,90 +6,115 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:01:34 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:48:31 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/10 14:13:02 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ +// Server.cpp #include "Server.hpp" Server::Server(int port, const std::string& password) : port(port), password(password), running(false) {} Server::~Server() { - // Nettoyage des ressources si nécessaire - close(listener); // Assurez-vous de fermer le socket d'écoute - // Nettoyage des clients dynamiquement alloués, si vous ne l'avez pas déjà fait - for (std::vector::iterator it = clients.begin(); it != clients.end(); ++it) { - delete *it; + for (size_t i = 0; i < threads.size(); ++i) { + if (threads[i]) pthread_join(threads[i], NULL); } + close(listener); } bool Server::initialize() { struct sockaddr_in server_addr; - - // Création du socket listener = socket(AF_INET, SOCK_STREAM, 0); if (listener == -1) { std::cerr << "Error creating socket: " << strerror(errno) << std::endl; return false; } - // Préparation de l'adresse du serveur 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); - // Liaison du socket if (bind(listener, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { std::cerr << "Error binding socket: " << strerror(errno) << std::endl; close(listener); return false; } - // Mise en écoute du socket - if (listen(listener, 10) == -1) { // backlog set to 10 + if (listen(listener, 10) == -1) { std::cerr << "Error listening: " << strerror(errno) << std::endl; close(listener); return false; } std::cout << "Server initialized and listening on port " << port << std::endl; + running = true; return true; } void Server::run() { - running = true; - struct sockaddr_in client_addr; - socklen_t client_len = sizeof(client_addr); - CommandHandler cmdHandler; + if (!running) { + std::cerr << "Server not initialized or already running." << std::endl; + return; + } + CommandHandler cmdHandler; while (running) { + struct sockaddr_in client_addr; + socklen_t client_len = sizeof(client_addr); int client_sock = accept(listener, (struct sockaddr *)&client_addr, &client_len); if (client_sock == -1) { std::cerr << "Error accepting connection: " << strerror(errno) << std::endl; continue; } - std::cout << "Client connected: " << client_sock << std::endl; - try { - // Créez un nouvel objet Client avec des valeurs par défaut pour nickname et username - Client* newClient = new Client(client_sock, "DefaultNickname", "DefaultUsername"); - std::string welcomeMsg = "Welcome to the IRC Server!\n"; - newClient->sendMessage(welcomeMsg); - manageClient(newClient, cmdHandler); - } catch (const std::exception& e) { - std::cerr << "Exception handling client: " << e.what() << std::endl; - close(client_sock); - } + Client* newClient = new Client(client_sock, "DefaultNickname", "DefaultUsername"); + ClientContext* context = new ClientContext(newClient, this, &cmdHandler); + pthread_t thread; + pthread_create(&thread, NULL, &Server::manageClient, context); + pthread_detach(thread); + threads.push_back(thread); } } -void Server::manageClient(Client* client, CommandHandler& cmdHandler) { - // Boucle pour recevoir les commandes du client - while (running) { - std::string command = client->receiveMessage(); - if (command.empty()) break; // Client disconnected - cmdHandler.handleCommand(command, client); +void* Server::manageClient(void *clientContext) { + ClientContext* ctx = static_cast(clientContext); + Client* client = ctx->client; + Server* server = ctx->server; + + client->sendMessage("Welcome to the IRC Server!\n"); + client->sendMessage("Password required:\n"); + + std::string passwordInput = client->receiveMessage(); + std::cout << "Received password: [" << passwordInput << "]" << std::endl; + + if (passwordInput != server->password) { + client->sendMessage("Incorrect password.\n"); + std::cout << "Password mismatch." << std::endl; + close(client->getSocket()); + delete client; + delete ctx; + return NULL; } - delete client; // Cleanup when client disconnects + + client->sendMessage("Password correct.\n"); + + std::string command; + while ((command = client->receiveMessage()) != "") { + ctx->cmdHandler->handleCommand(command, client); + if (command == "QUIT") break; + } + + close(client->getSocket()); + delete client; + delete ctx; + return NULL; } + + + + + + + + diff --git a/notessujet b/notessujet index a68890c..019fe59 100644 --- a/notessujet +++ b/notessujet @@ -317,3 +317,5 @@ Scalabilité : Pensez à la scalabilité de votre serveur avec ces nouvelles fon Conformité aux standards : Même pour les fonctionnalités bonus, tenez-vous aux standards IRC et aux bonnes pratiques de programmation pour garantir que votre serveur peut interagir correctement avec d'autres clients et serveurs IRC. Ces fonctionnalités bonus peuvent grandement enrichir l'expérience utilisateur sur votre serveur IRC, le rendant plus attractif et plus utile pour vos utilisateurs. + +Dans le cadre de notre projet nous utiliserons hexcat comme reference de client irc.