mode response ban list

This commit is contained in:
kinou-p 2023-03-09 04:39:17 +01:00
parent 33e2faea4f
commit ad04ac5c7e
4 changed files with 31 additions and 15 deletions

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/01 17:27:37 by apommier #+# #+# */ /* Created: 2022/12/01 17:27:37 by apommier #+# #+# */
/* Updated: 2023/03/09 01:11:57 by apommier ### ########.fr */ /* Updated: 2023/03/09 03:07:21 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -241,7 +241,8 @@ void parse_commands(std::string buffer, fdList &allFds, int userNbr);
/* ******************************MODE UTILS********************************** */ /* ******************************MODE UTILS********************************** */
/* ************************************************************************** */ /* ************************************************************************** */
std::string chan_reply(channelData &chan, clientData &user); void ban_reply(channelData &chan, clientData &user);
std::string user_reply(clientData &user); void chan_reply(channelData &chan, clientData &user);
void user_reply(clientData &user);
int search_and_erase(std::string &str, std::string toFind); int search_and_erase(std::string &str, std::string toFind);
bool str_to_int(int &i, const std::string s); bool str_to_int(int &i, const std::string s);

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/19 22:10:07 by apommier #+# #+# */ /* Created: 2023/02/19 22:10:07 by apommier #+# #+# */
/* Updated: 2023/03/09 01:48:54 by apommier ### ########.fr */ /* Updated: 2023/03/09 03:11:17 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -30,6 +30,7 @@ void leave_chan(fdList &allFds, std::string chan, int userNbr, std::string msg)
//del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[chanPos]); //del_user_in_chan(&allFds.userData[userNbr], &allFds.channelList[chanPos]);
int pos = find_client_list(allFds.channelList[chanPos].userList, &allFds.userData[userNbr]); 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].userList.erase(allFds.channelList[chanPos].userList.begin() + pos);
allFds.channelList[chanPos].nbrUser--;
del_chan_in_user(&allFds.userData[userNbr], &allFds.channelList[chanPos]); del_chan_in_user(&allFds.userData[userNbr], &allFds.channelList[chanPos]);
//:WiZ!jto@tolsun.oulu.fi PART #playzone :I lost //:WiZ!jto@tolsun.oulu.fi PART #playzone :I lost
//:awd!kinou@kinou PART #test //:awd!kinou@kinou PART #test
@ -51,6 +52,7 @@ void leave_chan(fdList &allFds, std::string chan, int userNbr, std::string msg)
// reply += "\n"; // reply += "\n";
std::cout << "leave msg=" << reply << std::endl; std::cout << "leave msg=" << reply << std::endl;
send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0); send(allFds.userData[userNbr].fd, reply.c_str(), reply.size(), 0);
//allFds.channelList[chanPos].nbrUser--;
for (int i = 0; i < allFds.channelList[chanPos].nbrUser; i++) for (int i = 0; i < allFds.channelList[chanPos].nbrUser; i++)
{ {
if (allFds.channelList[chanPos].userList[i]->mode.s) if (allFds.channelList[chanPos].userList[i]->mode.s)

View File

@ -6,15 +6,27 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/03/09 00:13:32 by apommier #+# #+# */ /* Created: 2023/03/09 00:13:32 by apommier #+# #+# */
/* Updated: 2023/03/09 01:47:02 by apommier ### ########.fr */ /* Updated: 2023/03/09 02:30:14 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "../../../includes/ft_irc.hpp" #include "../../../includes/ft_irc.hpp"
// std::string ban_reply void ban_reply(channelData &chan, clientData &user)
{
std::string endReply;
std::string fullReply;
std::string reply = ":irc.local 367 " + user.nickname + " " + chan.name + " ";
for (size_t i = 0; i < chan.banList.size(); i++)
{
fullReply = reply + chan.banList[i]->nickname + "!" + chan.banList[i]->userName + "@" + chan.banList[i]->hostName + "\n";
send(user.fd, fullReply.c_str(), fullReply.size(), 0);
}
endReply = ":irc.local 367 " + user.nickname + " " + chan.name + " :End of channel ban list\n";
send(user.fd, endReply.c_str(), endReply.size(), 0);
}
std::string chan_reply(channelData &chan, clientData &user) void chan_reply(channelData &chan, clientData &user)
{ {
//:irc.server.com 324 ClientName #channel +tnkLs 10 operator1 operator2 //:irc.server.com 324 ClientName #channel +tnkLs 10 operator1 operator2
(void) chan; (void) chan;
@ -41,12 +53,13 @@ std::string chan_reply(channelData &chan, clientData &user)
reply += chan.maxUser; reply += chan.maxUser;
for (size_t i = 0; i < chan.opList.size(); i++) for (size_t i = 0; i < chan.opList.size(); i++)
reply += " " + chan.opList[i]->nickname; reply += " " + chan.opList[i]->nickname;
send(user.fd, reply.c_str(), reply.size(), 0);
//if (reply.size() > 2) //if (reply.size() > 2)
// reply_begin += reply; // reply_begin += reply;
return (reply); //return (reply);
} }
std::string user_reply(clientData &user) void user_reply(clientData &user)
{ {
//:irc.server.com 221 ClientName +ix //:irc.server.com 221 ClientName +ix
@ -61,7 +74,7 @@ std::string user_reply(clientData &user)
reply += 'w'; reply += 'w';
if (user.mode.o) if (user.mode.o)
reply += 'o'; reply += 'o';
return (reply); send(user.fd, reply.c_str(), reply.size(), 0);
} }
int search_and_erase(std::string &str, std::string toFind) int search_and_erase(std::string &str, std::string toFind)

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/12 20:38:50 by apommier #+# #+# */ /* Created: 2023/02/12 20:38:50 by apommier #+# #+# */
/* Updated: 2023/03/09 02:10:41 by apommier ### ########.fr */ /* Updated: 2023/03/09 02:17:28 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -53,7 +53,7 @@ void delete_user(fdList &allFds, int userNbr)
for (size_t i = 0; i < allFds.channelList.size(); i++)//all joined chan for (size_t i = 0; i < allFds.channelList.size(); i++)//all joined chan
{ {
del_user_in_chan(&allFds.userData[userNbr], allFds.channelList[i]); 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*/) //allFds.userData[userNbr].joinedChan[i].erase(find_user_in_chan(allFds.userData[userNbr].joinedChan[i])/*find user in chan*/)
} }
close(allFds.userData[userNbr].fd); close(allFds.userData[userNbr].fd);