From 15d3dd47fdda0d6b1a473cc752e533a89981a9c0 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Fri, 10 Feb 2023 10:01:01 +0100 Subject: [PATCH] compil with flag, change from simple tab to vector for function pointer tab to match cpp98 --- Makefile | 9 +- includes/ft_irc.hpp | 221 ++----------- includes/function_tab.hpp | 185 +++++++++++ srcs/client_request.cpp | 4 +- .../auth/{utils.cpp => cmd_utils.cpp} | 5 +- srcs/commands/channel/channel_utils.cpp | 27 ++ srcs/commands/channel/join.cpp | 40 ++- srcs/commands/not_done_cmd.cpp | 293 ++++++++++++++++++ srcs/commands/parse_commands.cpp | 26 +- srcs/new_connection.cpp | 4 +- srcs/server_loop.cpp | 8 +- srcs/start_server.cpp | 4 +- 12 files changed, 607 insertions(+), 219 deletions(-) create mode 100644 includes/function_tab.hpp rename srcs/commands/auth/{utils.cpp => cmd_utils.cpp} (93%) create mode 100644 srcs/commands/channel/channel_utils.cpp create mode 100644 srcs/commands/not_done_cmd.cpp diff --git a/Makefile b/Makefile index 8ffce4e..27f1d72 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/01 17:27:29 by apommier #+# #+# # -# Updated: 2023/02/09 14:35:20 by apommier ### ########.fr # +# Updated: 2023/02/10 08:18:36 by apommier ### ########.fr # # # # **************************************************************************** # @@ -22,11 +22,14 @@ SRCS := main.cpp\ commands/auth/nick.cpp\ commands/auth/pass.cpp\ commands/auth/user.cpp\ - commands/auth/utils.cpp + commands/auth/cmd_utils.cpp\ + commands/channel/channel_utils.cpp\ + commands/channel/join.cpp\ + commands/not_done_cmd.cpp #special (temporary) CC = c++ FLAGS = -g -#FLAGS2 = -Wall -Wextra -Werror -std=c++98 +FLAGS2 = -Wall -Wextra -Werror -std=c++98 DIR_OBJ := obj DIR_INC = -I ./includes/ DIR_SRCS := ./srcs diff --git a/includes/ft_irc.hpp b/includes/ft_irc.hpp index edf95c4..78103ab 100644 --- a/includes/ft_irc.hpp +++ b/includes/ft_irc.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/01 17:27:37 by apommier #+# #+# */ -/* Updated: 2023/02/09 14:41:14 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:59:10 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,193 +23,12 @@ #include #include +#include "function_tab.hpp" + #define MAX_EVENTS 5 #define READ_SIZE 10 #define CMD_NBR 10 -//struct functionTab; -struct fdList; - -//std::string ft_test(); - -/* ************************************************************************** */ -/* *********************************COMMANDS********************************* */ -/* ************************************************************************** */ - - void PASS(std::string buffer, fdList &allFds, int userNbr); - void NICK(std::string buffer, fdList &allFds, int userNbr); - void USER(std::string buffer, fdList &allFds, int userNbr); - void SERVER(std::string buffer, fdList &allFds, int userNbr); - void OPER(std::string buffer, fdList &allFds, int userNbr); - void QUIT(std::string buffer, fdList &allFds, int userNbr); - void SQUIT(std::string buffer, fdList &allFds, int userNbr); - void JOIN(std::string buffer, fdList &allFds, int userNbr); - void PART(std::string buffer, fdList &allFds, int userNbr); - void MODE(std::string buffer, fdList &allFds, int userNbr); - void TOPIC(std::string buffer, fdList &allFds, int userNbr); - void NAMES(std::string buffer, fdList &allFds, int userNbr); - void LIST(std::string buffer, fdList &allFds, int userNbr); - void INVITE(std::string buffer, fdList &allFds, int userNbr); - void KICK(std::string buffer, fdList &allFds, int userNbr); - void VERSION(std::string buffer, fdList &allFds, int userNbr); - void STATS(std::string buffer, fdList &allFds, int userNbr); - void LINKS(std::string buffer, fdList &allFds, int userNbr); - void TIME(std::string buffer, fdList &allFds, int userNbr); - void CONNECT(std::string buffer, fdList &allFds, int userNbr); - void TRACE(std::string buffer, fdList &allFds, int userNbr); - void ADMIN(std::string buffer, fdList &allFds, int userNbr); - void INFO(std::string buffer, fdList &allFds, int userNbr); - void PRIVMSG(std::string buffer, fdList &allFds, int userNbr); - void NOTICE(std::string buffer, fdList &allFds, int userNbr); - void WHO(std::string buffer, fdList &allFds, int userNbr); - void WHOIS(std::string buffer, fdList &allFds, int userNbr); - void WHOWAS(std::string buffer, fdList &allFds, int userNbr); - void KILL(std::string buffer, fdList &allFds, int userNbr); - void PING(std::string buffer, fdList &allFds, int userNbr); - void PONG(std::string buffer, fdList &allFds, int userNbr); - void ERROR(std::string buffer, fdList &allFds, int userNbr); - void AWAY(std::string buffer, fdList &allFds, int userNbr); - void REHASH(std::string buffer, fdList &allFds, int userNbr); - void RESTART(std::string buffer, fdList &allFds, int userNbr); - void SUMMON(std::string buffer, fdList &allFds, int userNbr); - void USER(std::string buffer, fdList &allFds, int userNbr); - void OPERWALL(std::string buffer, fdList &allFds, int userNbr); - void USERHOST(std::string buffer, fdList &allFds, int userNbr); - void ISON(std::string buffer, fdList &allFds, int userNbr); - - -/* ************************************************************************** */ -/* *****************************COMMAND STRUCT******************************* */ -/* ************************************************************************** */ - -struct functionTab -{ - static const int cmdNbr = 40; - std::string cmdName[cmdNbr] = - { - //4. Détails des messages - - //4.1 Etablissement de connexion - "PASS", - "NICK", - "USER", - "SERVER", - "OPER", - "QUIT", - "SQUIT", - - //4.2 Opérations sur les canaux - "JOIN", - "PART", - "MODE", - "TOPIC", - "NAMES", - "LIST", - "INVITE", - "KICK", - - //4.3 Requêtes et commandes des serveurs - "VERSION", - "STATS", - "LINKS", - "TIME", - "CONNECT", - "TRACE", - "ADMIN", - "INFO", - - //4.4 Envoi de messages - "PRIVMSG", - "NOTICE", - - //4.5 Requêtes basées sur les utilisateurs - - "WHO", - "WHOIS", - "WHOWAS", - //4.6 Messages divers - - "KILL", - "PING", - "PONG", - "ERROR", - - //5. Messages optionnels - "AWAY", - "REHASH", - "RESTART", - "SUMMON", - "USER", - "OPERWALL", - "USERHOST", - "ISON" - }; - - - //std::string (*cmdPtr[cmdNbr])(void) = - void (*cmdPtr[cmdNbr])(std::string buffer, fdList &allFds, int userNbr) = - { - //ft_test - - //4. Détails des messages - - // //4.1 Etablissement de connexion - PASS, - NICK, - USER - // SERVER, - // OPER, - // QUIT, - // SQUIT, - - // //4.2 Opérations sur les canaux - // JOIN, - // PART, - // MODE, - // TOPIC, - // NAMES, - // LIST, - // INVITE, - // KICK, - - // //4.3 Requêtes et commandes des serveurs - // VERSION, - // STATS, - // LINKS, - // TIME, - // CONNECT, - // TRACE, - // ADMIN, - // INFO, - - // //4.4 Envoi de messages - // PRIVMSG, - // NOTICE, - - // //4.5 Requêtes basées sur les utilisateurs - - // WHO, - // WHOIS, - // WHOWAS, - // //4.6 Messages divers - - // KILL, - // PING, - // PONG, - // ERROR, - - // //5. Messages optionnels - // AWAY, - // REHASH, - // RESTART, - // SUMMON, - // USER, - // OPERWALL, - // USERHOST, - // ISON - }; -}; - /* ************************************************************************** */ /* *********************************STRUCT*********************************** */ /* ************************************************************************** */ @@ -218,27 +37,34 @@ struct channelData; struct clientData { - bool registered = 0; - std::string buf[1024]; + bool registered; + + clientData() { registered = 0; } std::string nickname; std::string password; - + std::string userName; std::string realName; std::string hostName; std::string serverName; - + + std::string cmdBuffer; //std::string joinedChan[20]; - channelData *joinedChan; //is there a limit? - int nbrChan; - int perm; + //channelData *joinedChan; //is there a limit? + + // std::vector joinedChan; + std::vector joinedChan; int fd; }; struct channelData { //std::string userList[MAX_EVENTS]; - clientData userList[MAX_EVENTS]; + + //clientData userList[MAX_EVENTS]; + std::string name; + std::vector userList; + std::vector banList; int op; int nbrUser; }; @@ -252,6 +78,7 @@ struct fdList //&allFds in code int serverFd; //int userList[MAX_EVENTS]; //list of userNbr's fd std::vector userList; + std::vector channelList; //clientData userData[MAX_EVENTS]; std::vector userData; @@ -264,7 +91,7 @@ struct fdList //&allFds in code /* ************************************************************************** */ -/* *********************************UTILS************************************ */ +/* *******************************CMD UTILS********************************** */ /* ************************************************************************** */ void ft_error(std::string str); @@ -273,6 +100,12 @@ void cmd_error(fdList &allFds, int userNbr, std::string error); void split(std::string const &str, const char delim, std::vector &out); void print_registered_msg(fdList &allFds, int userNbr); +/* ************************************************************************** */ +/* *******************************CHAN UTILS********************************* */ +/* ************************************************************************** */ + +int find_channel(fdList &allFds, std::string chanName); + /* ************************************************************************** */ /* ******************************START SERVER******************************** */ /* ************************************************************************** */ @@ -291,7 +124,7 @@ int epoll_start(); //2nd /* *************************CONNECTION AND REQUEST*************************** */ /* ************************************************************************** */ -void new_connection(fdList &allFds, struct epoll_event newClient); +void new_connection(fdList &allFds); bool clientRequest(fdList &allFds, int userNbr); /* ************************************************************************** */ diff --git a/includes/function_tab.hpp b/includes/function_tab.hpp new file mode 100644 index 0000000..af6969e --- /dev/null +++ b/includes/function_tab.hpp @@ -0,0 +1,185 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* function_tab.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/02/10 08:55:52 by apommier #+# #+# */ +/* Updated: 2023/02/10 09:59:21 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "./ft_irc.hpp" + +struct fdList; + +/* ************************************************************************** */ +/* *********************************COMMANDS********************************* */ +/* ************************************************************************** */ + + void PASS(std::string buffer, fdList &allFds, int userNbr); + void NICK(std::string buffer, fdList &allFds, int userNbr); + void USER(std::string buffer, fdList &allFds, int userNbr); + void SERVER(std::string buffer, fdList &allFds, int userNbr); + void OPER(std::string buffer, fdList &allFds, int userNbr); + void QUIT(std::string buffer, fdList &allFds, int userNbr); + void SQUIT(std::string buffer, fdList &allFds, int userNbr); + void JOIN(std::string buffer, fdList &allFds, int userNbr); + void PART(std::string buffer, fdList &allFds, int userNbr); + void MODE(std::string buffer, fdList &allFds, int userNbr); + void TOPIC(std::string buffer, fdList &allFds, int userNbr); + void NAMES(std::string buffer, fdList &allFds, int userNbr); + void LIST(std::string buffer, fdList &allFds, int userNbr); + void INVITE(std::string buffer, fdList &allFds, int userNbr); + void KICK(std::string buffer, fdList &allFds, int userNbr); + void VERSION(std::string buffer, fdList &allFds, int userNbr); + void STATS(std::string buffer, fdList &allFds, int userNbr); + void LINKS(std::string buffer, fdList &allFds, int userNbr); + void TIME(std::string buffer, fdList &allFds, int userNbr); + void CONNECT(std::string buffer, fdList &allFds, int userNbr); + void TRACE(std::string buffer, fdList &allFds, int userNbr); + void ADMIN(std::string buffer, fdList &allFds, int userNbr); + void INFO(std::string buffer, fdList &allFds, int userNbr); + void PRIVMSG(std::string buffer, fdList &allFds, int userNbr); + void NOTICE(std::string buffer, fdList &allFds, int userNbr); + void WHO(std::string buffer, fdList &allFds, int userNbr); + void WHOIS(std::string buffer, fdList &allFds, int userNbr); + void WHOWAS(std::string buffer, fdList &allFds, int userNbr); + void KILL(std::string buffer, fdList &allFds, int userNbr); + void PING(std::string buffer, fdList &allFds, int userNbr); + void PONG(std::string buffer, fdList &allFds, int userNbr); + void ERROR(std::string buffer, fdList &allFds, int userNbr); + void AWAY(std::string buffer, fdList &allFds, int userNbr); + void REHASH(std::string buffer, fdList &allFds, int userNbr); + void RESTART(std::string buffer, fdList &allFds, int userNbr); + void SUMMON(std::string buffer, fdList &allFds, int userNbr); + void USER(std::string buffer, fdList &allFds, int userNbr); + void OPERWALL(std::string buffer, fdList &allFds, int userNbr); + void USERHOST(std::string buffer, fdList &allFds, int userNbr); + void ISON(std::string buffer, fdList &allFds, int userNbr); + + +struct functionTab +{ + static const int cmdNbr = 40; + + std::vectorcmdName; + //std::vector<(void *)(std::string buffer, fdList &allFds, int userNbr); + std::vectorcmdPtr; + functionTab() + { + +//4.1 Etablissement de connexion + cmdName.push_back("PASS"); + cmdName.push_back("NICK"); + cmdName.push_back("USER"); + cmdName.push_back("SERVER"); + cmdName.push_back("OPER"); + cmdName.push_back("QUIT"); + cmdName.push_back("SQUIT"); + +//4.2 Opérations sur les canaux + cmdName.push_back("JOIN"); + cmdName.push_back("PART"); + cmdName.push_back("MODE"); + cmdName.push_back("TOPIC"); + cmdName.push_back("NAMES"); + cmdName.push_back("LIST"); + cmdName.push_back("INVITE"); + cmdName.push_back("KICK"); + +//4.3 Requêtes et commandes des serveurs + cmdName.push_back("VERSION"); + cmdName.push_back("STATS"); + cmdName.push_back("LINKS"); + cmdName.push_back("TIME"); + cmdName.push_back("CONNECT"); + cmdName.push_back("TRACE"); + cmdName.push_back("ADMIN"); + cmdName.push_back("INFO"); + +//4.4 Envoi de messages + cmdName.push_back("PRIVMSG"); + cmdName.push_back("NOTICE"); + +//4.5 Requêtes basées sur les utilisateurs + + cmdName.push_back("WHO"); + cmdName.push_back("WHOIS"); + cmdName.push_back("WHOWAS"); +//4.6 Messages divers + + cmdName.push_back("KILL"); + cmdName.push_back("PING"); + cmdName.push_back("PONG"); + cmdName.push_back("ERROR"); + + //5. Messages optionnels + cmdName.push_back("AWAY"); + cmdName.push_back("REHASH"); + cmdName.push_back("RESTART"); + cmdName.push_back("SUMMON"); + cmdName.push_back("OPERWALL"); + cmdName.push_back("USERHOST"); + cmdName.push_back("ISON"); + + //4. Détails des messages + + // //4.1 Etablissement de connexion + cmdPtr.push_back(PASS); + cmdPtr.push_back(NICK); + cmdPtr.push_back(USER); + cmdPtr.push_back(SERVER); + cmdPtr.push_back(OPER); + cmdPtr.push_back(QUIT); + cmdPtr.push_back(SQUIT); + + //4.2 Opérations sur les canaux + cmdPtr.push_back(JOIN); + cmdPtr.push_back(PART); + cmdPtr.push_back(MODE); + cmdPtr.push_back(TOPIC); + cmdPtr.push_back(NAMES); + cmdPtr.push_back(LIST); + cmdPtr.push_back(INVITE); + cmdPtr.push_back(KICK); + + //4.3 Requêtes et commandes des serveurs + cmdPtr.push_back(VERSION); + cmdPtr.push_back(STATS); + cmdPtr.push_back(LINKS); + cmdPtr.push_back(TIME); + cmdPtr.push_back(CONNECT); + cmdPtr.push_back(TRACE); + cmdPtr.push_back(ADMIN); + cmdPtr.push_back(INFO); + + //4.4 Envoi de messages + cmdPtr.push_back(PRIVMSG); + cmdPtr.push_back(NOTICE); + + //4.5 Requêtes basées sur les utilisateurs + cmdPtr.push_back(WHO); + cmdPtr.push_back(WHOIS); + cmdPtr.push_back(WHOWAS); + + //4.6 Messages divers + cmdPtr.push_back(KILL); + cmdPtr.push_back(PING); + cmdPtr.push_back(PONG); + cmdPtr.push_back(ERROR); + + //5. Messages optionnels + cmdPtr.push_back(AWAY); + cmdPtr.push_back(REHASH); + cmdPtr.push_back(RESTART); + cmdPtr.push_back(SUMMON); + cmdPtr.push_back(OPERWALL); + cmdPtr.push_back(USERHOST); + cmdPtr.push_back(ISON); +} + +}; diff --git a/srcs/client_request.cpp b/srcs/client_request.cpp index 2d87530..9f62fc0 100644 --- a/srcs/client_request.cpp +++ b/srcs/client_request.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 22:34:36 by apommier #+# #+# */ -/* Updated: 2023/02/09 15:07:06 by apommier ### ########.fr */ +/* Updated: 2023/02/09 21:39:38 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,6 +43,6 @@ bool clientRequest(fdList &allFds, int userNbr)//, std::cout << "BUFFER: ---" << buf << "---" << std::endl; //split with \n and while (tab de split) -> parsing - parse_commands((std::string)buf, allFds, userNbr); + parse_commands(buf, allFds, userNbr); return (1); } \ No newline at end of file diff --git a/srcs/commands/auth/utils.cpp b/srcs/commands/auth/cmd_utils.cpp similarity index 93% rename from srcs/commands/auth/utils.cpp rename to srcs/commands/auth/cmd_utils.cpp index f963c7a..282d087 100644 --- a/srcs/commands/auth/utils.cpp +++ b/srcs/commands/auth/cmd_utils.cpp @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* utils.cpp :+: :+: :+: */ +/* cmd_utils.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/07 14:45:45 by apommier #+# #+# */ -/* Updated: 2023/02/09 14:01:23 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:27:27 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ void ft_putstr_fd(int fd, std::string str) void cmd_error(fdList &allFds, int fd, std::string error) { + (void)allFds; //to delete write(fd, ":irc.local ", 11); write(fd, error.c_str(), error.size()); } diff --git a/srcs/commands/channel/channel_utils.cpp b/srcs/commands/channel/channel_utils.cpp new file mode 100644 index 0000000..c864350 --- /dev/null +++ b/srcs/commands/channel/channel_utils.cpp @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* channel_utils.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/02/09 17:21:57 by apommier #+# #+# */ +/* Updated: 2023/02/09 20:56:31 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../../includes/ft_irc.hpp" + +int find_channel(fdList &allFds, std::string chanName) +{ + std::vector::iterator start = allFds.channelList.begin(); + std::vector::iterator pastEnd = allFds.channelList.end(); + while (start != pastEnd) + { + std::cout << "result in find chan = " << pastEnd - start << std::endl; + if (allFds.channelList[pastEnd - start].name == chanName) + return (pastEnd - start); + start++; + } + return (0); +} \ No newline at end of file diff --git a/srcs/commands/channel/join.cpp b/srcs/commands/channel/join.cpp index 007a794..a527cc5 100644 --- a/srcs/commands/channel/join.cpp +++ b/srcs/commands/channel/join.cpp @@ -6,8 +6,44 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/09 15:40:33 by apommier #+# #+# */ -/* Updated: 2023/02/09 15:40:41 by apommier ### ########.fr */ +/* Updated: 2023/02/09 21:55:57 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../../../includes/ft_irc.hpp" \ No newline at end of file +#include "../../../includes/ft_irc.hpp" + +void JOIN(std::string buffer, fdList &allFds, int userNbr) +{ + std::vector splitBuff; + int chanNbr; + std::cout << "join start\n"; + split(buffer, ' ', splitBuff); + if (splitBuff.size() < 2) + { + /*change error*/cmd_error(allFds, allFds.userData[userNbr].fd, "431 * NICK :No nickname given\n"); + return ; + } + + chanNbr = find_channel(allFds, splitBuff[1]); + if (chanNbr) + { + //allFds.userData[userNbr].joinedChan.push_back(splitBuff[1]); + //message nickname joined the channel? + } + else + { + std::cout << "new chan\n"; + channelData new_chan; + + new_chan.name = splitBuff[1]; + //new_chan.userList + + allFds.channelList.push_back(new_chan); + allFds.userData[userNbr].joinedChan.push_back(&allFds.channelList.back()); + //message nickname created the channel? + } + std::cout << "============persitence test============\n"; + allFds.channelList.back().name = "new name"; + std::cout << "newname = " << allFds.userData[userNbr].joinedChan.back()->name << std::endl; + //allFds.channelList; +} \ No newline at end of file diff --git a/srcs/commands/not_done_cmd.cpp b/srcs/commands/not_done_cmd.cpp new file mode 100644 index 0000000..ae20e12 --- /dev/null +++ b/srcs/commands/not_done_cmd.cpp @@ -0,0 +1,293 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* not_done_cmd.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/02/09 22:04:11 by apommier #+# #+# */ +/* Updated: 2023/02/10 09:30:45 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../includes/ft_irc.hpp" + +void SERVER(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void OPER(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void QUIT(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void SQUIT(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void PART(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void MODE(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void TOPIC(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void NAMES(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void LIST(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void INVITE(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void KICK(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void VERSION(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void STATS(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void LINKS(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void TIME(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void CONNECT(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void TRACE(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void ADMIN(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void INFO(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void PRIVMSG(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void NOTICE(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void WHO(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void WHOIS(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void WHOWAS(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void KILL(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void PING(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void PONG(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void ERROR(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void AWAY(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void REHASH(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void RESTART(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void SUMMON(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void OPERWALL(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void USERHOST(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} + +void ISON(std::string buffer, fdList &allFds, int userNbr) +{ + (void)buffer; + (void)allFds; + (void)userNbr; + return ; +} diff --git a/srcs/commands/parse_commands.cpp b/srcs/commands/parse_commands.cpp index 4321c83..4aa3402 100644 --- a/srcs/commands/parse_commands.cpp +++ b/srcs/commands/parse_commands.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/06 22:01:25 by apommier #+# #+# */ -/* Updated: 2023/02/09 13:20:39 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:26:31 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,19 +20,29 @@ std::string ft_test() void parse_commands(std::string buffer, fdList &allFds, int userNbr) { - std::string cmd = buffer; + //std::string cmd = buffer; std::vector splitBuff; int a = 0; - - cmd.pop_back(); - split(cmd, ' ', splitBuff); + allFds.userData[userNbr].cmdBuffer += buffer; + if (allFds.userData[userNbr].cmdBuffer.find('\n') == std::string::npos) + return ; + allFds.userData[userNbr].cmdBuffer.erase(allFds.userData[userNbr].cmdBuffer.size() - 1); + split(allFds.userData[userNbr].cmdBuffer, ' ', splitBuff); - std::cout << "BUFFER In PARSING: ---" << cmd << "---" << std::endl; + std::cout << "BUFFER In PARSING: ---" << allFds.userData[userNbr].cmdBuffer << "---" << std::endl; while (splitBuff[0] != allFds.parsingTab.cmdName[a] && a < allFds.parsingTab.cmdNbr) a++; + std::cout << "after while \n"; if (a == allFds.parsingTab.cmdNbr) - std::cout << "Command not found\n"; + std::cout << "Command not found\n"; else - allFds.parsingTab.cmdPtr[a](buffer, allFds, userNbr); + { + std::cout << "Command name = " << allFds.parsingTab.cmdName[a] << std::endl; + std::cout << "Command nbr = " << a << std::endl; + allFds.parsingTab.cmdPtr[a](allFds.userData[userNbr].cmdBuffer, allFds, userNbr); + //allFds.parsingTab.cmdPtr[a] + //JOIN(allFds.userData[userNbr].cmdBuffer, allFds, userNbr); + } + allFds.userData[userNbr].cmdBuffer.clear(); } \ No newline at end of file diff --git a/srcs/new_connection.cpp b/srcs/new_connection.cpp index 269f7e3..cd5fa74 100644 --- a/srcs/new_connection.cpp +++ b/srcs/new_connection.cpp @@ -6,13 +6,13 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 22:26:27 by apommier #+# #+# */ -/* Updated: 2023/02/09 14:06:13 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:19:45 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../includes/ft_irc.hpp" -void new_connection(fdList &allFds, struct epoll_event newClient) +void new_connection(fdList &allFds) { struct sockaddr_in addr; int addrLen = sizeof(addr); diff --git a/srcs/server_loop.cpp b/srcs/server_loop.cpp index 75fe5db..d60ed24 100644 --- a/srcs/server_loop.cpp +++ b/srcs/server_loop.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/06 21:58:13 by apommier #+# #+# */ -/* Updated: 2023/02/09 15:02:44 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:20:58 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,10 +15,10 @@ void start_loop(fdList &allFds) { bool alive = true; - int readChar; + //int readChar; int eventNbr; int i; - int userId; + //int userId; int nbr; std::cout << "serverFd: " << allFds.serverFd << std::endl; @@ -33,7 +33,7 @@ void start_loop(fdList &allFds) std::cout << "i= " << i << std::endl; if (allFds.events[i].data.fd == allFds.serverFd) { - new_connection(allFds, allFds.events[i]); + new_connection(allFds); //std::cout << "after new fd loop " << allFds.userData[i].fd << std::endl; } else diff --git a/srcs/start_server.cpp b/srcs/start_server.cpp index bcd234f..ff4accf 100644 --- a/srcs/start_server.cpp +++ b/srcs/start_server.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/06 21:44:20 by apommier #+# #+# */ -/* Updated: 2023/02/09 13:50:16 by apommier ### ########.fr */ +/* Updated: 2023/02/10 09:18:45 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ void initialize(char **av) //int newSockFd = 0; int opt = 1; struct sockaddr_in addr; - int addrLen = sizeof(addr); + //int addrLen = sizeof(addr); fdList allFds; allFds.nbrUser = 0;