Merge branch 'apommier' into sadjigui
This commit is contained in:
commit
e7f392f58c
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/01 17:27:37 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/22 13:40:08 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 21:12:34 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -129,11 +129,11 @@ struct channelData //each chan have one
|
||||
{
|
||||
std::string name;
|
||||
std::string topic;
|
||||
|
||||
6
|
||||
std::vector<clientData *> userList;
|
||||
std::vector<clientData *> banList;
|
||||
//std::vector<clientData *> invitedList;
|
||||
//std::vector<clientData *> verboseList;
|
||||
std::vector<clientData *> invitedList;
|
||||
std::vector<clientData *> verboseList;
|
||||
std::vector<clientData *> opList;
|
||||
|
||||
chanMode mode;
|
||||
@ -178,6 +178,7 @@ void delete_user(fdList &allFds, int userNbr);
|
||||
/* *********************************UTILS************************************ */
|
||||
/* ************************************************************************** */
|
||||
|
||||
int find_client_list(std::vector<clientData *> &list, clientData *client);
|
||||
void ft_putstr_fd(int fd, std::string str);
|
||||
void cmd_error(fdList &allFds, int userNbr, std::string error);
|
||||
void cmd_reply(fdList &allFds, int userNbr, std::string error);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/09 15:40:33 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/19 18:18:29 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 20:33:50 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -39,13 +39,13 @@ void leave_all(fdList &allFds, int userNbr)
|
||||
int chan_check(fdList &allFds, int userNbr, int chanNbr, std::vector<std::string> splitBuff)
|
||||
{
|
||||
std::string errorStr;
|
||||
if (0/*banned*/)
|
||||
if (find_client_list(allFds.channelList[chanNbr].banList, &allFds.userData[userNbr]) == -1)
|
||||
{
|
||||
errorStr = "474 * JOIN " + allFds.channelList[chanNbr].name + " :Cannot join channel (+b)\n";
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, errorStr); //ERR_INVITEONLYCHAN
|
||||
return (0);
|
||||
}
|
||||
if (allFds.channelList[chanNbr].mode.i)
|
||||
else if (allFds.channelList[chanNbr].mode.i && find_client_list(allFds.channelList[chanNbr].invitedList, &allFds.userData[userNbr]) == -1)
|
||||
{
|
||||
errorStr = "461 * JOIN " + allFds.channelList[chanNbr].name + " :Cannot join channel (+i)\n";
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, errorStr); //ERR_INVITEONLYCHAN
|
||||
@ -73,6 +73,7 @@ int chan_check(fdList &allFds, int userNbr, int chanNbr, std::vector<std::string
|
||||
void join_or_create(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
int chanNbr;
|
||||
int invitedUser;
|
||||
channelData joined_chan;
|
||||
std::vector<std::string> splitBuff;
|
||||
|
||||
@ -87,6 +88,8 @@ void join_or_create(std::string buffer, fdList &allFds, int userNbr)
|
||||
allFds.channelList[chanNbr].userList.push_back(&allFds.userData[userNbr]);//add user in chan data
|
||||
allFds.channelList[chanNbr].nbrUser++;
|
||||
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
|
||||
{
|
||||
@ -101,6 +104,12 @@ void join_or_create(std::string buffer, fdList &allFds, int userNbr)
|
||||
allFds.channelList.push_back(new_chan);
|
||||
allFds.userData[userNbr].joinedChan.push_back(&allFds.channelList.back());//add chan in user data
|
||||
}
|
||||
// if (chanNbr == -1)
|
||||
// {
|
||||
// chanNbr =
|
||||
// find_channel(allFds, splitBuff[1])
|
||||
// }
|
||||
|
||||
std::string fullMsg;
|
||||
fullMsg = ":" + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].ip + " JOIN :" + joined_chan.name + "\n";
|
||||
for (int i = 0; i < joined_chan.nbrUser; i++)
|
||||
@ -175,8 +184,7 @@ void JOIN(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::cout << "userNbr= " << userNbr << std::endl;
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
std::cout << "user not registered\n";
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * JOIN :You have not registered\n"); //ERR_NEEDMOREPARAMS
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * JOIN :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/19 22:10:07 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/20 17:50:46 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:46:29 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -51,6 +51,11 @@ void PART(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitChan;
|
||||
std::string msg;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * PART :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 08:53:03 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/20 11:51:26 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:46:47 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -25,6 +25,11 @@ void PRIVMSG(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitBuff;
|
||||
std::string msg;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * PRIVMSG :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
std::cout << "privmsg bufer= --" << buffer << std::endl;
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
@ -63,11 +68,17 @@ void send_msg(fdList &allFds, std::string msg, std::string dest, int userNbr)
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "442 * PRIVMSG " + dest + " :You're not on that channel\n");
|
||||
return ;
|
||||
}
|
||||
// if (allFds.channelList[pos].mode.m && !allFds.userData[userNbr].op && !is_chan_op(allFds, &allFds.channelList[pos], userNbr) && !allFds.channelList[pos].userMode[nbr].v)
|
||||
// if (find_client_list(allFds.channelList[pos].verboseList, &allFds.userData[userNbr]) != -1)
|
||||
// {
|
||||
// cmd_error(allFds, allFds.userData[userNbr].fd, "404 * PRIVMSG " + dest + " :Cannot send to channel\n");
|
||||
// return ;
|
||||
// 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)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "404 * PRIVMSG " + dest + " :Cannot send to channel\n");
|
||||
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;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:19:56 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/19 22:27:00 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:47:06 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -23,10 +23,16 @@
|
||||
void INVITE(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
std::vector<std::string> splitBuff;
|
||||
std::string msg;
|
||||
int invitedNbr;
|
||||
channelData chan;
|
||||
int chanNbr;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * INVITE :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
@ -68,6 +74,7 @@ void INVITE(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::cout << "invite him !!!!" << splitBuff[1] << " to " << splitBuff[2] << std::endl;
|
||||
//RPL_INVITING
|
||||
//RPL_AWAY
|
||||
//set authorization to join
|
||||
return ;
|
||||
chan.invitedList.push_back(&allFds.userData[invitedNbr]);//set authorization to join
|
||||
msg = "341 " + allFds.userData[userNbr].nickname + " " + chan.name + " " + splitBuff[1] + "\n";
|
||||
cmd_reply(allFds, allFds.userData[userNbr].fd, msg);
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:19:32 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/21 00:42:37 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:47:18 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -23,6 +23,11 @@ void KICK(std::string buffer, fdList &allFds, int userNbr)
|
||||
int userPos;
|
||||
channelData chan;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * KICK :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:19:52 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/19 22:07:14 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:47:37 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -19,6 +19,11 @@ void TOPIC(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitBuff;
|
||||
|
||||
std::cout << "topic im here1\n";//RPL_NOTOPIC //RPL_TOPIC
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * TOPIC :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/15 16:34:57 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/15 19:50:16 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:47:50 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -16,6 +16,12 @@ void KILL(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
int pos;
|
||||
std::vector<std::string> splitBuff;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * KILL :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:04:47 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/17 20:38:40 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:48:01 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -17,6 +17,11 @@ void OPER(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitBuff;
|
||||
std::string msg;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * OPER :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:11:03 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/15 20:05:27 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:48:11 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -22,6 +22,12 @@ void SQUIT(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::cout << "squit | server end\n";
|
||||
std::vector<std::string> splitBuff;
|
||||
split(buffer, ' ', splitBuff);
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * SQUIT :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "431 * SQUIT :Not enought argument\n");
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/16 17:09:38 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/17 21:13:21 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:48:22 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -19,6 +19,11 @@ void WALLOPS(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::string msg;
|
||||
|
||||
//std::cout << "privmsg bufer= --" << buffer << std::endl;
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * WALLOPS :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/16 18:14:15 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/22 20:04:19 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:48:33 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -41,6 +41,11 @@ void NAMES(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitBuff;
|
||||
int pos;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * NAMES :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() == 1 || splitBuff[1] == "0")
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/16 18:14:17 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/22 13:03:30 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 17:49:05 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -44,6 +44,12 @@ void WHO(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::vector<std::string> splitBuff;
|
||||
int pos;
|
||||
(void) userNbr;
|
||||
|
||||
if (!allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "451 * WHO :You have not registered\n");
|
||||
return ;
|
||||
}
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() == 1 || splitBuff[1] == "0")
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/06 21:46:41 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/22 20:03:09 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/23 20:29:25 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -78,7 +78,7 @@ int not_contain_other(std::string str, std::string toFind)
|
||||
return (1);
|
||||
}
|
||||
|
||||
int find_client_list(std::vector<clientData *> list, clientData *client)
|
||||
int find_client_list(std::vector<clientData *> &list, clientData *client)
|
||||
{
|
||||
std::vector<clientData*>::iterator start = list.begin();
|
||||
std::vector<clientData*>::iterator pastEnd = list.end();
|
||||
@ -90,4 +90,3 @@ int find_client_list(std::vector<clientData *> list, clientData *client)
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user