Comme c’est dimanche et qu’il ne fait pas beau, j’en profite pour vous ajouter ce petit truc. J’ai retrouvé ce petit script que j’avais écrit pour un de mes sites NodeJS distant. Son rôle est de gérer l’update d’un dns dynamique. Il y a bien sur beaucoup de box qui ont cette fonction, mais sur le site en question ce n’est pas le cas. Il est en place sur un site depuis plus d’un an avec un DynHost de chez OVH. Tout semble démontrer qu’il fonctionne parfaitement car depuis, j’ai toujours eu accès à mes sites distant qui l’utilisent. Il fonctionne aussi avec NoIp.
Voilà donc comment fonctionne ce script :
Il fait d’abord un dns lookup sur mon domaine dynamique pour récupérer l’adresse ip correspondante. Ensuite, il fait une requête http sur le site de mon domaine public en appelant une page lui renvois l’ip publique (truc genre monip mais hébergé par moi). La page php appelée est toute simple et ne contient que ça :
Si les 2 adresses sont identiques, cela s’arrête là, par contre, si elles sont différentes, le script fait une requête d’update pour mettre à jour le dyn.dns
Tout ça peut paraître un peu compliqué pour faire l’update de l’ip d’un dyn.dns, mais d’une part, je trouve cela beaucoup plus propre que d’updater arbitrairement toute les x minutes même si l’ip n’a pas changée et d’autre part, cela me permet de connecter mon PI sur n’importe quel site sans me soucier de savoir si la box permet l’update. Cela permet aussi d’avoir plusieurs domaines dynamiques. Le petit plus est une page web qui donne l’adresse du dyn.dns ainsi que la date et l’heure du dernier changement d’ip et surtout l’avantage ultime de tout avoir dans un seul et même projet sans dépendre de rien d’autre que de nodejs.
En fait, si je mets ce script c’est plus pour son coté didactique qui vient complémenter le tuto en donnant un exemple concret de 3 nouveaux npm qui sont ‘dns’, ‘request’ et ‘events’ ainsi qu’une méthode qui permet d’écrire des objets avec évènements dans des fichiers séparés.
L’objet créé utilise son propre timer et à chaque opération, il déclenche un évènement qui est interprété par le script principale. Dans l’exemple avec la page web fournie, à chaque réception d’un évènement de l’objet, le script principale transmet les données aux clients web sur un socket pour la mise à jour dynamique des pages. L’objet expose aussi 3 fonctions (check, run et stop) que le client peut exploiter pour dialoguer avec l’objet.
Le fichier dynip.js et le fichier dynip.html sont dans le zip ainsi qu’un fichier dynip.txt qui contient les explications pour la mise en œuvre.
Voici le code concret que j’utilise pour mon DynHost OVH et l’aperçu de la page web qui va avec.
- dynip_ovh.png (39.36 Kio) Vu 8463 fois
- dynip.png (23.34 Kio) Vu 8463 fois
On voit que l'ip dynamique à changée ce matin à 11h10 et que le 'timer control' est actif
Bon dimanche