ajout des dernier message erreur & des reponses & ban plusieurs utilisateur en meme temps
This commit is contained in:
parent
b13d229824
commit
b66443e7e2
@ -6,7 +6,7 @@
|
|||||||
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
|
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2023/02/11 19:19:30 by apommier #+# #+# */
|
/* Created: 2023/02/11 19:19:30 by apommier #+# #+# */
|
||||||
/* Updated: 2023/03/10 21:50:12 by sadjigui ### ########.fr */
|
/* Updated: 2023/03/11 20:39:22 by sadjigui ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
void chan_opt_o(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr, bool sign)
|
void chan_opt_o(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr, bool sign)
|
||||||
{
|
{
|
||||||
(void)allFds;
|
|
||||||
(void)userNbr;
|
|
||||||
(void)chanNbr;
|
(void)chanNbr;
|
||||||
|
int pos;
|
||||||
|
|
||||||
if (opt.size() != 4)
|
if (opt.size() < 4)
|
||||||
{
|
{
|
||||||
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "461 *" + opt[0] + " :Not enough parameters\n");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if ((find_user(allFds, opt[3]) == -1))
|
if ((find_user(allFds, opt[3]) == -1))
|
||||||
@ -31,19 +31,32 @@ void chan_opt_o(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//A voir
|
|
||||||
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;
|
//A voir
|
||||||
|
if ((pos = find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr])) > -1 && sign == false)
|
||||||
|
allFds.channelList[chanNbr].opList.erase(allFds.channelList[chanNbr].opList.begin() + pos);
|
||||||
|
else if (pos < 0)
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
|
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, std::vector<std::string> opt, int chanNbr, bool sign)
|
void chan_opt_k(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr, bool sign)
|
||||||
{
|
{
|
||||||
if (opt.size() != 4)
|
if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) < 0)
|
||||||
|
{
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
if (opt.size() < 4)
|
||||||
{
|
{
|
||||||
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
||||||
std::cout << "how to use it :/MODE <channel >+k <password>" << std::endl;
|
std::cout << "how to use it :/MODE <channel >+k <password>" << std::endl;
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "461 *" + opt[0] + " :Not enough parameters\n");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if (sign == true)
|
if (sign == true)
|
||||||
@ -56,10 +69,16 @@ void chan_opt_v(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
(void)chanNbr;
|
(void)chanNbr;
|
||||||
(void)sign;
|
(void)sign;
|
||||||
|
|
||||||
|
if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) < 0)
|
||||||
|
{
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
|
return ;
|
||||||
|
}
|
||||||
if (opt.size() < 4)
|
if (opt.size() < 4)
|
||||||
{
|
{
|
||||||
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
||||||
std::cout << "how to use it :/MODE <channel> +/-v <user>" << std::endl;
|
std::cout << "how to use it :/MODE <channel> +/-v <user>" << std::endl;
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "461 *" + opt[0] + " :Not enough parameters\n");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,12 +99,9 @@ void chan_opt_v(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
void chan_opt_b(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr, bool sign)
|
void chan_opt_b(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr, bool sign)
|
||||||
{
|
{
|
||||||
std::vector<clientData *> ban(allFds.channelList[chanNbr].banList);
|
std::vector<clientData *> ban(allFds.channelList[chanNbr].banList);
|
||||||
(void)userNbr;
|
|
||||||
(void)opt;
|
|
||||||
(void)chanNbr;
|
|
||||||
(void)sign;
|
|
||||||
(void)ban;
|
|
||||||
int pos;
|
int pos;
|
||||||
|
int target_in_client;
|
||||||
|
int target_in_ban;
|
||||||
|
|
||||||
if (opt.size() == 3 && sign == true)
|
if (opt.size() == 3 && sign == true)
|
||||||
{
|
{
|
||||||
@ -94,23 +110,36 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
std::cout << "Nobody was banned on this channel" << std::endl;
|
std::cout << "Nobody was banned on this channel" << std::endl;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
for (long unsigned int i = 0; i < ban.size(); i++)
|
// for (long unsigned int i = 0; i < ban.size(); i++)
|
||||||
{
|
// {
|
||||||
std::cout << ban[i]->nickname << std::endl;
|
// std::cout << ban[i]->nickname << std::endl;
|
||||||
}
|
// }
|
||||||
ban_reply(allFds.channelList[chanNbr], allFds.userData[userNbr]);
|
ban_reply(allFds.channelList[chanNbr], allFds.userData[userNbr]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt.size() >= 4)
|
if (opt.size() >= 4)
|
||||||
{
|
{
|
||||||
int target_in_client = find_user(allFds, opt[3]);
|
if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[userNbr]) < 0)
|
||||||
|
{
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 3; i < opt.size(); i++)
|
||||||
|
{
|
||||||
|
target_in_client = find_user(allFds, opt[i]);
|
||||||
if (target_in_client == -1)
|
if (target_in_client == -1)
|
||||||
{
|
{
|
||||||
std::cout << "No user found" << std::endl;
|
std::cout << "No user found" << std::endl;
|
||||||
return ;
|
cmd_error(allFds, allFds.userData[userNbr].fd, "401 *" + opt[i] + " :No such nick/channel\n");
|
||||||
|
// return ;
|
||||||
}
|
}
|
||||||
int target_in_ban = find_client_list(allFds.channelList[chanNbr].banList, &allFds.userData[target_in_client]);
|
|
||||||
|
target_in_ban = find_client_list(allFds.channelList[chanNbr].banList, &allFds.userData[target_in_client]);
|
||||||
if (sign == true && target_in_ban == -1)
|
if (sign == true && target_in_ban == -1)
|
||||||
|
{
|
||||||
|
if (find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[target_in_client]))
|
||||||
{
|
{
|
||||||
allFds.channelList[chanNbr].banList.push_back(&allFds.userData[target_in_client]);
|
allFds.channelList[chanNbr].banList.push_back(&allFds.userData[target_in_client]);
|
||||||
std::cout << "call kick\n";
|
std::cout << "call kick\n";
|
||||||
@ -120,6 +149,9 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
if ((pos = find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[target_in_client])) != -1)
|
if ((pos = find_client_list(allFds.channelList[chanNbr].opList, &allFds.userData[target_in_client])) != -1)
|
||||||
allFds.channelList[chanNbr].opList.erase(allFds.channelList[chanNbr].opList.begin() + pos);
|
allFds.channelList[chanNbr].opList.erase(allFds.channelList[chanNbr].opList.begin() + pos);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
|
}
|
||||||
if (sign == false && target_in_ban != -1)
|
if (sign == false && target_in_ban != -1)
|
||||||
{
|
{
|
||||||
std::cout <<"target in bam == "<< allFds.channelList[chanNbr].banList[target_in_ban]->nickname << std::endl;
|
std::cout <<"target in bam == "<< allFds.channelList[chanNbr].banList[target_in_ban]->nickname << std::endl;
|
||||||
@ -127,6 +159,8 @@ void chan_opt_b(fdList &allFds, int userNbr, std::vector<std::string> opt, int c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
void do_chan_opt(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr /*, channel (string or direct reference or pointer but no copy)*/)
|
void do_chan_opt(fdList &allFds, int userNbr, std::vector<std::string> opt, int chanNbr /*, channel (string or direct reference or pointer but no copy)*/)
|
||||||
{
|
{
|
||||||
@ -136,6 +170,7 @@ void do_chan_opt(fdList &allFds, int userNbr, std::vector<std::string> opt, int
|
|||||||
|
|
||||||
// if (allFds.userData[userNbr].mode.o == false)
|
// if (allFds.userData[userNbr].mode.o == false)
|
||||||
// {
|
// {
|
||||||
|
// cmd_error(allFds, allFds.userData[userNbr].fd, "482 *" + opt[1] + " :You're not channel operator\n");
|
||||||
// return ;
|
// return ;
|
||||||
// }
|
// }
|
||||||
if (opt[2][0] == '-')
|
if (opt[2][0] == '-')
|
||||||
@ -166,7 +201,7 @@ void do_chan_opt(fdList &allFds, int userNbr, std::vector<std::string> opt, int
|
|||||||
break ;
|
break ;
|
||||||
case 'v': chan_opt_v(allFds, userNbr, opt, chanNbr, sign);
|
case 'v': chan_opt_v(allFds, userNbr, opt, chanNbr, sign);
|
||||||
break ;
|
break ;
|
||||||
case 'k': chan_opt_k(allFds, opt, chanNbr, sign);
|
case 'k': chan_opt_k(allFds, userNbr, opt, chanNbr, sign);
|
||||||
break ;
|
break ;
|
||||||
default : std::cout << "Not launching option" << std::endl;
|
default : std::cout << "Not launching option" << std::endl;
|
||||||
break ;
|
break ;
|
||||||
@ -189,7 +224,7 @@ void do_user_opt(fdList &allFds, int userNbr, std::vector<std::string> opt, int
|
|||||||
if (allFds.userData[userNbr].nickname != opt[1])
|
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";
|
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 *" + opt[1] + " :Cant change mode for other users\n");
|
cmd_error(allFds, allFds.userData[userNbr].fd, "502 *" + opt[1] + " :Cant change mode for other users\r\n");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if (opt[2][0] == '-')
|
if (opt[2][0] == '-')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user