feat(cmd/p*ng): adding ping/pong commands and patch the configuration for irssi issues

This commit is contained in:
Raphael 2025-06-03 16:59:58 +02:00
parent 97103ac852
commit 731d40061d
6 changed files with 118 additions and 5 deletions

View file

@ -114,17 +114,16 @@ test: debug
'bash -lc "nc localhost $(PORT) || exec yes \"netcat exit code: $?\""' 'bash -lc "nc localhost $(PORT) || exec yes \"netcat exit code: $?\""'
@tmux attach -t $(SESSION) @tmux attach -t $(SESSION)
# @tmux split-window -h -p 70 -t $(SESSION):0 \
run: re # 'bash -lc "irssi -c localhost -p $(PORT) -w irc || exec yes \"irssi exit code: $?\""'
run: all
@printf '$(GREY) now running with\n\t- Port:\t\t$(GREEN)$(PORT)$(GREY)\n\t- Password:\t$(GREEN)irc$(END)\n' @printf '$(GREY) now running with\n\t- Port:\t\t$(GREEN)$(PORT)$(GREY)\n\t- Password:\t$(GREEN)irc$(END)\n'
@if tmux has-session -t $(SESSION) 2>/dev/null; then \ @if tmux has-session -t $(SESSION) 2>/dev/null; then \
tmux kill-session -t $(SESSION); \ tmux kill-session -t $(SESSION); \
fi fi
@tmux new-session -d -s $(SESSION) \ @tmux new-session -d -s $(SESSION) \
'bash -lc "./$(NAME) $(PORT) irc; exec bash"' 'bash -lc "./$(NAME) $(PORT) irc; exec bash"'
@tmux split-window -h -p 70 -t $(SESSION):0 \ @tmux split-window -v -p 50 -t $(SESSION):0 \
'bash -lc "irssi -c localhost -p $(PORT) -w irc || exec yes \"irssi exit code: $?\""'
@tmux split-window -v -p 50 -t $(SESSION):0.1 \
'bash -lc "nc localhost $(PORT) || exec yes \"netcat exit code: $?\""' 'bash -lc "nc localhost $(PORT) || exec yes \"netcat exit code: $?\""'
@tmux attach -t $(SESSION) @tmux attach -t $(SESSION)

22
include/commands/ping.hpp Normal file
View file

@ -0,0 +1,22 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ping.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/06/02 22:48:36 by rparodi #+# #+# */
/* Updated: 2025/06/02 22:48:48 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
#include "commands.hpp"
class cmd::Ping : public ACommand {
public:
Ping(User *user, Channel *channel, Server *server, const std::string &line) : ACommand(user, channel, server, line) {}
virtual void execute(void);
virtual bool checkArgs();
};

21
include/commands/pong.hpp Normal file
View file

@ -0,0 +1,21 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pong.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/06/02 22:48:36 by rparodi #+# #+# */
/* Updated: 2025/06/02 23:01:19 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
#include "commands.hpp"
class cmd::Pong {
public:
Pong(void){}
clock_t answer(clock_t start);
};

View file

@ -21,6 +21,7 @@ bool Pass::checkArgs() {
WARNING_MSG("Not correct for Pass command"); WARNING_MSG("Not correct for Pass command");
return false; return false;
} }
DEBUG_MSG("coucou");
if (_sender->isRegistered()) { if (_sender->isRegistered()) {
WARNING_MSG(_sender->getName() << " is already is already log in the server !"); WARNING_MSG(_sender->getName() << " is already is already log in the server !");
return false; return false;
@ -35,8 +36,10 @@ bool Pass::checkArgs() {
void Pass::execute() { void Pass::execute() {
if (checkArgs() == false) { if (checkArgs() == false) {
ERROR_MSG("Invalid arguments for Pass command (see warning message)"); ERROR_MSG("Invalid arguments for Pass command (see warning message)");
DEBUG_MSG("skill issues");
return; return;
} }
DEBUG_MSG("mais pas trop skill issues");
if (_args.at(1) != _server->getPassword()) { if (_args.at(1) != _server->getPassword()) {
ERROR_MSG("The password is incorrect"); ERROR_MSG("The password is incorrect");
return; return;

42
sources/commands/ping.cpp Normal file
View file

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ping.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/24 17:29:48 by rparodi #+# #+# */
/* Updated: 2025/06/03 14:49:27 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#include "ping.hpp"
#include "commands.hpp"
#include "logs.hpp"
#include "pong.hpp"
#include <ctime>
using namespace cmd;
bool Ping::checkArgs() {
if (_args.size() < 3) {
WARNING_MSG("Not enough arguments for PING command");
return false;
}
return true;
}
/**
* @brief Execute the Ping
* @note To send a private message to a user / a channel
*/
void Ping::execute() {
clock_t start = clock() / CLOCKS_PER_SEC;
if (checkArgs() == false) {
ERROR_MSG("Invalid arguments for PRIVMSG command (see warning message)");
return;
}
clock_t diff = Pong().answer(start);
INFO_MSG(diff);
// check how the com
}

26
sources/commands/pong.cpp Normal file
View file

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pong.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/24 17:29:48 by rparodi #+# #+# */
/* Updated: 2025/06/02 23:04:53 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#include "commands.hpp"
#include "logs.hpp"
#include "pong.hpp"
#include <ctime>
using namespace cmd;
/**
* @brief Execute the Pong
* @note answer to PING command (managed by the server)
*/
clock_t Pong::answer(clock_t start) {
return (start - (clock() / CLOCKS_PER_SEC));
}