Skip to content

Commit 066c79a

Browse files
Serena Gandum--DiagneSerena Gandum--Diagne
authored andcommitted
done
1 parent 2258bc5 commit 066c79a

File tree

6 files changed

+32
-77
lines changed

6 files changed

+32
-77
lines changed

headers/Client.hpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ class Client
3636
struct sockaddr_in addr_client;
3737
std::vector<Channel*> operator_channels;
3838
std::vector<std::string> invitations_channels;
39-
// std::time_t last_pong;
40-
// std::time_t last_ping;
4139

4240
public:
4341
Client(struct pollfd _fdclient, struct sockaddr_in _addrclient);
@@ -71,10 +69,7 @@ class Client
7169
bool check_if_invited(std::string _channel_);
7270
std::string& get_buff();
7371
void set_buff(std::string _buff);
74-
// void setLastPong(std::time_t _lastpong);
75-
// std::time_t getLastPong();
76-
// void setLastPing(std::time_t _lastping);
77-
// std::time_t getLastPing();
72+
void deleteOperatorChannel(std::string _channel);
7873
};
7974

8075
#endif

headers/IrcServer.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class IrcServer
9393
bool invalidChannelCharacter(std::string _nickname);
9494
void deleteUserInChannel(std::string _nickname);
9595
int splitJoinCommand(int _pos, std::string _msg, std::vector<std::string>& _chan, std::vector<std::string>& _pswd);
96+
void clearOperator(std::string _channel);
9697
};
9798

9899
bool isInt(const char* str_nb);

srcs/Client.cpp

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -168,22 +168,16 @@ void Client::set_realname(std::string _realname)
168168
this->realname = _realname;
169169
}
170170

171-
// void Client::setLastPong(std::time_t _lastpong)
172-
// {
173-
// last_pong = _lastpong;
174-
// }
175-
176-
// std::time_t Client::getLastPong(void)
177-
// {
178-
// return (last_pong);
179-
// }
180-
181-
// void Client::setLastPing(std::time_t _lastping)
182-
// {
183-
// last_ping = _lastping;
184-
// }
185-
186-
// std::time_t Client::getLastPing(void)
187-
// {
188-
// return (last_ping);
189-
// }
171+
void Client::deleteOperatorChannel(std::string _channel)
172+
{
173+
std::vector<Channel*>::iterator it;
174+
175+
for (it = operator_channels.begin() ; it != operator_channels.end() ; it++)
176+
{
177+
if ((*it)->getname() == _channel)
178+
{
179+
operator_channels.erase(it);
180+
return ;
181+
}
182+
}
183+
}

srcs/Join.cpp

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,57 +6,6 @@
66
#include "sstream"
77
#include "fcntl.h"
88

