J’ai tous les jours des erreur sur le module Dyndns
dyndns Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://infodrey.com-infodrey:**********@www.ovh.com/nic/update?system=dyndns&hostname=infodrey.com&myip= 429 Too Many Requests 429 Too Many Requests nginx cURL error : Illegal characters found in URL
Mais aussi
dyndns Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://infodrey.com-infodrey:**********@www.ovh.com/nic/update?system=dyndns&hostname=infodrey.com&myip=**.**.**.**.** cURL error : Operation timed out after 2000 milliseconds with 0 out of 0 bytes received
Le premier message que tu donnes est la réponse de OVH, tu ne sais pas quel est le caractère illégal.
Vu qu’il y a très peu d’information de log pour ce plugin, il est difficile de t’aider.
Il va te falloir modifier un fichier du plugin pour ajouter du log. Tu peux faire cela avec le plugin jeexplorer.
Le fichier à modifier est /plugins/dyndns/core/class/dyndns.class.php
Dans la fonction updateIP, dans le case ‹ ovhcom ›, ajoute la ligne log::add('dyndns', 'debug', $url);
entre les ligne $url= … et $request_http = new …
Passe le niveau de log pour dyndns vers debug.
Cela te permettra de voir exactement ce que tu envois comme requête à OVH.
Pour ton deuxième message, as tu cela régulièrement ?
Perso, je constate cela lors du reboot de mon router, ou lors d’une perte de lconnexion vers internet.
J’ai eu le même message d’erreur (le premier) ce matin:
[2020-12-31 06:15:22][ERROR] : Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://@dynupdate.no-ip.com/nic/update?hostname=xxxxxxxxx&myip=<html> <head><title>429 Too Many Requests</title></head> <body> <center><h1>429 Too Many Requests</h1></center> <hr><center>nginx</center> </body> </html> cURL error :
En fait, j’ai l’impression que c’est le service chargé de retourner notre IP publique qui retourne l’erreur 429, et le plugin prend ce retour comme la nouvelle valeur d’adresse IP, et tente de mettre à jour l’IP (chez NO-IP dans mon cas) avec le message d’erreur (à la place de l’IP)
=> j’ai eu droit à une mise à jour 15 minutes plus tard, mais avec la bonne IP cette fois
J’imagine que http://checkip.dyndns.com n’a pas répondu, et l’appel à dnsomatic est retourné tel quel (en tant qu’adresse IP) dans le plugin…
Ce serait pas mal de pouvoir passer l’IP externe en paramètre au plugin: j’utilise un autre plugin pour récupérer mon IP externe (livebox), donc j’aimerais bien pouvoir passer cette info au plugin DynDns, pour qu’il n’ait pas besoin de faire une requête http pour la récupérer: j’aimerais remplacer l’appel http par un appel au plugin livebox par exemple, ou un truc dans le genre… Je pense pouvoir faire cela dans un scenario, en m’inspirant du code du plugin, mais cela pourrait-être une idée d’évolution
J’ai aussi depuis toujours (!) un problème d’erreur systématique du plugin à la mise à jour de l’IP sur OVH.com : cURL error : Resolving timed out after 2511 milliseconds.
Pourtant, si je copie la requête et l’exécute dans un navigateur, le serveur OVH répond bien : Good avec l’IP derrière.
Il semblerait donc que la requête soit la bonne mais que le plugin ne capte pas la réponse.
La requête est (avec des !!! pour masquer mes données ) : https://ha!!!ry:F!!!P@www.ovh.com/nic/update?system=dyndns&hostname=ch!!!op&myip=87.88.!!!.!!!
Une solution ?
Merci
Thierry
Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://@dynupdate.no-ip.com/nic/update?hostname=jeedoumou.ddns.net&myip= 429 Too Many Requests 429 Too Many Requests nginx cURL error :
Je suis sur Jeedom v4 avec la dernière version du plugin version 2020-05-12.
J’ai plusieurs équipements dyndns (sous-domaines) de configurés sur un même domaine OVH dont certains sont désactivés (cases Activer et Visible désactivées) mais j’ai tout de même des erreurs dans les logs. On dirait qu’il traite ces équipements même lorsqu’ils sont désactivés…
Du coup, j’ai aussi des erreurs 429 Too Many Requests sur ceux activés…
J’ai également parfois l’erreur cURL error : OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.ovh.com:443. Si quelqu’un sait à quoi ça correspond comme erreur, je suis preneur.
Sinon, pour moi, il faudrait donc corriger les points suivants :
Lorsqu’un équipement dyndns est désactivé, ne pas le traiter !
Ajouter le choix de paramétrer la crontab à 30 min au lieu de 15 min lorsqu’on a trop d’erreurs « 429 Too Many Requests ».
Cacher le mot de passe dans les logs (à moins que ce soit fait exprès pour le problème avec certains caractères).
Je partage ton besoin, il est vrai que 15 minutes c’est un peu court et j’ai aussi des erreurs 429 avec noip.com que j’utilise @Loic si tu nous lit un petit cron à 30 d’activable serait super !
En attendant, tu peux toujours désactiver le cron15, et faire un scénario à toi, qui lancera la commande de mise à jour quand tu le souhaite. C’est ce que je viens de faire.
Effectivement et j’allais proposer le changement de code pour cela mais je vois que @Loic l’a fait en beta et en stable il y a quelques heures donc ça sera fixé bientôt
Doit y avoir un bug quelque part, d’après la doc la mise à jour est censé se faire que si l’IP a changée, alors que j’ai l’impression que l’update se fait systématiquement toutes les 15min.
J’ai toutes les 15 min une erreur ’’Too many requests’ chez OVH.
J’ai vérifié sur ma version du plugin modifiée pour IPv6. Pour NOIP, la mise à jour ne s’effectue que lorsqu’il y a un changement d’adresse IP. Le cron15 est pourtant bien appelé toutes les 15 minutes.
J’ai rajouté dans le code des informations de log. Il n’y en a quasi pas en standard et rien qui permette de vérifié les mise à jours.
Voici un bout de code pour remplacer la fonction cron15 dans le fichier plugin/dyndns/core/class/dyndns.class.php
Cette modification permet d’avoir un log de l’adresse IP connue dans Jeedom, de l’adresse IP juste récupérée.
Le log indique qu’il fait la mise à jour.
public static function cron15($_eqLogic_id = null, $_force = false) {
if ($_eqLogic_id == null) {
$eqLogics = self::byType('dyndns',true);
} else {
$eqLogics = array(self::byId($_eqLogic_id));
}
$current_externalIP = self::getExternalIP();
foreach ($eqLogics as $eqLogic) {
$externalIP = $eqLogic->getCmd(null, 'externalIP');
if (!is_object($externalIP)) {
continue;
}
$ip = $externalIP->execCmd();
if ($_force || $ip != $externalIP->formatValue($current_externalIP)) {
log::add('dyndns','debug','IP sauvee: ' .$ip. ', IP courante: ' . $externalIP->formatValue($current_externalIP) );
$externalIP->setCollectDate('');
$externalIP->event($current_externalIP);
log::add('dyndns','debug','Mise à jour de l\'adresse IP:' );
$eqLogic->updateIP();
}
}
}
Il faut évidement mettre le niveau de log de dyndns sur debug.
Effectivement je confirme que les équipements désactivés ne sont plus traités.
Par contre, comme Vincent_Robert, j’ai toujours beaucoup d’alerte Too many requests chez OVH…
J’ai eu seulement 2 fois l’erreur suivante :
Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : http://myip.dnsomatic.com/ cURL error : Resolving timed out after 8000 milliseconds
Donc effectivement, je pense qu’il est censé vérifier si l’ip est la même.
Je vais ajouter le code de henribi pour creuser le problème…
Tu remplaces ovhuser, ovhpassword par les valeurs de ton compte ovh. Yourhostname est le nom de ton hostname connu par ovh. Enfin yourIP est l’adresse externe de installation.
Tu peux l’obtenir avec l’url http://checkip.dyndns.com/
Salut même souci de mon côté avec OVH depuis longtemps. Ce qui m’embête c’est que les notifs apparaissent avec mon code en clair… et que les notifs s’affichent sur les comptes invités… Gros soucis!
Concernant la MaJ elle est en bêta? Je n’ai rien eu de mon côté.
Pour l’histoire du mot de passe en clair, effectivement ce n’est pas super pour la sécurité… Après comme indiqué plus haut, je ne sais pas si c’est fait exprès où non. Le mieux serait de le cacher par défaut et en clair en mode debug…