From 47343e693143e2c47c445a34569d845565f274de Mon Sep 17 00:00:00 2001 From: kinou-p Date: Mon, 13 Mar 2023 16:44:47 +0100 Subject: [PATCH] clean all comment --- srcs/client_request.cpp | 26 +-------- srcs/commands/auth/connect_client.cpp | 9 +-- srcs/commands/auth/nick.cpp | 10 +--- srcs/commands/auth/pass.cpp | 15 +---- srcs/commands/auth/user.cpp | 15 +---- srcs/commands/channel/channel_utils.cpp | 62 ++------------------ srcs/commands/channel/join.cpp | 38 +------------ srcs/commands/channel/list.cpp | 15 +---- srcs/commands/channel/part.cpp | 22 +------ srcs/commands/channel/privmsg.cpp | 21 +------ srcs/commands/channel_op/invite.cpp | 9 +-- srcs/commands/channel_op/kick.cpp | 12 +--- srcs/commands/channel_op/mode.cpp | 76 +++---------------------- srcs/commands/channel_op/topic.cpp | 15 +---- srcs/commands/channel_op/utils_mode.cpp | 51 ++++++----------- srcs/commands/cmd_utils.cpp | 14 +++-- srcs/commands/operator/kill.cpp | 3 +- srcs/commands/operator/oper.cpp | 9 +-- srcs/commands/operator/squit.cpp | 15 +---- srcs/commands/operator/wallops.cpp | 5 +- srcs/commands/other/names.cpp | 33 ++--------- srcs/commands/other/ping_pong.cpp | 21 +------ srcs/commands/other/quit.cpp | 16 +----- srcs/commands/other/who.cpp | 26 +-------- srcs/commands/parse_commands.cpp | 28 +-------- srcs/delete_user.cpp | 14 +---- srcs/main.cpp | 7 +-- srcs/new_connection.cpp | 34 ++--------- srcs/server_loop.cpp | 29 +--------- srcs/start_server.cpp | 24 +------- srcs/utils.cpp | 21 +------ 31 files changed, 87 insertions(+), 608 deletions(-) diff --git a/srcs/client_request.cpp b/srcs/client_request.cpp index b3b4dcd..bad4d0c 100644 --- a/srcs/client_request.cpp +++ b/srcs/client_request.cpp @@ -6,50 +6,28 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 22:34:36 by apommier #+# #+# */ -/* Updated: 2023/03/09 05:00:20 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:39:34 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../includes/ft_irc.hpp" -bool clientRequest(fdList &allFds, int userNbr)//, +bool clientRequest(fdList &allFds, int userNbr) { - //int userFd = allFds.events[user].data.fd; char buf[1024] = {0}; std::string buffer; size_t len = 1024; int ret = 0; - //buf.reserve(1024); - //se demerder pour join quand pas \n - // std::cout << "fd in client request " << allFds.userData[userNbr].fd << std::endl; - // std::cout << "fd of list in client request " << allFds.userFdList[userNbr] << std::endl; - // std::cout << "user nbr " << userNbr << std::endl; - - //std::cout << "client request!" << std::endl; - //if (recv(allFds.userData[userNbr].fd, buf, len, 0) == -1) if ((ret = recv(allFds.userData[userNbr].fd, buf, len, 0)) == -1) ft_error("recv() error"); buffer = buf; buffer[ret] = 0; if (buffer.empty()) { - //delete client delete_user(allFds, userNbr); - // close(allFds.userData[userNbr].fd); - // allFds.userData.erase(allFds.userData.begin() + userNbr); - // allFds.userFdList.erase(allFds.userFdList.begin() + userNbr); - // allFds.nbrUser--; - // std::cout << "buffer empty\n"; return (1); } - // for (int i = 0; buffer[i]; i++) - // { - // std::cout << i << " = " << (int)buffer[i] << std::endl; - // } - - //split with \n and while (tab de split) -> parsing - std::vector splitBuff; split_but_keep(buffer, '\n', splitBuff); for (size_t i = 0; i < splitBuff.size(); i++) diff --git a/srcs/commands/auth/connect_client.cpp b/srcs/commands/auth/connect_client.cpp index 6f40665..0acd4b8 100644 --- a/srcs/commands/auth/connect_client.cpp +++ b/srcs/commands/auth/connect_client.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/12 23:30:11 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:19:44 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:28:12 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,19 +53,12 @@ void print_registered_msg(fdList &allFds, int userNbr) void connect_client(fdList &allFds, int userNbr) { - //std::cout << "connect client start\n"; - if (allFds.userData[userNbr].password.empty() || allFds.userData[userNbr].password != allFds.password) { std::cout << "password= " << allFds.userData[userNbr].password << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "464 * :Password incorrect\r\n"); return ; } - //464 ERR_PASSWDMISMATCH - //":Password incorrect" - allFds.userData[userNbr].registered = 1; print_registered_msg(allFds, userNbr); - //std::cout << "connect client end\n"; - //ft_putstr_fd(allFds.userData[userNbr].fd, ":irc.local NOTICE kinou :*** Could not resolve your hostname: Request timed out; using your IP address (172.17.0.1) instead.\nirc.local 376 kinou :End of message of the day."); } \ No newline at end of file diff --git a/srcs/commands/auth/nick.cpp b/srcs/commands/auth/nick.cpp index 5d86ee2..dfcb55e 100644 --- a/srcs/commands/auth/nick.cpp +++ b/srcs/commands/auth/nick.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/06 14:28:38 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:20:28 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:28:37 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,15 +35,9 @@ void NICK(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "433 * " + splitBuff[1] + " :Nickname is already in use\r\n"); return ; } - //if nickname ok then (another user has it? ) - //ERR_NONICKNAMEGIVEN allFds.userData[userNbr].nickname = splitBuff[1]; - if (!allFds.userData[userNbr].registered && !allFds.userData[userNbr].userName.empty() /*&& !allFds.userData[userNbr].password.empty()*/) - { + if (!allFds.userData[userNbr].registered && !allFds.userData[userNbr].userName.empty()) connect_client(allFds, userNbr); - // allFds.userData[userNbr].registered = 1; - // print_registered_msg(allFds, userNbr); - } return ; } \ No newline at end of file diff --git a/srcs/commands/auth/pass.cpp b/srcs/commands/auth/pass.cpp index daa3409..c7750ef 100644 --- a/srcs/commands/auth/pass.cpp +++ b/srcs/commands/auth/pass.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/06 14:40:42 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:21:05 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:28:47 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,21 +29,8 @@ void PASS(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "462 * PASS :You may not reregister\r\n"); return ; } - - // if (splitBuff.size() != 2) - // { - // cmd_error(allFds, userNbr, "461 * PASS :Not enough parameters"); - // //write(allFds.userData[userNbr].fd, "ERR_NEEDMOREPARAMS", 18); - // return ; - // } - password = buffer.substr(5, buffer.npos); allFds.userData[userNbr].password = password; - if (!allFds.userData[userNbr].userName.empty() && !allFds.userData[userNbr].nickname.empty()) - { connect_client(allFds, userNbr); - // allFds.userData[userNbr].registered = 1; - // print_registered_msg(allFds, userNbr); - } } \ No newline at end of file diff --git a/srcs/commands/auth/user.cpp b/srcs/commands/auth/user.cpp index 098f9e5..35dc309 100644 --- a/srcs/commands/auth/user.cpp +++ b/srcs/commands/auth/user.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/06 14:40:39 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:21:18 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:29:05 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,23 +21,16 @@ void USER(std::string buffer, fdList &allFds, int userNbr) { if (allFds.userData[userNbr].registered == 1) { -// " + allFds.userData[userNbr].nickname + " cmd_error(allFds, allFds.userData[userNbr].fd, "462 " + allFds.userData[userNbr].nickname + " USER :You may not reregister\r\n"); return ; } - std::string realName = buffer.substr(buffer.find_first_of(":") + 1 , buffer.npos); std::vector splitBuff; - - buffer.resize(buffer.size() - realName.size()); - //std::cout << "Buffer in userNbr = ---" << buffer << "---" << std::endl; - //std::cout << "realname in userNbr = ---" << realName << "---" << std::endl; split(buffer, ' ', splitBuff); if (splitBuff.size() < 4) { cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + "USER :Not enough parameters\r\n"); - //write(allFds.userData[userNbr].fd, "ERR_NEEDMOREPARAMS", 18); return ; } allFds.userData[userNbr].userName = splitBuff[1]; @@ -45,10 +38,6 @@ void USER(std::string buffer, fdList &allFds, int userNbr) allFds.userData[userNbr].serverName = splitBuff[3]; allFds.userData[userNbr].realName = realName; - if (!allFds.userData[userNbr].nickname.empty() /*&& !allFds.userData[userNbr].password.empty()*/) - { + if (!allFds.userData[userNbr].nickname.empty()) connect_client(allFds, userNbr); - // allFds.userData[userNbr].registered = 1; - // print_registered_msg(allFds, userNbr); - } } \ No newline at end of file diff --git a/srcs/commands/channel/channel_utils.cpp b/srcs/commands/channel/channel_utils.cpp index b44d544..4a0dc46 100644 --- a/srcs/commands/channel/channel_utils.cpp +++ b/srcs/commands/channel/channel_utils.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/09 17:21:57 by apommier #+# #+# */ -/* Updated: 2023/03/13 01:12:07 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:29:41 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,18 +16,15 @@ int is_chan_op(fdList &allFds, channelData *chanName, int userNbr) { std::vector::iterator start = chanName->opList.begin(); std::vector::iterator pastEnd = chanName->opList.end(); - //std::cout << "name1= ---" << chanName << "---\n"; + if (allFds.userData[userNbr].op) return (1); while (start != pastEnd) { - //std::cout << "result in find chan = " << pastEnd - start << std::endl; - //std::cout << "test = " << chanName->opList[pastEnd - start - 1]->nickname << "---\n"; if (chanName->opList[pastEnd - start - 1]->nickname == allFds.userData[userNbr].nickname) return (1); start++; } - //std::cout << "chan not found in is op\n"; return (0); } @@ -35,37 +32,18 @@ int is_joined(fdList &allFds, std::string chanName, int userNbr) { std::vector::iterator start = allFds.userData[userNbr].joinedChan.begin(); std::vector::iterator pastEnd = allFds.userData[userNbr].joinedChan.end(); - //std::cout << "name1= ---" << chanName << "---\n"; + while (start != pastEnd) { - - //std::cout << "result in find chan = " << pastEnd - start << std::endl; - //std::cout << "test is joined= " << allFds.userData[userNbr].joinedChan[pastEnd - start - 1]->name << "---\n"; if (allFds.userData[userNbr].joinedChan[pastEnd - start - 1]->name == chanName) return (pastEnd - start - 1); start++; } - //std::cout << "chan not found in is joined\n"; return (-1); } int find_channel(fdList &allFds, std::string chanName)//return channel nbr { - // std::_List_iterator start = allFds.channelList.begin(); - // std::_List_iterator pastEnd = allFds.channelList.end(); - // //std::cout << "name1= ---" << chanName << "---\n"; - // while (start != pastEnd) - // { - // //std::cout << "chan = ---" << allFds.channelList[pastEnd - start - 1].name << "---" << std::endl; - // //std::cout << "test = " << allFds.channelList[pastEnd - start - 1].name << "---\n"; - // if (allFds.channelList[pastEnd - start - 1].name == chanName) - // return (pastEnd - start - 1); - // start++; - // } - // //std::cout << "chan not found in find \n"; - // return (-1); - - int size = allFds.channelList.size(); for (int i = 0; i < size; i++) { @@ -77,20 +55,6 @@ int find_channel(fdList &allFds, std::string chanName)//return channel nbr int find_user(fdList &allFds, std::string userName)//return direct user fd { - // std::_List_iterator start = allFds.userData.begin(); - // std::_List_iterator pastEnd = allFds.userData.end(); - // //std::cout << "name1= ---" << userName << "---\n"; - // while (start != pastEnd) - // { - // //std::cout << "result in find user = " << pastEnd - start << std::endl; - // //std::cout << "name2= ---" << allFds.userData[pastEnd - start - 1].nickname << "---\n"; - // if (allFds.userData[pastEnd - start - 1].nickname == userName) - // return (pastEnd - start - 1); - // start++; - // } - // //std::cout << "user not found\n"; - // return (-1); - int size = allFds.userData.size(); for (int i = 0; i < size; i++) { @@ -119,22 +83,4 @@ int is_in_same(fdList &allFds, int userNbr, int userNbr2) } } return (0); -} - -// int is_in_same(fdList &allFds, int userNbr, int userNbr2) -// { -// size_t size; -// if (allFds.userData[userNbr].joinedChan.size() <= allFds.userData[userNbr2].joinedChan.size()) -// size = allFds.userData[userNbr].joinedChan.size(); -// else -// size = allFds.userData[userNbr2].joinedChan.size(); -// for (size_t i = 0; i < size; i++) -// { -// for (size_t j = 0; j < size; j++) -// { -// if (allFds.userData[userNbr].joinedChan[i] == allFds.userData[userNbr2].joinedChan[j]) -// return (1); -// } -// } -// return (0); -// } +} \ No newline at end of file diff --git a/srcs/commands/channel/join.cpp b/srcs/commands/channel/join.cpp index 7072d6a..aecb4ea 100644 --- a/srcs/commands/channel/join.cpp +++ b/srcs/commands/channel/join.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/09 15:40:33 by apommier #+# #+# */ -/* Updated: 2023/03/13 08:56:33 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:30:39 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -77,7 +77,6 @@ void join_or_create(std::string buffer, fdList &allFds, int userNbr) channelData joined_chan; std::vector splitBuff; - //std::cout << "JOINORCREATE\n"; split(buffer, ' ', splitBuff); chanNbr = find_channel(allFds, splitBuff[1]); if (chanNbr != -1) //chan already exist @@ -86,52 +85,33 @@ void join_or_create(std::string buffer, fdList &allFds, int userNbr) return ; allFds.userData[userNbr].joinedChan.push_back(&allFds.channelList[chanNbr]); //add chan in user data allFds.channelList[chanNbr].userList.push_back(&allFds.userData[userNbr]);//add user in chan data - //allFds.channelList[chanNbr].size()++; joined_chan = *(allFds.userData[userNbr].joinedChan.back()); if ((invitedUser = find_client_list(allFds.channelList[chanNbr].invitedList, &allFds.userData[userNbr])) != -1) allFds.channelList[chanNbr].invitedList.erase(allFds.channelList[chanNbr].invitedList.begin() + invitedUser); } else //chan doesn't exist yet { - //std::cout << "new chan\n"; channelData tmp_chan; allFds.channelList.push_back(tmp_chan); channelData &new_chan = allFds.channelList[allFds.channelList.size() - 1]; if (splitBuff[1][0] != '#' && splitBuff[1][0] != '&') cmd_error(allFds, allFds.userData[userNbr].fd, "476 " + allFds.userData[userNbr].nickname + " " + splitBuff[1] + " :Bad Channel Mask\r\n"); - //new_chan.nbrUser = 1; - new_chan.name = splitBuff[1]; new_chan.opList.push_back(&allFds.userData[userNbr]); new_chan.userList.push_back(&allFds.userData[userNbr]); - //new_chan.List.push_back(&allFds.userData[userNbr]); allFds.userData[userNbr].joinedChan.push_back(&allFds.channelList.back());//add chan in user data joined_chan = allFds.channelList[allFds.channelList.size() - 1]; } - - - // :kinou3!kinou@172.17.0.1 JOIN :#test //done! std::string fullMsg; fullMsg = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " JOIN :" + joined_chan.name + "\r\n"; for (size_t i = 0; i < joined_chan.userList.size(); i++) - { send(joined_chan.userList[i]->fd, fullMsg.c_str(), fullMsg.size(), 0); - //std::cout << "loop here\n"; - } std::cout << "size uselist=" << joined_chan.userList.size() << std::endl; names_reply(allFds, joined_chan, allFds.userData[userNbr].fd, userNbr); - // :irc.local 353 kinou3 = #test :@kinou3 - // :irc.local 366 kinou3 #test :End of /NAMES list. if (chanNbr == -1) chanNbr = find_channel(allFds, splitBuff[1]); if (!allFds.channelList[chanNbr].topic.empty()) cmd_reply(allFds, allFds.userData[userNbr].fd, "332 TOPIC " + allFds.channelList[chanNbr].name + " :" + allFds.channelList[chanNbr].topic + "\r\n"); - //else - // cmd_error(allFds, allFds.userData[userNbr].fd, "NOTICE 331 TOPIC " + allFds.channelList[chanNbr].name + " :No topic is set\n"); - // if (chanNbr == -1) - // { - - // } } @@ -143,8 +123,6 @@ void join_loop(fdList &allFds, std::vector splitBuff, int userNbr) std::vector splitPwd; std::string buffer; - //std::cout << "join loop buf= " << splitBuff[1] << std::endl; - //std::cout << "==========join loop========\n"; split(splitBuff[1], ',', splitChan); split(splitBuff[1], ',', splitPwd); if (splitBuff[1] == "0") @@ -152,18 +130,12 @@ void join_loop(fdList &allFds, std::vector splitBuff, int userNbr) leave_all(allFds, userNbr); return ; } - //std::cout << "==========join loop2========\n"; - //std::cout << "size= " << splitChan.size() << std::endl; - //std::cout << "content= " << splitChan[0] << std::endl; for (size_t i = 0; i < splitChan.size(); i++) { if (splitChan[i][0] != '#' && splitChan[i][0] != '&') { - //error bad channel name buffer = "476 " + allFds.userData[userNbr].nickname + " JOIN " + splitChan[i] + " :Bad Channel Mask\r\n"; cmd_error(allFds, allFds.userData[userNbr].fd, buffer); - //:Bad Channel Mask - //std::cout << "bad chan mask\n"; return ; } if (i < splitPwd.size()) @@ -171,9 +143,7 @@ void join_loop(fdList &allFds, std::vector splitBuff, int userNbr) else buffer = "JOIN " + splitChan[i]; join_or_create(buffer, allFds, userNbr); - //std::cout << "i= " << i << " ==========join loop3========\n"; } - //std::cout << "==========join loop3========\n"; } @@ -183,7 +153,6 @@ void JOIN(std::string buffer, fdList &allFds, int userNbr) { std::vector splitBuff; std::string msg; - //std::cout << "==========join start========\n"; std::cout << "userNbr= " << userNbr << std::endl; if (!allFds.userData[userNbr].registered) @@ -194,13 +163,8 @@ void JOIN(std::string buffer, fdList &allFds, int userNbr) split(buffer, ' ', splitBuff); if (splitBuff.size() < 2) { - /*change error*/ - //std::cout << "JOIN : need more param\n"; cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + " JOIN :Not enough parameters\r\n"); //ERR_NEEDMOREPARAMS return ; } join_loop(allFds, splitBuff, userNbr); - //if (splitBuff[1].find(' ') != std::string::npos || splitBuff[1].find(7) != std::string::npos) - - //send 352 and 315 or 353 and 366 (WHO or NAME) } \ No newline at end of file diff --git a/srcs/commands/channel/list.cpp b/srcs/commands/channel/list.cpp index 13922c1..524f9c5 100644 --- a/srcs/commands/channel/list.cpp +++ b/srcs/commands/channel/list.cpp @@ -6,31 +6,20 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/18 00:50:51 by apommier #+# #+# */ -/* Updated: 2023/03/13 02:39:00 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:31:44 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../../includes/ft_irc.hpp" -// msg = "321 " + allFds.userData[userNbr].nickname + " " + allfds.channelList[i].name; -// msg = "322 " + allFds.userData[userNbr].nickname + " :End of LIST\r\n"; -// msg = "323 " + allFds.userData[userNbr].nickname + " :End of LIST\r\n"; //done - void list_reply(fdList &allFds, channelData &chan, int fd, int userNbr) { //:irc.server.com 321 MonPseudo :Channel :Users Name //start //:irc.server.com 322 MonPseudo #channel 10 :Channel Topic //list //:irc.server.com 323 MonPseudo :End of LIST //end - std::string msg; - // msg = "321 " + allFds.userData[userNbr].nickname + ":ChannelName UserNbr :Topic\r\n"; - // cmd_reply(allFds, fd, msg); - //str_to_int(int &i, const std::string s); msg = "322 " + allFds.userData[userNbr].nickname + " :" + chan.name + " " + int_to_str(chan.userList.size()) + " :" + chan.topic + "\r\n";//"ChannelName UserNbr :Topic\r\n"; cmd_reply(allFds, fd, msg); - - // msg = "323 " + allFds.userData[userNbr].nickname + " :End of LIST\r\n"; - // cmd_reply(allFds, fd, msg); } void list_loop(fdList &allFds, std::vector splitBuff, int userNbr) @@ -66,14 +55,12 @@ void LIST(std::string buffer, fdList &allFds, int userNbr) cmd_reply(allFds, allFds.userData[userNbr].fd, msg); if (splitBuff.size() == 1 || splitBuff[1] == "0") { - //rpl start for (size_t i = 0; i < allFds.channelList.size(); i++) { if ((!allFds.channelList[i].mode.p && !allFds.channelList[i].mode.s) || is_joined(allFds, allFds.channelList[i].name, userNbr) || allFds.userData[userNbr].op) list_reply(allFds, allFds.channelList[i], allFds.userData[userNbr].fd, userNbr); } - //rpl end return ; } else diff --git a/srcs/commands/channel/part.cpp b/srcs/commands/channel/part.cpp index c511934..8e36409 100644 --- a/srcs/commands/channel/part.cpp +++ b/srcs/commands/channel/part.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/19 22:10:07 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:23:22 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:32:06 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,40 +27,20 @@ void leave_chan(fdList &allFds, std::string chan, int userNbr, std::string msg) cmd_error(allFds, allFds.userData[userNbr].fd, "422 " + allFds.userData[userNbr].nickname + " " + chan + " :You're not on that channel\r\n"); return ; } - //del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[chanPos]); int pos = find_client_list(allFds.channelList[chanPos].userList, &allFds.userData[userNbr]); allFds.channelList[chanPos].userList.erase(allFds.channelList[chanPos].userList.begin() + pos); - //allFds.channelList[chanPos].size()--; del_chan_in_user(&allFds.userData[userNbr], &allFds.channelList[chanPos]); - //:WiZ!jto@tolsun.oulu.fi PART #playzone :I lost - //:awd!kinou@kinou PART #test - //reply = ":" + allFds.userData[userNbr].nickname + "!" + - - //reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " PART " + allFds.channelList[chanPos].name; - //reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " PART :" + allFds.channelList[chanPos].name + "\n"; reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip; if (!msg.empty()) reply += " PART " + allFds.channelList[chanPos].name + " " + msg + "\r\n"; else reply += " PART :" + allFds.channelList[chanPos].name + "\r\n"; - - //:awd!kinou@172.17.0.1 PART :#test tcpdump - //:awd!kinou@127.0.0.1 PART :#test - //(void )msg; - // reply += " " + msg; - //else - // reply += "\n"; - //std::cout << "leave msg=" << reply << std::endl; send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0); - //allFds.channelList[chanPos].size()--; for (size_t i = 0; i < allFds.channelList[chanPos].userList.size(); i++) { if (allFds.channelList[chanPos].userList[i]->mode.s) send(allFds.channelList[chanPos].userList[i]->fd, reply.c_str(), reply.size(), 0); - //std::cout << "loop here\n"; } - - //cmd_reply(allFds, allFds.userData[userNbr].fd, reply + "\n"); } void PART(std::string buffer, fdList &allFds, int userNbr) diff --git a/srcs/commands/channel/privmsg.cpp b/srcs/commands/channel/privmsg.cpp index 1e23422..543845e 100644 --- a/srcs/commands/channel/privmsg.cpp +++ b/srcs/commands/channel/privmsg.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 08:53:03 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:11:34 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:32:35 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,6 @@ void PRIVMSG(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "451 " + allFds.userData[userNbr].nickname + " PRIVMSG :You have not registered\r\n"); return ; } - //std::cout << "privmsg bufer= --" << buffer << std::endl; split(buffer, ' ', splitBuff); if (splitBuff.size() < 2) { @@ -42,7 +41,6 @@ void PRIVMSG(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "412 " + allFds.userData[userNbr].nickname + " PRIVMSG :No text to send\r\n"); return ; } - //std::cout << "privmsg =" << msg << std::endl; std::vector dest; split(splitBuff[1], ',', dest); for (size_t i = 0; i < dest.size(); i++) @@ -68,10 +66,6 @@ void send_msg(fdList &allFds, std::string msg, std::string dest, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "442 " + allFds.userData[userNbr].nickname + " PRIVMSG " + dest + " :You're not on that channel\r\n"); return ; } - // if (find_client_list(allFds.channelList[pos].verboseList, &allFds.userData[userNbr]) != -1) - // { - // allFds.channelList[pos].verboseList.erase(); - // } if (allFds.channelList[pos].mode.m && !allFds.userData[userNbr].op && !is_chan_op(allFds, &allFds.channelList[pos], userNbr) && find_client_list(allFds.channelList[pos].verboseList, &allFds.userData[userNbr]) == -1) @@ -80,20 +74,13 @@ void send_msg(fdList &allFds, std::string msg, std::string dest, int userNbr) return ; } for (size_t i = 0; i < allFds.channelList[pos].userList.size(); i++) - { - //std::cout << "send nickname " << allFds.channelList[pos].userList[i]->nickname << std::endl; - + { if (&allFds.userData[userNbr] != allFds.channelList[pos].userList[i] && allFds.channelList[pos].userList[i]->mode.s) - { - //std::cout << "send msg to user nbr" << i << std::endl; send(allFds.channelList[pos].userList[i]->fd, fullMsg.c_str(), fullMsg.size(), 0); - } - //std::cout << "loop here\n"; } return ; } - pos = find_user(allFds, dest); //return direct user fd - //std::cout << "pos of user = " << pos << std::endl; + pos = find_user(allFds, dest); if (pos == -1) { cmd_error(allFds, allFds.userData[userNbr].fd, "401 " + allFds.userData[userNbr].nickname + " PRIVMSG " + dest + " :No such nick\r\n"); @@ -101,6 +88,4 @@ void send_msg(fdList &allFds, std::string msg, std::string dest, int userNbr) } if (allFds.userData[pos].mode.s) send(allFds.userData[pos].fd, fullMsg.c_str(), fullMsg.size(), 0); - //std::cout << "msg send\n"; - //std::cout << "msg = " << fullMsg << std::endl; } \ No newline at end of file diff --git a/srcs/commands/channel_op/invite.cpp b/srcs/commands/channel_op/invite.cpp index 17dee31..2e0cb3d 100644 --- a/srcs/commands/channel_op/invite.cpp +++ b/srcs/commands/channel_op/invite.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:19:56 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:24:11 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:32:44 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,11 +54,6 @@ void INVITE(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "443 " + allFds.userData[userNbr].nickname + " " + splitBuff[1] + " " + splitBuff[2] + " :is already on channel\r\n"); return ; } - // if (is_joined(allFds, splitBuff[2], invitedNbr) != -1) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "443 " + allFds.userData[userNbr].nickname + " " + splitBuff[1] + " " + splitBuff[2] + " :is already on channel\n"); - // return ; - // } if ((chanNbr = find_channel(allFds, splitBuff[2])) != -1) { chan = allFds.channelList[chanNbr]; @@ -72,8 +67,6 @@ void INVITE(std::string buffer, fdList &allFds, int userNbr) return ; } std::cout << "invite him !!!!" << splitBuff[1] << " to " << splitBuff[2] << std::endl; - //RPL_INVITING - //RPL_AWAY chan.invitedList.push_back(&allFds.userData[invitedNbr]);//set authorization to join msg = "341 " + allFds.userData[userNbr].nickname + " " + chan.name + " " + splitBuff[1] + "\r\n"; cmd_reply(allFds, allFds.userData[userNbr].fd, msg); diff --git a/srcs/commands/channel_op/kick.cpp b/srcs/commands/channel_op/kick.cpp index e986515..254ea23 100644 --- a/srcs/commands/channel_op/kick.cpp +++ b/srcs/commands/channel_op/kick.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:19:32 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:12:00 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:32:52 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,22 +70,12 @@ void KICK(std::string buffer, fdList &allFds, int userNbr) } kickMsg = allFds.userData[userPos].nickname + " have been kicked by " + allFds.userData[userNbr].nickname + "\r\n"; PART("PART " + splitBuff[1] + " has been kicked by " + allFds.userData[userNbr].nickname, allFds, userPos); - //del_user_in_chan(&allFds.userData[userPos], &allFds.channelList[chanPos]); - //del_chan_in_user(&allFds.userData[userPos], &allFds.channelList[chanPos]); std::cout << "kick msg---" << msg << "---" << std::endl; send(allFds.userData[userPos].fd, msg.c_str(), msg.size(), 0); - //send_msg(allFds, msg, splitBuff[1], userNbr); for (size_t i = 0; i < allFds.channelList[chanPos].userList.size(); i++) { if (allFds.channelList[chanPos].userList[i]->mode.s) send(allFds.channelList[chanPos].userList[i]->fd, kickMsg.c_str(), kickMsg.size(), 0); } - //cmd_reply(allFds, allFds.userData[userPos].fd, msg); - - // else if (!allFds.userData[userNbr].op) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + " " + splitBuff[1] + " :You're not channel operator\n"); - // return ; - // } return ; } \ No newline at end of file diff --git a/srcs/commands/channel_op/mode.cpp b/srcs/commands/channel_op/mode.cpp index 38adddd..9d357b9 100644 --- a/srcs/commands/channel_op/mode.cpp +++ b/srcs/commands/channel_op/mode.cpp @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/02/11 19:19:30 by apommier #+# #+# */ -/* Updated: 2023/03/13 10:37:01 by apommier ### ########.fr */ +/* Created: 2023/02/11 19:19:30 by sadjigui #+# #+# */ +/* Updated: 2023/03/13 16:35:17 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,17 +25,14 @@ void chan_opt_o(fdList &allFds, int userNbr, std::vector opt, int c if (opt.size() < 4) { - //std::cout << "ERR_NEEDMOREPARAMS" << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + " MODE " + opt[0] + " :Not enough parameters\r\n"); return ; } if ((find_user(allFds, opt[3]) == -1)) { - //std::cout << "User :" << opt[3] << " not found" << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "401 " + allFds.userData[userNbr].nickname + " MODE " + opt[1] + " :No such nick\r\n"); return ; } - //A voir pos = find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) != -1; if (pos == -1 && !allFds.userData[userNbr].op) { @@ -47,13 +44,6 @@ void chan_opt_o(fdList &allFds, int userNbr, std::vector opt, int c else allFds.channelList[chanNbr].opList.push_back(&allFds.userData[userNbr]); chan_mode_reply(allFds, allFds.channelList[chanNbr], userNbr, "o", sign); - //retour mode chan - return ; - - // if (allFds.userData[userNbr].mode.o == true && sign == true) - // allFds.userData[find_user(allFds, opt[3])].mode.o = (sign = true) ? true : false; - - // std::cout << "-------> " << opt[3] << std::endl; } void chan_opt_k(fdList &allFds, int userNbr, std::vector opt, int chanNbr, bool sign) @@ -63,10 +53,8 @@ void chan_opt_k(fdList &allFds, int userNbr, std::vector opt, int c cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + " MODE " + opt[1] + " :You're not channel operator\n"); return ; } - if (opt.size() < 4) + if (opt.size() < 3) { - //std::cout << "ERR_NEEDMOREPARAMS" << std::endl; - //std::cout << "how to use it :/MODE +k " << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + " MODE " + opt[0] + " :Not enough parameters\n"); return ; } @@ -82,10 +70,6 @@ void chan_opt_k(fdList &allFds, int userNbr, std::vector opt, int c void chan_opt_v(fdList &allFds, int userNbr, std::vector opt, int chanNbr, bool sign) { - (void)userNbr; - (void)chanNbr; - (void)sign; - if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) < 0) { cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + " MODE " + opt[1] + " :You're not channel operator\n"); @@ -123,20 +107,7 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector opt, int c int target_in_ban; if (opt.size() == 3 && sign == true) - { - // if (ban.empty() == true) - // { - // std::cout << "Nobody was banned on this channel" << std::endl; - // return ; - // } - // for (long unsigned int i = 0; i < ban.size(); ++i) - // { - // std::cout << ban[i]->nickname << std::endl; - // } ban_reply(allFds.channelList[chanNbr], allFds.userData[userNbr]); - - } - if (opt.size() >= 4) { if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) < 0) @@ -148,14 +119,11 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector opt, int c for (size_t i = 0; i < name.size(); i++) { - // std::cout << "===============>" << i << std::endl; - // std::cout << "===============>" << opt.size() << std::endl; target_in_client = find_user(allFds, name[i]); if (target_in_client == -1) { std::cout << "No user found" << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "401 " + allFds.userData[userNbr].nickname + " MODE " + name[i] + " :No such nick\n"); - // return ; } target_in_ban = find_client_list(allFds.channelList[chanNbr].banList, &allFds.userData[target_in_client]); @@ -188,23 +156,15 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector opt, int c void do_chan_opt(fdList &allFds, int userNbr, std::vector opt, int chanNbr /*, channel (string or direct reference or pointer but no copy)*/) { - (void)allFds; - (void)userNbr; bool sign = true; - // if (allFds.userData[userNbr].mode.o == false) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + opt[1] + " :You're not channel operator\n"); - // return ; - // } if (opt[2][0] == '-') sign = false; for (int i = 1; opt[2][i]; i++) { switch (opt[2][i]) { - case 'o': chan_opt_o(allFds, userNbr, opt, chanNbr, sign);//std::cout << "launching option: " << opt[2][i] << std::endl; - //chan_mode_reply(allFds, allFds.channelList[chanNbr], userNbr, "o", sign); + case 'o': chan_opt_o(allFds, userNbr, opt, chanNbr, sign); break ; case 'p': allFds.channelList[chanNbr].mode.p = (sign == true) ? true : false; chan_mode_reply(allFds, allFds.channelList[chanNbr], userNbr, "p", sign); @@ -238,10 +198,6 @@ void do_chan_opt(fdList &allFds, int userNbr, std::vector opt, int default : std::cout << "Not launching option" << std::endl; break ; } - //mode_i() - //call option - //switch ? if forest? map container ? 2 tab (name and function pointer) ? - // opt_i(int signe (+ ou -), channel, user); } return; } @@ -252,7 +208,6 @@ void do_user_opt(fdList &allFds, int userNbr, std::vector opt, int if (allFds.userData[userNbr].nickname != opt[1]) { - std::cout << "not the same user ! don't try to change someone else MODE you stupid bitch\n"; cmd_error(allFds, allFds.userData[userNbr].fd, "502 " + allFds.userData[userNbr].nickname + " MODE " + opt[1] + " :Cant change mode for other users\r\n"); return ; } @@ -275,24 +230,17 @@ void do_user_opt(fdList &allFds, int userNbr, std::vector opt, int case 'o': if (sign == true) return ; - // if (allFds.userData[userNbr].mode.o == false) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + opt[1] + " :You're not channel operator\n"); - // return ; - // } allFds.userData[new_target].mode.o = (sign == true) ? true : false; break ; - default: std::cout << "Default" << std::endl; + default: break ; } } - std::cout << "mode w== " << allFds.userData[new_target].mode.w << std::endl; return; } void MODE(std::string buffer, fdList &allFds, int userNbr) { - (void)userNbr; std::vector splitBuff; int pos; @@ -302,21 +250,17 @@ void MODE(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + " MODE " + splitBuff[0] + " :Not enough parameters\n"); return ; } - if (splitBuff[1][0] == '#' || splitBuff[1][0] == '&') //splitbuff[1] always equal to or + if (splitBuff[1][0] == '#' || splitBuff[1][0] == '&') { - if ((pos = find_channel(allFds, splitBuff[1])) == -1) //if true chan doesn't exist + if ((pos = find_channel(allFds, splitBuff[1])) == -1) { std::cout << splitBuff[1] << ": No such channel" << std::endl; cmd_error(allFds, allFds.userData[userNbr].fd, "403 " + allFds.userData[userNbr].nickname + " MODE " + splitBuff[1] + " :No such channel\n"); return ; - }//else - //verify_option(allFds, str, i); //needed? - - // std::cout << "splitbuff[2] = " << splitBuff[2] << std::endl; + } if (splitBuff.size() > 2) { search_and_erase(splitBuff[2], "opsitnmlbvk"); - // std::cout << "splitbuff[2] after = " << splitBuff[2] << std::endl; if ((splitBuff[2].size() < 2) || (splitBuff[2][0] != '-' && splitBuff[2][0] != '+')) { if (splitBuff[2].size() > 2) @@ -331,10 +275,8 @@ void MODE(std::string buffer, fdList &allFds, int userNbr) } else chan_reply(allFds.channelList[pos], allFds.userData[userNbr]); - //do_option one by one here (do_chan_opt)? return ; } - // pos = find_user(allFds, splitBuff[1]); else if ((pos = find_user(allFds, splitBuff[1])) == -1) { std::cout << "user doesn't exist" << std::endl; @@ -356,6 +298,4 @@ void MODE(std::string buffer, fdList &allFds, int userNbr) else user_reply(allFds.userData[userNbr]); } - //do_option one by one here (do_user_opt)? - } \ No newline at end of file diff --git a/srcs/commands/channel_op/topic.cpp b/srcs/commands/channel_op/topic.cpp index a543f32..95a8acd 100644 --- a/srcs/commands/channel_op/topic.cpp +++ b/srcs/commands/channel_op/topic.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:19:52 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:25:05 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:35:41 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ void TOPIC(std::string buffer, fdList &allFds, int userNbr) int chanNbr; std::vector splitBuff; - std::cout << "topic im here1\n";//RPL_NOTOPIC //RPL_TOPIC if (!allFds.userData[userNbr].registered) { cmd_error(allFds, allFds.userData[userNbr].fd, "451 " + allFds.userData[userNbr].nickname + " TOPIC :You have not registered\r\n"); @@ -44,12 +43,6 @@ void TOPIC(std::string buffer, fdList &allFds, int userNbr) return ; } } - // else if (!allFds.userData[userNbr].op && !allFds.userData[userNbr].op) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "482 " + allFds.userData[userNbr].nickname + " " + splitBuff[1] + " :You're not channel operator\n"); - // return ; - // } - std::cout << "topic im here2\n";//RPL_NOTOPIC //RPL_TOPIC if (splitBuff.size() < 3) { if (!allFds.channelList[chanNbr].topic.empty()) @@ -57,14 +50,12 @@ void TOPIC(std::string buffer, fdList &allFds, int userNbr) else cmd_error(allFds, allFds.userData[userNbr].fd, "331 TOPIC " + splitBuff[1] + " :No topic is set\r\n"); return; - //std::cout << "PRINT TOPIC here\n";//RPL_NOTOPIC //RPL_TOPIC } else { allFds.channelList[chanNbr].topic = buffer.substr(6 + splitBuff[1].size() + 2, std::string::npos); - //std::cout << "topic= " << allFds.channelList[chanNbr].topic << std::endl; - cmd_reply(allFds, allFds.userData[userNbr].fd, "332 TOPIC " + splitBuff[1] + " :" + allFds.channelList[chanNbr].topic + "\r\n"); - //std::cout << "PRINT TOPIC here topic set\n";//RPL_NOTOPIC //RPL_TOPIC + for (size_t i = 0; i < allFds.channelList[chanNbr].userList.size(); i++) + cmd_reply(allFds, allFds.channelList[chanNbr].userList[i]->fd, "332 TOPIC " + splitBuff[1] + " :" + allFds.channelList[chanNbr].topic + "\r\n"); } return ; } \ No newline at end of file diff --git a/srcs/commands/channel_op/utils_mode.cpp b/srcs/commands/channel_op/utils_mode.cpp index 90ddcb9..1f55e4a 100644 --- a/srcs/commands/channel_op/utils_mode.cpp +++ b/srcs/commands/channel_op/utils_mode.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/03/09 00:13:32 by apommier #+# #+# */ -/* Updated: 2023/03/13 10:23:05 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:36:06 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,22 +64,11 @@ void chan_reply(channelData &chan, clientData &user) void chan_mode_reply(fdList &allFds, channelData &chan, int userNbr, std::string mode, int sign) { - //userNbr = asking client - //client = changed mode client - - //:kinou3!kinou@172.17.0.1 MODE #test +o :kinou1 - //:kinou3!kinou@172.17.0.1 MODE #test :+p - //kinou3 = baseop - //kinou1 = newOP - - - std::string reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + std::string reply; + std::string base_reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " MODE " + chan.name;// + " :+" + mode + "\r\n"; - //if (sign) - // reply += " +"; - //else - // reply += " -"; - if (sign) + + if (sign && contain_any(mode, "olbvk")) { reply += " +"; if (mode == "o") @@ -93,16 +82,20 @@ void chan_mode_reply(fdList &allFds, channelData &chan, int userNbr, std::string else if (mode == "k") reply += mode + " :" + chan.password; } - else if (mode == "o") - reply += " -" + mode + " :" + chan.verboseList.back()->nickname; - else if (mode == "b") - reply += " -" + mode + " :" + chan.verboseList.back()->nickname; - else if (mode == "v") - reply += " -" + mode + " :" + chan.verboseList.back()->nickname; + else if (contain_any(mode, "obv")) + { + if (mode == "o") + reply += " -" + mode + " :" + chan.verboseList.back()->nickname; + else if (mode == "b") + reply += " -" + mode + " :" + chan.verboseList.back()->nickname; + else if (mode == "v") + reply += " -" + mode + " :" + chan.verboseList.back()->nickname; + } else if (sign) - reply += " :+" + mode; + reply += " :+" + mode; else reply += " :-" + mode; + reply = base_reply + reply; reply += "\r\n"; std::cout << "reply=" << reply << std::endl; for (size_t i = 0; i < chan.userList.size(); i++) @@ -110,27 +103,17 @@ void chan_mode_reply(fdList &allFds, channelData &chan, int userNbr, std::string std::cout << "i=" << i << std::endl; send(chan.userList[i]->fd, reply.c_str(), reply.size(), 0); } - //send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0); - //void user_reply(clientData &user) } void user_mode_reply(fdList &allFds, clientData &user, int userNbr, std::string mode) { - //userNbr = asking client - //client = changed mode client std::string reply = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " MODE " + user.nickname + " :+" + mode + "\r\n"; send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0); - //void user_reply(clientData &user) } void user_reply(clientData &user) { - //:irc.server.com 221 ClientName +ix - - //std::string reply; - //std::string reply = " +"; - //:kinou1!kinou@127.0.0.1 MODE kinou1 :+i std::string reply = ":irc.local 221 " + user.nickname + " +"; if (user.mode.i) reply += 'i'; @@ -143,12 +126,10 @@ void user_reply(clientData &user) reply += "\r\n"; std::cout << reply; send(user.fd, reply.c_str(), reply.size(), 0); - //cmd_reply(allFds, user.fd, reply); } int search_and_erase(std::string &str, std::string toFind) { - // std::vector::iterator i = str.begin; int i = 1; //1 instead of 0 to skip +/- while (str[i] != 0) { diff --git a/srcs/commands/cmd_utils.cpp b/srcs/commands/cmd_utils.cpp index e70bd73..6ecc223 100644 --- a/srcs/commands/cmd_utils.cpp +++ b/srcs/commands/cmd_utils.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/10 15:46:10 by apommier #+# #+# */ -/* Updated: 2023/02/13 18:22:37 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:38:37 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,11 +28,15 @@ void split_but_keep(std::string const &str, const char delim, std::vector +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/15 16:34:57 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:14:02 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:36:13 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,7 +44,6 @@ void KILL(std::string buffer, fdList &allFds, int userNbr) msg = "connection killed by " + allFds.userData[userNbr].nickname + " " + buffer.substr(buffer.find_first_of(':'), std::string::npos); fullMsg = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@172.17.0.1 " + msg + "\r\n"; send(allFds.userData[pos].fd, fullMsg.c_str(), fullMsg.size(), 0); - //send_notice_msg(allFds, allFds.userData[userNbr].fd, userNbr) delete_user(allFds, pos); return ; } \ No newline at end of file diff --git a/srcs/commands/operator/oper.cpp b/srcs/commands/operator/oper.cpp index 5dab1b7..3efad4d 100644 --- a/srcs/commands/operator/oper.cpp +++ b/srcs/commands/operator/oper.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:04:47 by apommier #+# #+# */ -/* Updated: 2023/03/13 06:06:11 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:36:20 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,6 @@ void OPER(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "461 " + allFds.userData[userNbr].nickname + " OPER :Not enough parameters\r\n"); return ; } - //:irc.local 491 kinou2 if (splitBuff[1] != OP_NAME) { cmd_error(allFds, allFds.userData[userNbr].fd, "491 " + allFds.userData[userNbr].nickname + " :Invalid oper credentials\r\n"); @@ -39,12 +38,6 @@ void OPER(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "464 " + allFds.userData[userNbr].nickname + " :Password incorrect\r\n"); return ; } - // pos = find_user(allFds, splitBuff[1]); - // if (pos != -1) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "401 " + allFds.userData[userNbr].nickname + " SQUIT " + splitBuff[1] + " :No such nick/channel\n"); - // return ; - // } allFds.userData[userNbr].op = 1; allFds.userData[userNbr].mode.o = 1; msg = "381 " + allFds.userData[userNbr].nickname + " " + allFds.userData[userNbr].nickname + " :You are now an IRC operator\r\n"; diff --git a/srcs/commands/operator/squit.cpp b/srcs/commands/operator/squit.cpp index 91f4c55..723cada 100644 --- a/srcs/commands/operator/squit.cpp +++ b/srcs/commands/operator/squit.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:11:03 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:15:48 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:36:38 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,10 +16,6 @@ void SQUIT(std::string buffer, fdList &allFds, int userNbr) { - // (void)buffer; - // (void)allFds; - // (void)userNbr; - std::cout << "squit | server end\n"; std::vector splitBuff; split(buffer, ' ', splitBuff); @@ -38,7 +34,6 @@ void SQUIT(std::string buffer, fdList &allFds, int userNbr) cmd_error(allFds, allFds.userData[userNbr].fd, "481 " + allFds.userData[userNbr].nickname + " :Permission Denied- You're not an IRC operator\r\n"); return ; } - std::cout << "squit serv= " << splitBuff[2] << std::endl; if (splitBuff[1] != "irc.local") { cmd_error(allFds, allFds.userData[userNbr].fd, "402 " + allFds.userData[userNbr].nickname + " " + splitBuff[2] + " :No such server\r\n"); @@ -48,7 +43,6 @@ void SQUIT(std::string buffer, fdList &allFds, int userNbr) for (int pos = 0; pos < allFds.nbrUser; pos++) { fullMsg = ":irc.local NOTICE " + allFds.userData[pos].userName + "." + allFds.userData[pos].nickname + " :*** You have been disconnected from the server\r\n"; - //fullMsg = ":" + allFds.userData[pos].nickname + "!" + + "@" + allFds.userData[pos].ip + " QUIT :Server shutdown\n"; send(allFds.userData[pos].fd, fullMsg.c_str(), fullMsg.size(), 0); if (close(allFds.userData[pos].fd) != 0) ft_error("close() error"); @@ -59,12 +53,5 @@ void SQUIT(std::string buffer, fdList &allFds, int userNbr) if (close(allFds.epollFd) != 0) ft_error("close() error"); allFds.alive = 0; - // if (allFds.userData[userNbr].op) - // allFds.alive = 0; - // else - // { - // std::cout << "Not op but okay i'll do it\n"; - // allFds.alive = 0; - // } return ; } \ No newline at end of file diff --git a/srcs/commands/operator/wallops.cpp b/srcs/commands/operator/wallops.cpp index 6c42e63..368c842 100644 --- a/srcs/commands/operator/wallops.cpp +++ b/srcs/commands/operator/wallops.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/16 17:09:38 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:16:06 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:36:47 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ void WALLOPS(std::string buffer, fdList &allFds, int userNbr) std::vector splitBuff; std::string msg; - //std::cout << "privmsg bufer= --" << buffer << std::endl; if (!allFds.userData[userNbr].registered) { cmd_error(allFds, allFds.userData[userNbr].fd, "451 " + allFds.userData[userNbr].nickname + " WALLOPS :You have not registered\r\n"); @@ -31,11 +30,9 @@ void WALLOPS(std::string buffer, fdList &allFds, int userNbr) return ; } msg = ":" + allFds.userData[userNbr].nickname + " WALLOPS :" + buffer.substr(splitBuff[1].size() + std::string::npos + 1) + "\r\n"; - //msg = "PRIVMSG " + allFds.userData[userNbr].nickname + " " + buffer.substr(splitBuff[1].size() + std::string::npos + 1); for (int i = 0; i < allFds.nbrUser; i++) { if (allFds.userData[i].op && allFds.userData[i].mode.s) send(allFds.userData[i].fd, msg.c_str(), msg.size(), 0); - //PRIVMSG(msg, allFds, userNbr); } } \ No newline at end of file diff --git a/srcs/commands/other/names.cpp b/srcs/commands/other/names.cpp index 89c0aa5..ab55d61 100644 --- a/srcs/commands/other/names.cpp +++ b/srcs/commands/other/names.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/16 18:14:15 by apommier #+# #+# */ -/* Updated: 2023/03/13 10:24:43 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:37:30 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,27 +17,26 @@ void names_reply(fdList &allFds, channelData &chan, int fd, int userNbr) { - //:irc.local 353 kinou3 = #test :@kinou3 std::string msg; print_client_list(chan.opList); print_client_list(chan.verboseList); msg = "353 " + allFds.userData[userNbr].nickname + " = " + chan.name + " :"; for (size_t i = 0; i < chan.userList.size(); i++) { - if (chan.userList[i]->mode.i && !is_in_same(allFds, userNbr, find_user(allFds, chan.userList[i]->nickname) && !allFds.userData[userNbr].op)/*user secret et pas meme chan*/) + if (chan.userList[i]->mode.i && !is_in_same(allFds, userNbr, find_user(allFds, chan.userList[i]->nickname) && !allFds.userData[userNbr].op)) ; - else if (find_client_list(chan.opList, chan.userList[i]) != -1 || allFds.userData[userNbr].op)//(chan.userList[i]->mode.o)//ischanop + else if (find_client_list(chan.opList, chan.userList[i]) != -1 || allFds.userData[userNbr].op) { std::cout << "he is op!!!\n"; msg += "@" + chan.userList[i]->nickname + " "; } - else if (find_client_list(chan.verboseList, chan.userList[i]) != -1)//(chan.userList[i]->mode.v)//verbose + else if (find_client_list(chan.verboseList, chan.userList[i]) != -1) { std::cout << "he is verbose???\n"; msg += "+" + chan.userList[i]->nickname + " "; } else - msg += /*"=" +*/ chan.userList[i]->nickname + " "; + msg += chan.userList[i]->nickname + " "; } msg += "\r\n"; std::cout << "name msg= " << msg; @@ -54,15 +53,7 @@ void names_loop(fdList &allFds, std::vector splitBuff, int userNbr) split(splitBuff[1], ',', splitChan); for (size_t i = 0; i < splitChan.size(); i++) { - //if (splitChan[i][0] != '#' && splitChan[i][0] != '&') - //{ - // buffer = "476 " + allFds.userData[userNbr].nickname + " NAMES " + splitChan[i] + " :Bad Channel Mask\r\n"; - // cmd_error(allFds, allFds.userData[userNbr].fd, buffer); - // return ; - //} pos = find_channel(allFds, splitChan[i]); - // if ((!allFds.channelList[i].mode.p && !allFds.channelList[i].mode.s) - // || is_joined(allFds, allFds.channelList[i].name, userNbr)) if (pos != -1) { if ((!allFds.channelList[pos].mode.p && !allFds.channelList[pos].mode.s) @@ -79,7 +70,6 @@ void names_loop(fdList &allFds, std::vector splitBuff, int userNbr) void NAMES(std::string buffer, fdList &allFds, int userNbr) { std::vector splitBuff; - //int pos; if (!allFds.userData[userNbr].registered) { @@ -93,24 +83,11 @@ void NAMES(std::string buffer, fdList &allFds, int userNbr) { if ((!allFds.channelList[i].mode.p && !allFds.channelList[i].mode.s) || is_joined(allFds, allFds.channelList[i].name, userNbr) || allFds.userData[userNbr].op) - { names_reply(allFds, allFds.channelList[i], allFds.userData[userNbr].fd, userNbr); - //print who - } } return ; } else names_loop(allFds, splitBuff, userNbr); - - // if ((pos = find_channel(allFds, splitBuff[1])) != -1) - // { - // if ((!allFds.channelList[pos].mode.p && !allFds.channelList[pos].mode.s) - // || is_joined(allFds, allFds.channelList[pos].name, userNbr)) - // { - // names_reply(allFds, allFds.channelList[pos], allFds.userData[userNbr].fd, allFds.userData[userNbr].nickname); - // } - // return; //?? - // } return ; } diff --git a/srcs/commands/other/ping_pong.cpp b/srcs/commands/other/ping_pong.cpp index 05bc4e4..ac5a311 100644 --- a/srcs/commands/other/ping_pong.cpp +++ b/srcs/commands/other/ping_pong.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/13 00:16:27 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:16:50 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:37:45 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,14 +29,7 @@ void PONG(std::string buffer, fdList &allFds, int userNbr) std::vector splitBuff; split(buffer, ' ', splitBuff); msg = ":irc.local PONG irc.local :irc.local\r\n"; - // ":irc.local PONG irc.local :irc.local" send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0); - // if (splitBuff.size() < 2) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "431 " + allFds.userData[userNbr].nickname + " NICK :No nickname given\n"); - // //write(allFds.userData[user].fd, "ERR_NEEDMOREPARAMS", 18); - // return ; - // } return ; } @@ -52,18 +45,6 @@ void PING(std::string buffer, fdList &allFds, int userNbr) std::vector splitBuff; split(buffer, ' ', splitBuff); msg = ":irc.local PONG irc.local :" + splitBuff[1] + "\r\n"; - //msg = "PONG irc.local " + splitBuff[1]; send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0); - //std::cout << "pong send\n"; - //std::cout << "/r = " << (int)'\r' << "\n"; - //std::cout << "/n = " << (int)'\n' << "\n"; - //std::cout << "msg=" << msg << "\n"; - // if (splitBuff.size() < 2) - // { - // cmd_error(allFds, allFds.userData[userNbr].fd, "431 " + allFds.userData[userNbr].nickname + " NICK :No nickname given\n"); - // //write(allFds.userData[user].fd, "ERR_NEEDMOREPARAMS", 18); - // return ; - // } - return ; } \ No newline at end of file diff --git a/srcs/commands/other/quit.cpp b/srcs/commands/other/quit.cpp index 9be0f4b..a2508f1 100644 --- a/srcs/commands/other/quit.cpp +++ b/srcs/commands/other/quit.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/11 19:10:26 by apommier #+# #+# */ -/* Updated: 2023/03/10 22:16:59 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:38:01 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,26 +16,16 @@ void send_quit_msg(fdList &allFds, int userNbr, std::string msg) { std::string fullMsg; - // if (msg.empty()) - // fullMsg = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " QUIT :" + joined_chan.name + "\n"; - // else fullMsg = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " QUIT :" + msg + "\r\n"; for (size_t i = 0; i < allFds.userData[userNbr].joinedChan.size(); i++) { - //allFds.userData[userNbr].joinedChan[i]-> - //send(joined_chan.userList[i]->fd, fullMsg.c_str(), fullMsg.size(), 0); - for (size_t j = 0; j < allFds.userData[userNbr].joinedChan[i]->userList.size(); j++) { - //std::cout << "send nickname " << allFds.userData[userNbr].joinedChan[i]->userList[j]->nickname << std::endl; if (allFds.userData[userNbr].joinedChan[i]->userList[j] != &allFds.userData[userNbr]) { if (allFds.userData[userNbr].joinedChan[i]->userList[j]->mode.s) send(allFds.userData[userNbr].joinedChan[i]->userList[j]->fd, fullMsg.c_str(), fullMsg.size(), 0); } - //else - // std::cout << "hehe je quitte\n"; - //std::cout << "loop here\n"; } } } @@ -46,11 +36,7 @@ void QUIT(std::string buffer, fdList &allFds, int userNbr) split(buffer, ' ', splitBuff); if (splitBuff.size() > 2) - { send_quit_msg(allFds, userNbr, buffer.substr(5, std::string::npos));//to test - //print message? - //:kinou2!kinou@172.17.0.1 QUIT :Quit: leaving - } else send_quit_msg(allFds, userNbr, allFds.userData[userNbr].nickname); delete_user(allFds, userNbr); diff --git a/srcs/commands/other/who.cpp b/srcs/commands/other/who.cpp index 7adc431..908695e 100644 --- a/srcs/commands/other/who.cpp +++ b/srcs/commands/other/who.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/16 18:14:17 by apommier #+# #+# */ -/* Updated: 2023/03/13 04:57:33 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:38:26 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,22 +15,9 @@ //void who_reply(fdList &allFds, int userNbr, int fd) void who_reply(fdList &allFds, clientData &user, int fd) { - // std::string msg; - // //: 352 H :0 - // //if (chan.size()) - // msg = "352 " /*+ chan + " " */ - // + allFds.userData[userNbr].userName + " " - // + allFds.userData[userNbr].hostName + " irc.local " - // + allFds.userData[userNbr].nickname + " :0 " - // + allFds.userData[userNbr].realName + "\n"; - - // cmd_reply(allFds, fd, msg); - - std::string msg; - //: 352 H :0 - //if (chan.size()) - msg = "352 " /*+ chan + " " */ + + msg = "352 " + user.userName + " " + user.hostName + " irc.local " + user.nickname + " :0 " @@ -56,10 +43,7 @@ void WHO(std::string buffer, fdList &allFds, int userNbr) for (int i = 0; i < allFds.nbrUser; i++) { if (!allFds.userData[i].mode.i || is_in_same(allFds, userNbr, i) || allFds.userData[userNbr].op) - { who_reply(allFds, allFds.userData[i], allFds.userData[userNbr].fd); - //print who - } } return ; } @@ -69,11 +53,7 @@ void WHO(std::string buffer, fdList &allFds, int userNbr) return ; } for (size_t i = 0; i < allFds.channelList[pos].userList.size(); i++) - { who_reply(allFds, *allFds.channelList[pos].userList[i], allFds.userData[userNbr].fd); - } - //" :End of WHOIS list" cmd_reply(allFds, allFds.userData[userNbr].fd, allFds.userData[userNbr].nickname + " :End of WHO list\n"); - //std::cout << return ; } \ No newline at end of file diff --git a/srcs/commands/parse_commands.cpp b/srcs/commands/parse_commands.cpp index c2f3165..ddbb0d0 100644 --- a/srcs/commands/parse_commands.cpp +++ b/srcs/commands/parse_commands.cpp @@ -6,20 +6,12 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/06 22:01:25 by apommier #+# #+# */ -/* Updated: 2023/03/09 05:38:19 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:39:13 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../includes/ft_irc.hpp" -std::string ft_test() -{ - std::cout << "hehe je suis la" << std::endl; - return ("prout"); -} - - - void parse_commands(std::string buffer, fdList &allFds, int userNbr) { //std::string cmd = buffer; @@ -29,37 +21,21 @@ void parse_commands(std::string buffer, fdList &allFds, int userNbr) std::cout << "BUFFER: " << buffer; int a = 0; - if (buffer.find(13) != std::string::npos) //change that pls - { - //std::cout << "pos of bitch= " << buffer.find(13) << std::endl; - //std::cout << "size= " << buffer.size() << std::endl; - //if (buffer.find(13) != buffer.size() - 2) - // std::cout << "BE CAREFUL CHAR 10 (line feed) not at end\n"; + if (buffer.find(13) != std::string::npos) buffer.erase(buffer.find(13), 1); - } - - - 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 << "before toupper: " << splitBuff[0] << std::endl; for (size_t i = 0; i < splitBuff[0].size(); i++) splitBuff[0][i] = toupper(splitBuff[0][i]); - //std::cout << "after toupper: " << splitBuff[0] << std::endl; while (a < allFds.parsingTab.cmdNbr - 1 && splitBuff[0] != allFds.parsingTab.cmdName[a]) a++; - //std::cout << "after while \n"; if (a == allFds.parsingTab.cmdNbr - 1) std::cout << "Command not found\n"; else - { allFds.parsingTab.cmdPtr[a](allFds.userData[userNbr].cmdBuffer, allFds, userNbr); - //allFds.parsingTab.cmdPtr[a] - //JOIN(allFds.userData[userNbr].cmdBuffer, allFds, userNbr); - } if (splitBuff[0] != "QUIT") allFds.userData[userNbr].cmdBuffer.clear(); } \ No newline at end of file diff --git a/srcs/delete_user.cpp b/srcs/delete_user.cpp index 8da36bb..7ccb21a 100644 --- a/srcs/delete_user.cpp +++ b/srcs/delete_user.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/12 20:38:50 by apommier #+# #+# */ -/* Updated: 2023/03/10 21:15:00 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:39:49 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,8 @@ void del_user_in_chan(clientData *user, channelData *chan) { - // size_t i; int pos; - // for (i = 0; user != chan->userList[i]; i++) - // ; - // chan->userList.erase(chan->userList.begin() + i); - + if ((pos = find_client_list(chan->userList, user)) != -1) chan->userList.erase(chan->userList.begin() + pos); @@ -34,8 +30,6 @@ void del_user_in_chan(clientData *user, channelData *chan) if ((pos = find_client_list(chan->opList, user)) != -1) chan->opList.erase(chan->opList.begin() + pos); - - //chan->nbrUser--; } void del_chan_in_user(clientData *user, channelData *chan) @@ -44,7 +38,6 @@ void del_chan_in_user(clientData *user, channelData *chan) for (i = 0; chan != user->joinedChan[i]; i++) ; user->joinedChan.erase(user->joinedChan.begin() + i); - //user->nbrUser--; } void delete_user(fdList &allFds, int userNbr) @@ -52,10 +45,7 @@ void delete_user(fdList &allFds, int userNbr) std::cout << "Delete user nbr " << userNbr << std::endl; for (size_t i = 0; i < allFds.channelList.size(); i++)//all joined chan - { del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[i]); - //allFds.userData[userNbr].joinedChan[i].erase(find_user_in_chan(allFds.userData[userNbr].joinedChan[i])/*find user in chan*/) - } close(allFds.userData[userNbr].fd); allFds.userData.erase(allFds.userData.begin() + userNbr); diff --git a/srcs/main.cpp b/srcs/main.cpp index 00a0bb8..1bbfd29 100644 --- a/srcs/main.cpp +++ b/srcs/main.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/01 17:27:33 by apommier #+# #+# */ -/* Updated: 2023/03/03 22:57:10 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:39:59 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,6 @@ int main(int ac, char **av) { if (!(ac == 3)) { - //ft_error("wrong number of arguments\nFORMAT: ./ircserv "); std::cout << "wrong number of arguments\nFORMAT: ./ircserv \n"; exit(1); } @@ -25,10 +24,6 @@ int main(int ac, char **av) { initialize(av); } - // catch() - // { - // std::cout << "Fatal error causing the end of the program :/\n"; - // } catch(std::exception &e) { if (errno) diff --git a/srcs/new_connection.cpp b/srcs/new_connection.cpp index 26fb5f4..1599e44 100644 --- a/srcs/new_connection.cpp +++ b/srcs/new_connection.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 22:26:27 by apommier #+# #+# */ -/* Updated: 2023/03/11 20:36:50 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:42:13 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,42 +19,20 @@ void new_connection(fdList &allFds) int newFd; std::cout << "==========NEW CLIENT========\n"; - //std::cout << "in new adress " << &allFds << std::endl; - //std::cout << "new connection !" << std::endl; - - // if (MAX_EVENTS == allFds.nbrUser) - // { - // std::cout << "new connection refused, already full" << std::endl; - // return ; - // } - - //int newUserFd; - //allFds.userFdList.push_back(newUserFd); newFd = accept(allFds.serverFd, (struct sockaddr *)&addr, (socklen_t*)&addrLen); - //protect accept - - - - //allFds.userFdList[allFds.nbrUser] = newFd; + if (newFd == -1) + { + std::cout << "accept error: client connexion canceled\n"; + return ; + } allFds.userFdList.push_back(newFd); - //std::cout << "newConnection | old user fd = " << newFd << std::endl; if (fcntl(newFd, F_SETFL, O_NONBLOCK) == -1) ft_error("fctnl() error"); - - - //std::cout << "fcntl return = " << newFd; - //close(newFd); - //std::cout << "newConnection | user fd = " << allFds.userFdList[allFds.nbrUser] << std::endl; - clientData newElement; newElement.fd = newFd; newElement.addr = addr; newElement.ip = inet_ntoa(addr.sin_addr); - //newElement.op = 0; allFds.userData.push_back(newElement); - //allFds.userData[allFds.nbrUser].fd = allFds.userFdList[allFds.nbrUser]; - //std::cout << "newConnection | user in data fd = " << allFds.userData[allFds.nbrUser].fd << std::endl; - epoll_add(allFds.epollFd, allFds.userFdList[allFds.nbrUser]); allFds.nbrUser++; } \ No newline at end of file diff --git a/srcs/server_loop.cpp b/srcs/server_loop.cpp index 95663b2..f17f6a0 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/16 23:01:04 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:42:42 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,49 +14,24 @@ void start_loop(fdList &allFds) { - //bool alive = true; - //int readChar; int eventNbr; int i; - //int userId; int nbr; - - + allFds.alive = 1; - //std::cout << "serverFd: " << allFds.serverFd << std::endl; while (allFds.alive) { - //std::cout << "---------start loop-----------\n"; - //std::cout << "\n\n\nwhile alive event loop" << std::endl; - //std::cout << "in loop nbr user = " << allFds.nbrUser << std::endl; - eventNbr = epoll_wait(allFds.epollFd, allFds.events, MAX_EVENTS, 0); - - //eventNbr = epoll_wait(allFds.epollFd, allFds.events, MAX_EVENTS, 5000); - - //std::cout << "eventNbr = " << eventNbr << std::endl; - //std::cout << "eventNbr: " << eventNbr << std::endl; - //std::cout << "in loop adress " << &allFds << std::endl; for (i = 0; i < eventNbr ; i++) { - - //std::cout << "event[i]'s fd: " << allFds.events[i].data.fd << std::endl; - //std::cout << "i= " << i << std::endl; if (allFds.events[i].data.fd == allFds.serverFd) - { new_connection(allFds); - //std::cout << "after new fd loop " << allFds.userData[i].fd << std::endl; - } else { nbr = find(allFds.userFdList.begin(), allFds.userFdList.end(), allFds.events[i].data.fd) - allFds.userFdList.begin(); - //if (!clientRequest(allFds, i)) - // if (!clientRequest(allFds, nbr)) - // alive = false; clientRequest(allFds, nbr); } } - //std::cout << "---------end loop-----------\n"; } std::cout << "dead server\n"; diff --git a/srcs/start_server.cpp b/srcs/start_server.cpp index b30cb0e..9392003 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/03/11 20:07:23 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:43:06 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,25 +20,16 @@ void initialize(char **av) { - //int allFds.serverFd; - //int epollFd; - //int newSockFd = 0; int opt = 1; struct sockaddr_in addr; - //int addrLen = sizeof(addr); fdList allFds; - //allFds.userData.reserve(MAX_EVENTS); - //allFds.channelList.reserve(MAX_CHAN); allFds.nbrUser = 0; allFds.password = av[2]; std::cout << "pass= " << av[2] << std::endl; - //allFds.nbrUser = 0; allFds.serverFd = socket(AF_INET, SOCK_STREAM, 0); if (allFds.serverFd == -1) ft_error("socket() error"); - // if (setsockopt(allFds.serverFd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) - // ft_error("setsockopt() error"); if (setsockopt(allFds.serverFd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) ft_error("setsockopt() error"); @@ -53,23 +44,10 @@ void initialize(char **av) if (listen(allFds.serverFd, 10) == -1) ft_error("listen() error"); - // newSockFd = accept(allFds.serverFd, (struct sockaddr *)&addr, (socklen_t*)&addrLen); - // if (newSockFd == -1) - // ft_error("accept() error"); - - // char buffer[1024]; - // int nbrRead; - // while (strncmp("/quit", buffer, 5)) - // { - // nbrRead = read() - // } time_t timer; time(&timer); allFds.creation_date = ctime(&timer); allFds.epollFd = epoll_start(); - //allFds.userData epoll_add(allFds.epollFd, allFds.serverFd); start_loop(allFds); - - //send(newSockFd, "hello", 5, 0); } \ No newline at end of file diff --git a/srcs/utils.cpp b/srcs/utils.cpp index d9faa61..e52a02a 100644 --- a/srcs/utils.cpp +++ b/srcs/utils.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/06 21:46:41 by apommier #+# #+# */ -/* Updated: 2023/03/13 08:32:00 by apommier ### ########.fr */ +/* Updated: 2023/03/13 16:44:11 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,13 +16,6 @@ void ft_error(std::string str) { std::cerr << str << std::endl; throw std::exception(); - // if (errno) - // { - // std::cerr << "errno: " << strerror(errno) << std::endl; - // throw std::exception(); - // //exit(errno); - // } - //exit(1); } void close_fd(int fd) @@ -33,29 +26,21 @@ void close_fd(int fd) void ft_putstr_fd(int fd, std::string str) { - // write(fd, str.c_str(), str.size()); - // write(fd, "\n", 1); str += "\r\n"; send(fd, str.c_str(), str.size(), 0); } void cmd_error(fdList &allFds, int fd, std::string error) { - (void)allFds; //to delete + (void) allFds; error = ":irc.local " + error; - //write(fd, ":irc.local ", 11); - //write(fd, error.c_str(), error.size()); send(fd, error.c_str(), error.size(), 0); } void cmd_reply(fdList &allFds, int fd, std::string error) { - - (void)allFds; //to delete + (void) allFds; error = ":irc.local " + error; - //std::cout << cmd_reply= --- << error << "---"; - //write(fd, ":irc.local ", 11); - //write(fd, error.c_str(), error.size()); send(fd, error.c_str(), error.size(), 0); }