add nick and pass error add oper cmd not tested add squit
This commit is contained in:
parent
57d78f0857
commit
8e44a304c8
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/01 17:27:37 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/14 20:54:22 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 00:16:02 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
#include <cstdlib>
|
||||
#include <exception>
|
||||
|
||||
#include <ctime>
|
||||
#include <cstring> //std::string
|
||||
#include <cerrno> //errno
|
||||
#include <iostream> //std::cout | cerr
|
||||
@ -150,6 +151,7 @@ struct fdList //&allFds in code | /!\ only one on the server | REFERENCE ONLY
|
||||
|
||||
int alive;
|
||||
std::string password;
|
||||
std::string creation_date;
|
||||
int nbrUser;
|
||||
functionTab parsingTab;
|
||||
};
|
||||
|
||||
@ -6,50 +6,13 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/07 14:45:45 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/13 12:54:35 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 00:14:50 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../../includes/ft_irc.hpp"
|
||||
|
||||
void print_registered_msg(fdList &allFds, int userNbr)
|
||||
{
|
||||
(void)allFds;
|
||||
(void)userNbr;
|
||||
|
||||
std::string msg;
|
||||
msg = ":irc.local 001 " + allFds.userData[userNbr].nickname + " : Welcome to the Internet Relay Network " + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].hostName + "\n";
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 002 " + allFds.userData[userNbr].nickname + " : Your host is irc.local" + ", running version InspIRCd-3\n"; //+ allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].hostName;
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 003 " + allFds.userData[userNbr].nickname + " : This server was created " + "09:58:11 Feb 13 2023\n";//<date>;
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 004 " + allFds.userData[userNbr].nickname + "irc.local " + "InspIRCd-3 " + "iosw " + "biklmnopstv\n";
|
||||
//<servername> <version> <available user modes> <available channel modes
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
|
||||
|
||||
|
||||
// 001 RPL_WELCOME
|
||||
// "Welcome to the Internet Relay Network
|
||||
// <nick>!<user>@<host>"
|
||||
// 002 RPL_YOURHOST
|
||||
// "Your host is <servername>, running version <ver>"
|
||||
// 003 RPL_CREATED
|
||||
// "This server was created <date>"
|
||||
// 004 RPL_MYINFO
|
||||
// "<servername> <version> <available user modes>
|
||||
// <available channel modes>"
|
||||
|
||||
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "-------------------WELCOME TO MY PERSONNAL IRC SERVER!-------------------" );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your nickname is |" + allFds.userData[userNbr].nickname );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your password is |" + allFds.userData[userNbr].password );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your username is |" + allFds.userData[userNbr].userName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your realname is |" + allFds.userData[userNbr].realName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your hostname is |" + allFds.userData[userNbr].hostName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your servername is |" + allFds.userData[userNbr].serverName );
|
||||
}
|
||||
|
||||
// void delete_client(fdList &allFds)
|
||||
// {
|
||||
|
||||
@ -6,18 +6,54 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/12 23:30:11 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/14 02:19:19 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 00:15:32 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../../includes/ft_irc.hpp"
|
||||
|
||||
void print_registered_msg(fdList &allFds, int userNbr)
|
||||
{
|
||||
(void)allFds;
|
||||
(void)userNbr;
|
||||
|
||||
std::string msg;
|
||||
msg = ":irc.local 001 " + allFds.userData[userNbr].nickname + " : Welcome to the Internet Relay Network " + allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].hostName + "\n";
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 002 " + allFds.userData[userNbr].nickname + " : Your host is irc.local" + ", running version InspIRCd-3\n"; //+ allFds.userData[userNbr].nickname + "!" + allFds.userData[userNbr].userName + "@" + allFds.userData[userNbr].hostName;
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 003 " + allFds.userData[userNbr].nickname + " : This server was created " + allFds.creation_date + "\n";//<date>;
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
msg = ":irc.local 004 " + allFds.userData[userNbr].nickname + "irc.local " + "InspIRCd-3 " + "iosw " + "biklmnopstv\n";
|
||||
//<servername> <version> <available user modes> <available channel modes
|
||||
send(allFds.userData[userNbr].fd, msg.c_str(), msg.size(), 0);
|
||||
|
||||
|
||||
|
||||
// 001 RPL_WELCOME
|
||||
// "Welcome to the Internet Relay Network
|
||||
// <nick>!<user>@<host>"
|
||||
// 002 RPL_YOURHOST
|
||||
// "Your host is <servername>, running version <ver>"
|
||||
// 003 RPL_CREATED
|
||||
// "This server was created <date>"
|
||||
// 004 RPL_MYINFO
|
||||
// "<servername> <version> <available user modes>
|
||||
// <available channel modes>"
|
||||
|
||||
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "-------------------WELCOME TO MY PERSONNAL IRC SERVER!-------------------" );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your nickname is |" + allFds.userData[userNbr].nickname );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your password is |" + allFds.userData[userNbr].password );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your username is |" + allFds.userData[userNbr].userName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your realname is |" + allFds.userData[userNbr].realName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your hostname is |" + allFds.userData[userNbr].hostName );
|
||||
// ft_putstr_fd(allFds.userData[userNbr].fd, "your servername is |" + allFds.userData[userNbr].serverName );
|
||||
}
|
||||
|
||||
void connect_client(fdList &allFds, int userNbr)
|
||||
{
|
||||
// allFds.userData[userNbr].fd
|
||||
std::cout << "connect client start\n";
|
||||
// if (-1 == connect(allFds.userData[userNbr].fd, (struct sockaddr *)&allFds.userData[userNbr].addr, sizeof(allFds.userData[userNbr].addr)))
|
||||
// ft_error("connect() error");
|
||||
|
||||
if (allFds.userData[userNbr].password.empty() || allFds.userData[userNbr].password != allFds.password)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/06 14:28:38 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/14 01:25:31 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 15:41:43 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -23,7 +23,16 @@ void NICK(std::string buffer, fdList &allFds, int userNbr)
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "431 * NICK :No nickname given\n");
|
||||
//write(allFds.userData[user].fd, "ERR_NEEDMOREPARAMS", 18);
|
||||
return ;
|
||||
}
|
||||
if (!not_contain_other(splitBuff[1], "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`|^_-{}[]\\"))
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "432 * " + splitBuff[1] + " :Erroneous nickname\n");
|
||||
return ;
|
||||
}
|
||||
if (find_user(allFds, splitBuff[1]) != -1)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "433 * " + splitBuff[1] + " :Nickname is already in use\n");
|
||||
return ;
|
||||
}
|
||||
//if nickname ok then (another user has it? )
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/06 14:40:42 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/14 18:46:53 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 15:42:16 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -19,16 +19,16 @@ void PASS(std::string buffer, fdList &allFds, int userNbr)
|
||||
std::string password;
|
||||
|
||||
|
||||
if (allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "462 * PASS :You may not reregister\n");
|
||||
return ;
|
||||
}
|
||||
if (buffer.size() < 6)// ---PASS ---
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "461 * PASS :Not enough parameters\n");
|
||||
return ;
|
||||
}
|
||||
if (allFds.userData[userNbr].registered)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "462 * PASS :You may not reregister\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
// 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/14 20:58:20 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 15:18:38 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -74,8 +74,8 @@ void send_msg(fdList &allFds, std::string msg, std::string dest, int userNbr)
|
||||
pos = find_user(allFds, dest); //return direct user fd
|
||||
if (pos != -1)
|
||||
{
|
||||
send(allFds.userData[pos].fd, fullMsg.c_str(), fullMsg.size(), 0);
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "401 * PRIVMSG " + dest + " :No such nick/channel\n");
|
||||
return ;
|
||||
}
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "401 * PRIVMSG " + dest + " :No such nick/channel\n");
|
||||
send(allFds.userData[pos].fd, fullMsg.c_str(), fullMsg.size(), 0);
|
||||
}
|
||||
@ -3,10 +3,10 @@
|
||||
/* ::: :::::::: */
|
||||
/* mode.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:19:30 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/13 00:23:55 by sadjigui ### ########.fr */
|
||||
/* Updated: 2023/02/14 23:28:49 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
int search_and_erase(std::string &str, std::string toFind)
|
||||
{
|
||||
// std::vector<string>::iterator i = str.begin;
|
||||
int i = 0;
|
||||
int i = 1; //1 instead of 0 to skip +/-
|
||||
while (str[i] != 0)
|
||||
{
|
||||
if (toFind.find(str[i]) == std::string::npos)
|
||||
@ -23,73 +23,130 @@ int search_and_erase(std::string &str, std::string toFind)
|
||||
else
|
||||
i++;
|
||||
}
|
||||
std::cout << "splitbuff[2]after? = " << str << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void verify_option(fdList &allFds, std::string str, int i)
|
||||
|
||||
|
||||
void do_chan_option(fdList &allFds, int userNbr, std::string opt /*, channel (string or direct reference or pointer but no copy)*/)
|
||||
{
|
||||
(void)allFds;
|
||||
(void)i;
|
||||
(void)str;
|
||||
std::string find = "opsitnmlbvk";
|
||||
std::cout << "1 str = "<< str << std::endl;
|
||||
search_and_erase(str, find);
|
||||
std::cout << "2 str = "<< str << std::endl;
|
||||
use_option(allFds, str, )
|
||||
(void)userNbr;
|
||||
for (int i = 0; opt[i]; i++)
|
||||
{
|
||||
//call option
|
||||
//switch ? if forest? map container ? 2 tab (name and function pointer) ?
|
||||
// opt_i(int signe (= ou -), channel, user);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// int look_for_channel(fdList &allFds, std::string str)
|
||||
// {
|
||||
// if (allFds.chanelList[chanNbr.mode.k])
|
||||
// {
|
||||
// if (splitBuff.size() < 3 || allFdschannelList[chanNbr].password != splitBuff[2])
|
||||
// {
|
||||
// errorStr ="475* JOIN" + allFds.channelList[chanNbr].name+" :Cannot join channel(+k)\n";
|
||||
// cmd_error(allFds, allFds.userData[userNbr].fd, errorStr);
|
||||
// }
|
||||
// return 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
void do_user_option(fdList &allFds, int userNbr, std::string opt)
|
||||
{
|
||||
(void)allFds;
|
||||
(void)userNbr;
|
||||
for (int i = 0; opt[i]; i++)
|
||||
{
|
||||
//call option
|
||||
//switch ? if forest? map container ? 2 tab (name and function pointer) ?
|
||||
// opt_i(int signe (= ou -), user);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void MODE(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
(void)buffer;
|
||||
(void)allFds;
|
||||
(void)userNbr;
|
||||
int i = 1;
|
||||
std::vector<std::string> splitBuff;
|
||||
std::cout << "---------------->" << std::endl;
|
||||
split(buffer, ' ', splitBuff);
|
||||
std::vector<std::string>::iterator ptr = splitBuff.begin();
|
||||
std::cout << "-------->" << splitBuff.size() << std::endl;
|
||||
if (splitBuff.size() != 6)
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
||||
return ;
|
||||
}
|
||||
ptr++;
|
||||
std::string str = *ptr;
|
||||
if (str[0] == '#' || str[0] == '&')
|
||||
//check if user is op? else error
|
||||
//check if (splitBuff[2][0] == +/-) //splitbuff[2] always equal to {[+|-]|o|p|s|i|t|n|b|v}
|
||||
//else ??? erreur j'imagine mais j'ai pas trouvé
|
||||
if (splitBuff[1][0] == '#' || splitBuff[1][0] == '&') //splitbuff[1] always equal to <channel> or <nickname>
|
||||
{
|
||||
std::string cmd = str.substr(1, str.npos);
|
||||
std::cout << "test = "<< str << std::endl;
|
||||
if (find_channel(allFds, cmd) < 0)
|
||||
std::cout << "Channel " << cmd <<" Not found" << std::endl;
|
||||
while (ptr != splitBuff.end())
|
||||
if (find_channel(allFds, splitBuff[1]) == -1) //if true chan doesn't exist
|
||||
{
|
||||
std::string str = *ptr;
|
||||
if (str[0] == '#' || str[0] == '&')
|
||||
{
|
||||
// if (find_channel(allFds, str+1))
|
||||
std::cout << "test = "<< str << std::endl;
|
||||
|
||||
}
|
||||
verify_option(allFds, str, i);
|
||||
ptr++;
|
||||
i++;
|
||||
}
|
||||
std::cout << "chan doesn't exist" << std::endl;
|
||||
// 403 ERR_NOSUCHCHANNEL
|
||||
// "<nom de canal> :No such channel"
|
||||
return ;
|
||||
}//else
|
||||
//verify_option(allFds, str, i); //needed?
|
||||
|
||||
std::cout << "splitbuff[2] = " << splitBuff[2] << std::endl;
|
||||
|
||||
search_and_erase(splitBuff[2], "opsitnmlbvk");
|
||||
std::cout << "splitbuff[2] after = " << splitBuff[2] << std::endl;
|
||||
//do_option one by one here (do_chan_opt)?
|
||||
return ;
|
||||
}
|
||||
return ;
|
||||
else if ((find_user(allFds, splitBuff[1]) == -1))
|
||||
{
|
||||
std::cout << "user doesn't exist" << std::endl;
|
||||
// 401 ERR_NOSUCHNICK
|
||||
// "<pseudonyme> :No such nick/channel"
|
||||
return ;
|
||||
}
|
||||
search_and_erase(splitBuff[2], "iwso");
|
||||
//do_option one by one here (do_user_opt)?
|
||||
|
||||
}
|
||||
|
||||
// void verify_option(fdList &allFds, std::string str, int i)
|
||||
// {
|
||||
// (void)allFds;
|
||||
// (void)i;
|
||||
// (void)str;
|
||||
// std::string find = "opsitnmlbvk";
|
||||
// std::cout << "1 str = "<< str << std::endl;
|
||||
// search_and_erase(str, find);
|
||||
// std::cout << "2 str = "<< str << std::endl;
|
||||
// //use_option(allFds, str, )
|
||||
// }
|
||||
|
||||
// void MODE(std::string buffer, fdList &allFds, int userNbr)
|
||||
// {
|
||||
// (void)buffer;
|
||||
// (void)allFds;
|
||||
// (void)userNbr;
|
||||
// int i = 1;
|
||||
// std::vector<std::string> splitBuff;
|
||||
// std::cout << "---------------->" << std::endl;
|
||||
// split(buffer, ' ', splitBuff);
|
||||
// std::vector<std::string>::iterator ptr = splitBuff.begin();
|
||||
// std::cout << "-------->" << splitBuff.size() << std::endl;
|
||||
// if (splitBuff.size() != 6)
|
||||
// {
|
||||
// std::cout << "ERR_NEEDMOREPARAMS" << std::endl;
|
||||
// return ;
|
||||
// }
|
||||
// ptr++;
|
||||
// std::string str = *ptr; /*std::string str = splitBuff[1]; ⚠️ */ /*STR sert a rien |*ptr = str|*/
|
||||
// if (str[0] == '#' || str[0] == '&')
|
||||
// {
|
||||
// std::string cmd = str.substr(1, str.npos); //std::string cmd = (*ptr).substr(1, str.npos); //Not needed? need full channel's name with # or &
|
||||
// std::cout << "test = "<< str << std::endl; //std::cout << "test = "<< *ptr << std::endl;
|
||||
// if (find_channel(allFds, cmd) < 0) //find_channel(allFds, cmd)
|
||||
// std::cout << "Channel " << cmd <<" Not found" << std::endl;
|
||||
// while (ptr != splitBuff.end())
|
||||
// {
|
||||
// std::string str = *ptr;
|
||||
// if (str[0] == '#' || str[0] == '&')
|
||||
// {
|
||||
// // if (find_channel(allFds, str+1))
|
||||
// std::cout << "test = "<< str << std::endl;
|
||||
|
||||
// }
|
||||
// verify_option(allFds, str, i);
|
||||
// ptr++;
|
||||
// i++;
|
||||
// }
|
||||
// }
|
||||
// return ;
|
||||
// }
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:04:47 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/11 20:04:53 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 15:23:13 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,11 +14,28 @@
|
||||
|
||||
void OPER(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
int pos;
|
||||
std::vector<std::string> splitBuff;
|
||||
std::string msg;
|
||||
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
if (splitBuff.size() < 3)
|
||||
{
|
||||
/*change error*/cmd_error(allFds, allFds.userData[userNbr].fd, "431 * OPER :No nickname given\n");
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "461 * OPER :Not enough parameters\n");
|
||||
return ;
|
||||
}
|
||||
if (splitBuff[2] != allFds.password)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "464 * :Password incorrect\n");
|
||||
return ;
|
||||
}
|
||||
pos = find_user(allFds, splitBuff[1]); //return direct user fd
|
||||
if (pos != -1)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "401 * SQUIT " + splitBuff[1] + " :No such nick/channel\n");
|
||||
return ;
|
||||
}
|
||||
allFds.userData[pos].op = 1;
|
||||
msg = "381 * " + allFds.userData[pos].nickname + " :You are now an IRC operator\n";
|
||||
send(allFds.userData[pos].fd, msg.c_str(), msg.size(), 0);
|
||||
}
|
||||
@ -6,24 +6,44 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:11:03 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/12 14:23:39 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 15:10:43 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../../includes/ft_irc.hpp"
|
||||
|
||||
//ERR_NOPRIVILEGES ERR_NOSUCHSERVER
|
||||
|
||||
void SQUIT(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
(void)buffer;
|
||||
(void)allFds;
|
||||
(void)userNbr;
|
||||
|
||||
if (allFds.userData[userNbr].op)
|
||||
allFds.alive = 0;
|
||||
else
|
||||
|
||||
std::vector<std::string> splitBuff;
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() < 2)
|
||||
{
|
||||
std::cout << "Not op but okay i'll do it\n";
|
||||
allFds.alive = 0;
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "431 * SQUIT :Not enought argument\n");
|
||||
return ;
|
||||
}
|
||||
if (!allFds.userData[userNbr].op)
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "481 * :Permission Denied- You're not an IRC operator\n");
|
||||
return ;
|
||||
}
|
||||
if (splitBuff[2] != "irc.local")
|
||||
{
|
||||
cmd_error(allFds, allFds.userData[userNbr].fd, "402 * " + splitBuff[2] + " :No such server\n");
|
||||
return ;
|
||||
}
|
||||
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 ;
|
||||
}
|
||||
@ -6,20 +6,49 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/02/11 19:10:26 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/12 14:09:33 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 13:27:15 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../../includes/ft_irc.hpp"
|
||||
|
||||
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 + "\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])
|
||||
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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void QUIT(std::string buffer, fdList &allFds, int userNbr)
|
||||
{
|
||||
std::vector<std::string> splitBuff;
|
||||
split(buffer, ' ', splitBuff);
|
||||
if (splitBuff.size() == 2)
|
||||
{
|
||||
send_quit_msg(allFds, userNbr, splitBuff[2]);
|
||||
//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);
|
||||
return ;
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/06 21:44:20 by apommier #+# #+# */
|
||||
/* Updated: 2023/02/14 01:51:55 by apommier ### ########.fr */
|
||||
/* Updated: 2023/02/15 00:14:07 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -60,7 +60,9 @@ void initialize(char **av)
|
||||
// {
|
||||
// nbrRead = read()
|
||||
// }
|
||||
|
||||
time_t timer;
|
||||
time(&timer);
|
||||
allFds.creation_date = ctime(&timer);
|
||||
allFds.epollFd = epoll_start();
|
||||
//allFds.userData
|
||||
epoll_add(allFds.epollFd, allFds.serverFd);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user