комменты внутрь тел функций, status

This commit is contained in:
dr-wh0 2025-03-25 14:47:46 +03:00
parent a96165b7fa
commit c79a949389
1 changed files with 42 additions and 32 deletions

View File

@ -22,23 +22,25 @@ std::chrono::system_clock::time_point start_timestamp; // Начальное в
std::string log_msg; // Сообщение, которое будет записано в лог-файл
std::string fin_msg; // Сообщение, которое будет выведено в консоль пользователю
std::string msg; // Сообщение, которое будет отправлено в телеграм
int status; // Статус работы программы
// ====== end of DCL ====== //
// Данная процедура записывает в глобальные переменные параметры
// (attack_type, domain, ip, port, log_file, telegram_id, telegram_token) проводимой атаки, поступившие при вызове программы
// На вход получает int argc, char **argv, возвращает код выполнения
// Коды возврата:
// 2 - Атака флуд, все нужные опции есть
// 1 - Атака порт скан, все нужные опции есть
// 0 - нужна помощь
// -1 - пользователь не ввел тип атаки или ввел неверный тип атаки
// -10 - Пользователь выбрал тип атаки порт сканнинг, но не ввел нужные параметры
// -20 - Пользователь выбрал тип атаки флуд, но не ввел нужные параметры
// -101 - неизвестная опция или потерян аргумент, следует предложить вызвать флаг помощи
// -600 - пользователь ввел токен, но не id или наоборот
int my_check_params(int argc, char **argv)
{
// Данная процедура записывает в глобальные переменные параметры
// (attack_type, domain, ip, port, log_file, telegram_id, telegram_token) проводимой атаки, поступившие при вызове программы
// На вход получает int argc, char **argv, возвращает код выполнения
// Коды возврата:
// 2 - Атака флуд, все нужные опции есть
// 1 - Атака порт скан, все нужные опции есть
// 0 - нужна помощь
// -1 - пользователь не ввел тип атаки или ввел неверный тип атаки
// -10 - Пользователь выбрал тип атаки порт сканнинг, но не ввел нужные параметры
// -20 - Пользователь выбрал тип атаки флуд, но не ввел нужные параметры
// -101 - неизвестная опция или потерян аргумент, следует предложить вызвать флаг помощи
// -600 - пользователь ввел токен, но не id или наоборот
int status;
int opt;
const char* short_options;
@ -132,12 +134,13 @@ int my_check_params(int argc, char **argv)
return status;
}
// Данная функция вызывается в случае ошибки на каком-то этапе и на основании поступившего кода,
// формирует сообщение с описанием произошедшей ошибки
void my_diag(int status)
void my_diag()
{
// Данная функция вызывается в случае ошибки на каком-то этапе и на основании поступившего кода,
// формирует сообщение с описанием произошедшей ошибки
// Отладочный вывод - начало работы функции (можно отключить в релизной версии)
printf("begin my_diag (status: %i)\n", status); // debug
printf("begin my_diag, status: %i\n", status); // debug
// Выбор сообщения в зависимости от кода ошибки
switch (status)
{
@ -196,8 +199,9 @@ std::string escape_json(const std::string& s) {
return result; // Возвращаем обработанную строку
}
// Проверка, является ли строка числом (включая отрицательные)
bool is_numeric(const std::string& s) {
// Проверка, является ли строка числом (включая отрицательные)
size_t start; // Индекс, с которого начинать проверку цифр
if (s.empty()) return false; // Пустая строка не может быть числом
@ -219,7 +223,8 @@ bool is_numeric(const std::string& s) {
}
int my_msg() {
// Инициализация переменных для работы с CURL
// Инициализация локальных переменных для работы с CURL
CURL* curl; // Указатель на CURL-объект
std::string escaped_msg; // Экранированное сообщение для JSON
std::cout << msg << std::endl; // Вывод сообщения в консоль (для отладки)
@ -291,15 +296,17 @@ int my_msg() {
return 4; // Прочие ошибки
}
}
// Данная функция записывает в файл лога сообщение
int my_log()
{
// Данная функция записывает в файл лога сообщение
return 0;
}
// Данная функция завершает программу и рассчитывает итоговое время выполнения программы
void my_fin()
{
// Данная функция завершает программу и рассчитывает итоговое время выполнения программы
// Фиксируем время окончания работы программы
auto end_timestamp = std::chrono::system_clock::now();
// Преобразуем время окончания в time_t и миллисекунды
@ -340,29 +347,29 @@ void my_fin()
std::exit(0);
}
// Данная процедура сопостовляет доменное имя с IP
int my_dns()
{
// Данная процедура сопостовляет доменное имя с IP
return 0;
}
// Данная процедура выполняет TCP SYN Flood атаку
int my_tcp_syn()
{
// Данная процедура выполняет TCP SYN Flood атаку
return 2;
}
// Данная процедура выполняет UDP Flood (port scanning) атаку
int my_udp()
{
// Данная процедура выполняет UDP Flood (port scanning) атаку
return 2;
}
// Главная функция программы - точка входа
int main(int argc, char **argv)
{
// Главная функция программы - точка входа
// Объявление переменных для хранения статусов операций
int check_params_status; // Статус проверки параметров
int log_status; // Статус записи в лог
int dns_status; // Статус DNS-разрешения
int udp_status; // Статус UDP-атаки
@ -372,6 +379,7 @@ int main(int argc, char **argv)
n_ok_requests = 0; // Счетчик успешных запросов
n_fail_requests = 0; // Счетчик неудачных запросов
start_timestamp = std::chrono::system_clock::now(); // Засекаем время начала
status = 0; // Статус программы
// Получаем текущее время в различных форматах
time_t now_time_t = std::chrono::system_clock::to_time_t(start_timestamp);
@ -390,10 +398,10 @@ int main(int argc, char **argv)
// ====== Основная логика программы ====== //
// 1. Проверяем параметры командной строки
check_params_status = my_check_params(argc, argv);
status = my_check_params(argc, argv);
// Обрабатываем результат проверки параметров
switch (check_params_status)
switch (status)
{
case 1: // Режим сканирования портов (UDP)
// Пытаемся разрешить DNS (если указано доменное имя)
@ -410,7 +418,8 @@ int main(int argc, char **argv)
}
else if (udp_status < 0) // Обработка ошибок
{
my_diag(udp_status); // Выводим диагностику
status = udp_status;
my_diag(); // Выводим диагностику
log_status = my_log(); // Пытаемся записать в лог
if (log_status == 1) // Если требуется уведомление
{
@ -425,7 +434,7 @@ int main(int argc, char **argv)
}
else if (dns_status == 1) // Ошибка DNS-разрешения
{
my_diag(check_params_status); // Выводим ошибку
my_diag(); // Выводим ошибку
log_status = my_log(); // Логируем ошибку
if (log_status == 0) { // Если не требуется уведомление
@ -453,7 +462,8 @@ int main(int argc, char **argv)
}
else if (tcp_syn_status < 0)
{
my_diag(tcp_syn_status);
status = tcp_syn_status;
my_diag();
log_status = my_log();
if (log_status == 1)
{
@ -467,7 +477,7 @@ int main(int argc, char **argv)
}
else if (dns_status == 1)
{
my_diag(check_params_status);
my_diag();
log_status = my_log();
if (log_status == 0)
{
@ -482,7 +492,7 @@ int main(int argc, char **argv)
break;
default: // Некорректные параметры или запрос справки
my_diag(check_params_status); // Выводим диагностику
my_diag(); // Выводим диагностику
log_status = my_log(); // Логируем событие
if (log_status == 0) // Без уведомления