From fcc9f7450e4c19673ef2a66b3fe662d63c6cef5b Mon Sep 17 00:00:00 2001 From: Vincent Berry <37981730+vincentberry@users.noreply.github.com> Date: Fri, 5 Jul 2024 21:17:16 +0200 Subject: [PATCH 1/2] Fix: Improve error logging and check internet connection - Updated log message for failed API verification to suggest checking internet connection. - Added internet connection check before API calls. - Improved error handling for failed IP address retrieval. - Refactored log messages for clarity. --- ddns_update.php | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/ddns_update.php b/ddns_update.php index 9bf15d0..03f1091 100644 --- a/ddns_update.php +++ b/ddns_update.php @@ -10,8 +10,8 @@ function writeToLog($message) { global $logFilePath; - file_put_contents($logFilePath, date('Y-m-d H:i:s') . " - $message", FILE_APPEND); - print_r($message); + file_put_contents($logFilePath, date('Y-m-d H:i:s') . " - $message\n", FILE_APPEND); + print_r($message . "\n"); } // Fonction pour vérifier l'API Online.net @@ -73,6 +73,19 @@ function ApiErrorOnline($httpCode) { } } +// Fonction pour vérifier la connexion Internet +function checkInternetConnection() +{ + $connected = @fsockopen("www.google.com", 80); + if ($connected) { + fclose($connected); + writeToLog("✅ Connexion Internet valide\n"); + return true; + } + writeToLog("❌ Erreur : Pas de connexion Internet.\n"); + return false; +} + writeToLog("\n---------------------------------\n"); writeToLog("🚩 Script Start\n"); writeToLog("💲ONLINE_TOKEN: " . $Online_Token . "\n"); @@ -89,6 +102,12 @@ function ApiErrorOnline($httpCode) { writeToLog("✅ Variables d'environnement valide\n"); } +//vérification de la connection internet +if (checkInternetConnection()) { + writeToLog("❌ Fatal : Veuillez vérifier votre connexion Internet pour l'initialisation.\n"); + die("⛔ Done !"); +} + // Vérification de l'API Online.net $userInfo = OnlineApi("user", ""); @@ -102,8 +121,8 @@ function ApiErrorOnline($httpCode) { while (true) { foreach ($domains as $domain) { foreach ($subdomains as $sub) { - // Récupération de l'Ip du client appelant la page. - $ipApiResponse = file_get_contents("https://api64.ipify.org?format=json"); + // Récupération de l'IP du client appelant la page. + $ipApiResponse = @file_get_contents("https://api64.ipify.org?format=json"); if ($ipApiResponse !== false) { $ipData = json_decode($ipApiResponse, true); @@ -111,23 +130,28 @@ function ApiErrorOnline($httpCode) { writeToLog("🌐 Adresse IP actuelle : $address\n"); } else { - writeToLog("❌ Impossible de récupérer l'adresse IP.\n"); + $error = error_get_last(); + writeToLog("❌ Impossible de récupérer l'adresse IP. Erreur : " . $error['message'] . "\n"); + + if (checkInternetConnection()) { + writeToLog("❌ Erreur : La connexion Internet fonctionne, mais une erreur est survenue avec l'API ipify.\n"); + } } writeToLog("🔍 Vérification de l'IP pour $sub.$domain...\n"); if ($sub === "@") { - $ipyet = gethostbyname($domain); // Récupération de l'Ip en service sur l'enregistrement DNS. + $ipyet = gethostbyname($domain); // Récupération de l'IP en service sur l'enregistrement DNS. } elseif ($sub === "*") { - $ipyet = gethostbyname("testdnsall." . $domain); // Récupération de l'Ip en service sur l'enregistrement DNS. + $ipyet = gethostbyname("testdnsall." . $domain); // Récupération de l'IP en service sur l'enregistrement DNS. } else { - $ipyet = gethostbyname("$sub.$domain"); // Récupération de l'Ip en service sur l'enregistrement DNS. + $ipyet = gethostbyname("$sub.$domain"); // Récupération de l'IP en service sur l'enregistrement DNS. } writeToLog("📊 IP actuelle : $address\n"); writeToLog("📌 IP enregistrée : $ipyet\n"); - if ($ipyet !== $address) { // Comparaison de la nouvelle Ip et de celle en service. + if ($ipyet !== $address) { // Comparaison de la nouvelle IP et de celle en service. $ch = curl_init(); $URL = "domain/" . $domain . "/version/active"; From 3f69d515b9c994f031d93e0746a24f35788a8a67 Mon Sep 17 00:00:00 2001 From: Vincent Berry <37981730+vincentberry@users.noreply.github.com> Date: Fri, 5 Jul 2024 21:39:30 +0200 Subject: [PATCH 2/2] Fix: Correct internet connection check logic - Fixed the internet connection check logic during initialization. - Updated log message for failed internet connection check to be accurate and instructive. Closes #1 --- ddns_update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddns_update.php b/ddns_update.php index 03f1091..7ff42fd 100644 --- a/ddns_update.php +++ b/ddns_update.php @@ -103,7 +103,7 @@ function checkInternetConnection() } //vérification de la connection internet -if (checkInternetConnection()) { +if (!checkInternetConnection()) { writeToLog("❌ Fatal : Veuillez vérifier votre connexion Internet pour l'initialisation.\n"); die("⛔ Done !"); }