9-
// void IrcServer::join_channel(std::string _command, int _pos)
10-
// {
11-
// std::istringstream split_command(_command);
12-
// std::vector<std::string> command;
13-
// std::string token;
14-
// std::string name;
15-
// Client *target = clients[_pos -1];
16-
17-
// while(split_command >> token)
18-
// command.push_back(token);
19-
20-
// if (command.size() < 2)
21-
// return(sendMsg(ERR_NEEDMOREPARAMS(target->getNickname(), "JOIN"), fd_sockets[_pos]));
22-
// if (command.size() > 3)
23-
// return(sendMsg(ERR_UNKNOWNCOMMAND(target->getNickname(), _command), fd_sockets[_pos]));
24-
// if (!checkChannelNames(command[1]))
25-
// return(sendMsg(ERR_BADCHANMASK(command[1]), fd_sockets[_pos]));
26-
// int temp = channelExist(command[1]);
27-
// if (temp != -1)
28-
// {
29-
// Channel *channel = channels[temp];
30-
// if (channel->getHasLimit() == true && channel->get_clients().size() >= (unsigned int)channel->getLimit())
31-
// return (sendMsg(ERR_CHANNELISFULL(target->getNickname(), channel->getname()), fd_sockets[_pos]));
32-
// if (channel->getNeedPassword() == true && channel->getOnInviteOnly() == false)
33-
// {
34-
// if (command.size() == 3)
35-
// {
36-
// if (channel->getPassword() != command[2])
37-
// return(sendMsg(ERR_BADCHANNELKEY(target->getNickname(), command[1]), fd_sockets[_pos]));
38-
// }
39-
// else
40-
// return(sendMsg(ERR_BADCHANNELKEY(target->getNickname(), command[1]), fd_sockets[_pos]));
41-
// }
42-
// if (channel->getOnInviteOnly() == true)
43-
// {
44-
// if (target->check_if_invited(channel->getname()) == false)
45-
// return(sendMsg(ERR_INVITEONLYCHAN(target->getNickname(), channel->getname()), fd_sockets[_pos]));
46-
// }
47-
// if (channel->add_participant(target) == true)
48-
// channel->send_to_channel(":" + target->getNickname() + "!" + target->get_username() + "@" + target->get_hostname() + " JOIN " + channel->getname() + '\n', "0");
49-
// }
50-
// else
51-
// {
52-
// Channel *to_add = new Channel(command[1], this->clients[_pos -1]);
53-
// this->channels.push_back(to_add);
54-
// std::cout << to_add->getname() << "channel" << std::endl;
55-
// target->addOperatorChannels(to_add);
56-
// }
57-
// }
58-
59-
609
int IrcServer::splitJoinCommand(int _pos, std::string _msg, std::vector<std::string>& _chan, std::vector<std::string>& _pswd)
6110
{
6211
std::istringstream split_msg(_msg);
@@ -101,7 +50,7 @@ void IrcServer::join_channel(std::string _msg, int _pos)
10150

10251
if (channel->getHasLimit() && channel->get_clients().size() >= (unsigned int)channel->getLimit())
10352
sendMsg(ERR_CHANNELISFULL(target->getNickname(), chan[i]), fd_sockets[_pos]);
104-
else if (channel->getNeedPassword() && (pswd.size() < i + 1 || (pswd.size() >= i + 1 && channel->getPassword() != pswd[i])))
53+
else if (channel->getNeedPassword() && !channel->getOnInviteOnly() && (pswd.size() < i + 1 || (pswd.size() >= i + 1 && channel->getPassword() != pswd[i])))
10554
sendMsg(ERR_BADCHANNELKEY(target->getNickname(), chan[i]), fd_sockets[_pos]);
10655
else if (channel->getOnInviteOnly() && !target->check_if_invited(chan[i]))
10756
sendMsg(ERR_INVITEONLYCHAN(target->getNickname(), chan[i]), fd_sockets[_pos]);

srcs/kick.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ void IrcServer::checkKick(std::string _msg, int _pos)
5151
channels[target_channel]->send_to_channel(":" + clients[_pos - 1]->get_nametag() + " KICK " + chan[i] + " " + users[i] + " :" + _msg.substr(_msg.find(':') + 1, _msg.size()) + "\r\n", clients[_pos - 1]->getNickname());
5252
sendMsg(":" + clients[_pos - 1]->get_nametag() + " KICK " + chan[i] + " " + users[i] + " :" + _msg.substr(_msg.find(':') + 1, _msg.size()) + "\r\n", fd_sockets[_pos]);
5353
channels[target_channel]->deleteMember(users[i]);
54+
clients[target_user]->deleteOperatorChannel(chan[i]);
55+
if (channels[target_channel]->get_clients().size() == 0)
56+
{
57+
clearOperator(channels[target_channel]->getname());
58+
delete channels[target_channel];
59+
channels.erase(channels.begin() + target_channel);
60+
}
5461
}
5562
i++;
5663
}

srcs/utils.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,19 @@ void IrcServer::deleteUserInChannel(std::string _nickname)
9898
(*it)->deleteMember(_nickname);
9999
if ((*it)->get_clients().size() == 0)
100100
{
101+
clearOperator((*it)->getname());
101102
delete *it;
102103
it = channels.erase(it);
103104
it--;
104105
}
105106
}
106107
}
107108
}
109+
110+
void IrcServer::clearOperator(std::string _channel)
111+
{
112+
std::vector<Client*>::iterator it;
113+
114+
for (it = clients.begin() ; it != clients.end() ; it++)
115+
(*it)->deleteOperatorChannel(_channel);
116+
}

0 commit comments

Comments
 (0)