Skip to content

Commit

Permalink
fix WHOWAS, KILL, update README
Browse files Browse the repository at this point in the history
  • Loading branch information
levensta committed Dec 15, 2021
1 parent e4bdcf8 commit c49efc1
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 10 deletions.
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@

IRC (Internet Relay Chat) – устаревший протокол прикладного уровня для обмена сообщениями в режиме реального времени. Разработан в 1988 году и предназначен для группового общения, также позволяет общаться через личные сообщения и обмениваться файлами. Несмотря на устарелость, на основе IRC в дальнейшем разработано множество мессенджеров, такие как: ICQ, Skype, Discord, Telegram, Slack, etc...

Проект представляет собой IRC-сервер, написанный на основе стандарта [rfc1459](https://datatracker.ietf.org/doc/html/rfc1459). <br>
**ПРИМЕЧАНИЕ:** Сервер не поддерживает коммуникацию *сервер-сервер*. Ниже представлена сокращенная документация стандарта rfc1459.
Проект представляет собой IRC-сервер, написанный на основе стандарта [rfc1459](https://datatracker.ietf.org/doc/html/rfc1459).

<h2>Начало</h2>

Expand All @@ -30,7 +29,7 @@ make
При необходимости можно менять конфиг сервера **IRConf.json**

---
К серверу прилагается бот, который, используя api.intra.42.fr, возвращает местоположение человека с отправленным никнеймом. <br>
К серверу прилагается бот, который, используя [api.intra.42.fr](https://api.intra.42.fr/), возвращает местоположение человека с отправленным никнеймом. <br>
Запуск бота:
```
./bot/bot IRCatBot.conf.json
Expand All @@ -40,7 +39,13 @@ make
PRIVMSG wherebot :levensta
// :[email protected] PRIVMSG lev :"Location: Russian Federation, Kazan, Spartakovskaya, 2b2 -> et-e1"
```
<h2>Содержание:</h2>
---

<h2>Документация rfc1459 (ред.)</h2>

**ПРИМЕЧАНИЕ:** Cервер не поддерживает коммуникацию *сервер-сервер*. Ниже представлена сокращенная документация стандарта [rfc1459](https://datatracker.ietf.org/doc/html/rfc1459).

<h3>Содержание:</h3>

1. [Сообщения](#message)
2. [Регистрация соединения](#registration)
Expand Down Expand Up @@ -113,7 +118,8 @@ PASS-сообщение не должно быть последним.

**Параметры:** `<password>`

Команда `PASS` используется для установки 'парольного соединения'. Пароль может и должен быть установлен перед любой попыткой регистрации установленного соединения.
Команда `PASS` используется для установки 'парольного соединения', в качестве пароля выступает второй аргумент,
переданный при запуске сервера. Пароль может и должен быть установлен перед любой попыткой регистрации соединения.
В текущий момент, это требования к клиентам отправлять команду `PASS` перед отправкой комбинации `NICK`/`USER`.

Числовые ответы:
Expand Down
1 change: 1 addition & 0 deletions srcs/Server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ void Server::deleteBrokenConnections()
{
if (connectedUsers[i]->getFlags() & BREAKCONNECTION)
{
this->nicknamesHistory.addUser(*(connectedUsers[i]));
notifyUsers(*(connectedUsers[i]), ":" + connectedUsers[i]->getPrefix() + " QUIT :" + connectedUsers[i]->getQuitMessage() + "\n");
close(connectedUsers[i]->getSockfd());
std::map<std::string, Channel *>::iterator beg = channels.begin();
Expand Down
8 changes: 4 additions & 4 deletions srcs/commands/ircOperatorCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ int Server::killCmd(const Message &msg, User &user) {
}

string username = msg.getParams()[0];
if (username == name) {
if (username == this->name) {
return (sendError(user, ERR_CANTKILLSERVER));
}

User *userToKill = getUserByName(username);
if (userToKill == NULL) {
return (sendError(user, ERR_NOSUCHNICK));
if (!containsNickname(username)) {
sendError(user, ERR_NOSUCHNICK, msg.getParams()[0]);
}
User *userToKill = getUserByName(username);
userToKill->sendMessage(msg.getParams()[1] + "\n");
userToKill->setFlag(BREAKCONNECTION);
return 0;
Expand Down
2 changes: 1 addition & 1 deletion srcs/commands/userCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ int Server::whowasCmd(const Message &msg, User &user)
n = atoi(msg.getParams()[1].c_str());
n = (n == 0) ? historyList.size() : n;

for (int i = 0; i < n; ++i)
for (int i = 0; i < n && i < static_cast<int>(historyList.size()); ++i)
{
sendReply(user.getServername(), user, RPL_WHOWASUSER, historyList[i]->getNickname(), \
historyList[i]->getUsername(), historyList[i]->getHostname(), historyList[i]->getRealname());
Expand Down

0 comments on commit c49efc1

Please sign in to comment.