nekitmilk_my_dns #11
Loading…
Reference in New Issue
No description provided.
Delete Branch "nekitmilk_my_dns"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Больше комментариев, один оператор, один комментарий в т.ч. вызовы (в идеале)
@ -9,6 +9,8 @@
#include <net/if.h> // Определение констант сетевых интерфейсов (IFNAMSIZ)
#include <sys/ioctl.h> // Управление сокетами и интерфейсами (ioctl)
#include <fcntl.h> // Флаги файловых дескрипторов (fcntl)
#include <curl/curl.h>
Добавить коменты к либам
@ -405,2 +407,4 @@
}
using json = nlohmann::json;
Давай без этого и просто на местах использования контекст резолвить
@ -410,0 +418,4 @@
// -4002 - ошибка запроса CURL
// -4003 - ошибка парсинга JSON
status = 0;
Нужно сделать две секции
И в них поместить все переменные из процедуры
@ -411,0 +430,4 @@
// Инициализируем curl
curl = curl_easy_init();
if (!curl) {
status = -4001;
return наверное нужен
@ -411,0 +444,4 @@
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); // Проверка SSL
// Устанавливаем заголовок
headers = curl_slist_append(headers, "accept: application/dns-json");
Можно в инициализацию двинуть
@ -411,0 +450,4 @@
// Выполняем запрос
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
status = -4002;
return
@ -411,0 +454,4 @@
} else {
// Парсим JSON и извлекаем IP
try {
auto json_data = json::parse(response);
auto ни-ни
эту переменную тоже объявить в соответствующей секции
@ -411,0 +458,4 @@
if (json_data.contains("Answer")) {
for (const auto& record : json_data["Answer"]) {
if (record["type"] == 1) { // A-запись (IPv4)
ip = record["data"].get<std::string>();
Наверное перед концом функции нужна проверка того, что всё это распарсилось и в ip есть валидный ip
@ -411,0 +464,4 @@
}
}
} catch (const std::exception& e) {
status = -4003;
return?
@ -411,0 +467,4 @@
status = -4003;
}
}
Если всё ок, поставь статус, который по схеме и main нужен, чтобы продолжать работать
@ -412,2 +476,4 @@
}
// Callback для записи ответа от сервера
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {
А её нельзя определить внутри процедуры?
Похуй