add some parse for the user and nick input ...

This commit is contained in:
mochaoui
2024-04-24 13:32:44 -05:00
parent b7f364a862
commit 33717c386a

View File

@@ -553,7 +553,7 @@ void Server::handleClientData(int fd)
std::cout << "Received data from client " << fd << ": " << command << std::endl; std::cout << "Received data from client " << fd << ": " << command << std::endl;
//******************* FROM THERE IM STARTING TOP GGG ************ . //******************* FROM THERE IM STARTING TOP GGG ************ .
if (startsWith(command, "pass")) if (startsWith(command, "pass") || startsWith(command, "PASS"))
{ {
std::string cmd, password; std::string cmd, password;
std::istringstream iss(command); std::istringstream iss(command);
@@ -571,6 +571,7 @@ void Server::handleClientData(int fd)
a = 1; a = 1;
} }
} }
else if (startsWith(command, "PING")) else if (startsWith(command, "PING"))
{ {
std::istringstream iss(command); std::istringstream iss(command);
@@ -580,12 +581,18 @@ void Server::handleClientData(int fd)
std::cout << "ping was sent" << std::endl; std::cout << "ping was sent" << std::endl;
} }
else if (startsWith(command, "nick") && a == 1) else if ((startsWith(command, "nick") || startsWith(command, "NICK")) && a == 1)
{ {
std::string cmd, nick; std::string cmd, nick;
std::istringstream iss(command); std::istringstream iss(command);
iss >> cmd >> nick; iss >> cmd >> nick;
nick = trim(nick); nick = trim(nick);
if (iss.fail())
{
std::string errorMessage = "Error: Command requires 1 parameters\n";
send(fd, errorMessage.c_str(), errorMessage.length(), 0);
return;
}
if (dontputthesamenick(nick) == true) if (dontputthesamenick(nick) == true)
{ {
std::string confirmation = "Please Use a Different Nickname : \n"; std::string confirmation = "Please Use a Different Nickname : \n";
@@ -611,7 +618,7 @@ void Server::handleClientData(int fd)
} }
} }
else if (startsWith(command, "user") && a == 2) else if ((startsWith(command, "user") || startsWith(command, "USER")) && a == 2)
{ {
std::istringstream iss(command); std::istringstream iss(command);
@@ -622,6 +629,12 @@ void Server::handleClientData(int fd)
dontworry1 = trim(dontworry1); dontworry1 = trim(dontworry1);
realname = trim(realname); realname = trim(realname);
if (iss.fail())
{
std::string errorMessage = "Error: Command requires at least four parameters\n";
send(fd, errorMessage.c_str(), errorMessage.length(), 0);
return;
}
if (dontputthesameusername(username) == true) if (dontputthesameusername(username) == true)
{ {
std::string confirmation = "Please Use a Different Nickname : \n"; std::string confirmation = "Please Use a Different Nickname : \n";
@@ -665,7 +678,6 @@ void Server::handleClientData(int fd)
} }
} }
std::string channelName, pass ; std::string channelName, pass ;
// std::string channelName = command.substr(6);
std::istringstream iss(command.substr(5)); std::istringstream iss(command.substr(5));
iss >> channelName ; iss >> channelName ;
if (channelName[0] != '#') if (channelName[0] != '#')
@@ -682,14 +694,13 @@ void Server::handleClientData(int fd)
// Check if the channel already exists // Check if the channel already exists
std::map<std::string, Channel>::iterator it = channels.find(channelName); std::map<std::string, Channel>::iterator it = channels.find(channelName);
if (it != channels.end()) { if (it != channels.end())
{
// Channel already exists // Channel already exists
if ((isinveted == 1 && channels[channelName].isInvited(nick)) || channels[channelName].isOperator(fd)) { if ((isinveted == 1 && channels[channelName].isInvited(nick)) || channels[channelName].isOperator(fd))
{
// User is invited, create the channel // User is invited, create the channel
std::cout << "ha huwa dkhaal l ******** lwla ***********" << std::endl;
int check = channels[channelName].getlimitechannel(); int check = channels[channelName].getlimitechannel();
std::cout << "im now in the main function CCHEEEECK GETED FROM THE CLASSE : " << check << std::endl;
std::cout << "the LIMITATION INCRIMENTED : " << limitechannelforincriment << std::endl;
if (limitechannelforincriment < check || limitechannel == 0) if (limitechannelforincriment < check || limitechannel == 0)
createChannel(channelName, nick, fd); createChannel(channelName, nick, fd);
else else
@@ -698,16 +709,11 @@ void Server::handleClientData(int fd)
send(fd, errorMessage.c_str(), errorMessage.length(), 0); send(fd, errorMessage.c_str(), errorMessage.length(), 0);
} }
} }
else if (isinveted == 0){ else if (isinveted == 0)
std::cout << "ha huwa dkhaal l ******** ltania ***********" << std::endl; {
std::cout << "this is the geted pass " << channels[channelName].getPass() << std::endl;
std::cout << "IM PASS " << pass << std::endl;
std::cout << "PASS MODE IS ON" << std::endl;
if (itHasPass == 1 && channels[channelName].getPass() == pass) if (itHasPass == 1 && channels[channelName].getPass() == pass)
{ {
int check = channels[channelName].getlimitechannel(); int check = channels[channelName].getlimitechannel();
std::cout << "im now in the main function CCHEEEECK GETED FROM THE CLASSE : " << check << std::endl;
std::cout << "the LIMITATION INCRIMENTED : " << limitechannelforincriment << std::endl;
if (limitechannelforincriment < check || limitechannel == 0) if (limitechannelforincriment < check || limitechannel == 0)
createChannel(channelName, nick, fd); createChannel(channelName, nick, fd);
else else
@@ -719,8 +725,6 @@ void Server::handleClientData(int fd)
else if (itHasPass == 0) else if (itHasPass == 0)
{ {
int check = channels[channelName].getlimitechannel(); int check = channels[channelName].getlimitechannel();
std::cout << "im now in the main function CCHEEEECK GETED FROM THE CLASSE : " << check << std::endl;
std::cout << "the LIMITATION INCRIMENTED : " << limitechannelforincriment << std::endl;
if (limitechannelforincriment < check || limitechannel == 0) if (limitechannelforincriment < check || limitechannel == 0)
createChannel(channelName, nick, fd); createChannel(channelName, nick, fd);
else else
@@ -736,7 +740,8 @@ void Server::handleClientData(int fd)
} }
} }
else { else
{
// User is not invited, send error message // User is not invited, send error message
std::string errorMessage = ":server.host NOTICE " + nick + " :Error: you are not invited\r\n"; std::string errorMessage = ":server.host NOTICE " + nick + " :Error: you are not invited\r\n";
send(fd, errorMessage.c_str(), errorMessage.length(), 0); send(fd, errorMessage.c_str(), errorMessage.length(), 0);
@@ -744,12 +749,7 @@ void Server::handleClientData(int fd)
} }
else else
{
std::cout << "ha huwa dkhal l ********* talta *********** " << std::endl;
// Channel does not exist, create the channel
createChannel(channelName, nick, fd); createChannel(channelName, nick, fd);
}
} }
else if (startsWith(command, "PRIVMSG ") || startsWith(command, "privmsg ")) else if (startsWith(command, "PRIVMSG ") || startsWith(command, "privmsg "))
@@ -781,8 +781,6 @@ void Server::handleClientData(int fd)
{ {
handlePrivateMessage(fd, recipient, message); handlePrivateMessage(fd, recipient, message);
} }
std::cout << "Recipient: " << recipient << std::endl;
std::cout << "Message: " << message << std::endl;
} }
@@ -859,7 +857,6 @@ void Server::handleClientData(int fd)
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)) if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{ {
channels[channelName].addClientinveted(nickname, fd); channels[channelName].addClientinveted(nickname, fd);
std::cout << "this client is invited : " << nickname << std::endl;
handleInvitation(fd, nickname, channelName); handleInvitation(fd, nickname, channelName);
} }
else else
@@ -910,7 +907,8 @@ void Server::handleClientData(int fd)
std::cout << "this is the mode : " << mode << std::endl; std::cout << "this is the mode : " << mode << std::endl;
if (mode == "+o") if (mode == "+o")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)) { if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
channels[channelName].addOperator(nick, channels[channelName].getUserFd(nick)); channels[channelName].addOperator(nick, channels[channelName].getUserFd(nick));
abaaba = channels[channelName].getUserFd(nick); abaaba = channels[channelName].getUserFd(nick);
@@ -927,7 +925,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "-o") else if (mode == "-o")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)) { if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
channels[channelName].removeOperator(nick); channels[channelName].removeOperator(nick);
std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + " and set " + nick + " as operator\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + " and set " + nick + " as operator\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
@@ -941,7 +940,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "-t") else if (mode == "-t")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)) { if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -955,7 +955,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "+t") else if (mode == "+t")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)) { if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " " + mode + " by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -970,7 +971,8 @@ void Server::handleClientData(int fd)
else if (mode == "+i") else if (mode == "+i")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " +i by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " +i by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -986,7 +988,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "-i") else if (mode == "-i")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " -i by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " -i by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -1001,7 +1004,8 @@ void Server::handleClientData(int fd)
else if (mode == "-k") else if (mode == "-k")
{ {
std::string ChanPass = (mode.substr(2)); std::string ChanPass = (mode.substr(2));
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " -k by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " -k by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -1018,7 +1022,8 @@ void Server::handleClientData(int fd)
nick = trim(nick); nick = trim(nick);
std::cout << "HI IM TRIMMED PASS " << nick << std::endl; std::cout << "HI IM TRIMMED PASS " << nick << std::endl;
channels[channelName].setPass(nick); channels[channelName].setPass(nick);
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " +k by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " +k by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);
@@ -1032,7 +1037,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "+l") else if (mode == "+l")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
int limit = stringToInt(nick); int limit = stringToInt(nick);
std::cout << "this is the limite when he limited piiiiiwwww : " << limit << std::endl; std::cout << "this is the limite when he limited piiiiiwwww : " << limit << std::endl;
channels[channelName].setlimitchannel(limit); channels[channelName].setlimitchannel(limit);
@@ -1049,7 +1055,8 @@ void Server::handleClientData(int fd)
} }
else if (mode == "-l") else if (mode == "-l")
{ {
if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd)){ if (channels.find(channelName) != channels.end() && channels[channelName].isOperator(fd))
{
std::string modeChangeMessage = ":server.host MODE #" + channelName + " +l by " + channels[channelName].getNickname(fd) + "\n"; std::string modeChangeMessage = ":server.host MODE #" + channelName + " +l by " + channels[channelName].getNickname(fd) + "\n";
send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0); send(fd, modeChangeMessage.c_str(), modeChangeMessage.size(), 0);
smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick); smallbroadcastMOOD(channels[channelName].getNickname(fd), channelName, mode, nick);