Bonjour,
J'ai conçu un projet que j'ai développé au début à des fin personnelles et que je souhaiterais faire partager.
PROBLEMATIQUE :
Je suis en IP dynamique et je possède un serveur sur lequel j'héberge toute sorte de service. D'autre part je possède un nom de domaine chez Online.fr (bookmyname).
Le problème a été que quand mon IP externe change, mon nom de domaine doit pointer vers ma nouvelle adresse et ma configuration de BIND doit aussi être modifiée.
Je sais qu'il y a déjà une multitude de projet qui effectue cette synchronisation d'IP, mais ce que j'ai mis en avant (ou que l'essaye) c'est le regroupement de doutes ces fonctionnalités, en y ajoutant une configuration plus simple, la synchronisation de la configuration des serveurs DNS comme Bind et MyDNS.
Tout d'abord, j'ai commencé par écrie un script en PERL exécuté avec Cron et après 3 ou 4 grosses restructurations, voilà ce que ça donne :
J'ai écrit une commande en C++ capable de mettre à jours les donnée locales et distantes, de se comporter comme un service pour "s'exécuter elle même" périodiquement et et synchronisez les informations en cas de besoin. Cette commande emploie une configuration fichier pour accéder à une base de donnée où se trouve la quasi-totalité de la configuration.
En général :
support des SGBDs : MySQL, PostgreSQL, SQLite (v3)
plate-forme : Linux
gestion multi domaine
Mise à jour de la configuration fichier des serveurs DNS locaux ex: BIND (Optionnel)
Mise à jour de la configuration du serveur DNS MyDNS (MySQL ou PostgreSQL) (Optionnel)
Mise à jour des informations distantes sur les registras (règles de synchronisation) (Optionnel)
La base de donnée comporte :
Table des paramètres généraux
Table des domaines
Table des règles de synchronisation
Table de liaison : Domaine <-n---n-> Règle de synchronisation
Règles de synchronisation :
Online.fr
Zoneedit.com
Dyndns.org
et bien d'autres à venir ...
support de commande perso
Langues :
Anglais (Hmm : a besoin certainement d'un petit stage de correction... ;-))
Français
Bibliothèques :
libcurl (avec ssl) (7.15.4)
libmysqlclient (5.0)
libpq
libsqlite3
Il y a d'autres fonctionnalités. Ce service est très personnalisable et très souple.
Étant donné sa complexité j'ai créé un programme d'administration kgesconnexmin (avec Qt3) qui tourne sous KDE (linux) et sous windows, on peut donc l'administrer à distance.
Kgesconnexmin n'est disponible que en français, mais je pense par la suite le porté sur Qt4 avec l'anglais en natif.
VOILA !
Si ça intéresse quelqu'un, qu'il me contact, et donc au cas où ça intéresserait du monde je le distribuerais , ferais une doc, assistant d'installation, etc ... Mais avant ça j'ai quelques petites corrections à effectuer et quelques conseils et observations à demander...
contact : emericv_at_gmail.com (_at_=@)
# je vais etre chiant mais ...
Posté par NeoX . Évalué à 1.
pourquoi ne pas acceder directement à la base de donnée
ou carrement lire la configuration dans le fichier texte (du coup modifiable par script, par editeur de texte, par ton logiciel)
sinon c'est une bonne idée de projet.
[^] # Re: je vais etre chiant mais ...
Posté par Emeric . Évalué à 1.
Et pour cela, il n'y a pas vraiment d'autres moyen que de le mettre dans une config texte
Cependant tu viens de me donner une idée : il est envisageable que l'utilisateur puisse rajouter ces infos en argument si il veut, ce permettrait de ne pas être dépendant du fichier de config ...
[^] # Re: je vais etre chiant mais ...
Posté par Emeric . Évalué à 1.
un autre avantage que j'ai oublié de citer : le fait de stocker la config dans la base de donnée, c'est qu'elle est administrable à distance.
D'autre part l'architecture de la configuration est beaucoup trop compliquée pour être stockée dans un fichier texte. Cependant j'ai prévu un support du SQLite pour un utilisateur qui n'aurait pas envie de mettre en place un SGBD comme MySQL ou PostgreSQL juste pour ça !
[^] # Re: je vais etre chiant mais ...
Posté par NeoX . Évalué à 1.
ensuite tu peux scripter du PHP/perl ou autre langage pour faire une interface de gestion qui modifie directement le fichier texte.
plutot que de scripter pour acceder à une base de donnée pour y mettre les infos
puis scripter pour lire la base de donnée et envoyé les infos aux fournisseurs (dyndns ou autre)
car j'ai cru comprendre que c'etait le but de ton projet.
enfin la base de donnée peut venir en complement
1°) faire le projet avec un fichier texte de configuration pour les parametrages IP/DNS à mettre à jour
ca permet de faire un socle pour tout ce qui concerne la communication avec les serveurs (dyndns, mydns, no-ip)
2°) augmenter la difficulté en ajoutant le support d'une base de données afin de gerer plusieurs IPs et plusieurs nom de domaine.
3°) la seule et principale difficulté sera de se connecter au site du fournisseur pour lui transmettre les infos et donc de connaitre la syntaxe que ce dernier attend.
pour certains un simple appel en http/https avec les bons parametres devrait suffir.
pour d'autres cela peut etre plus tordu.
[^] # Re: je vais etre chiant mais ...
Posté par Emeric . Évalué à 1.
Ceci dit l'accès à une base de donnée SQLite est très rapide, d'autant plus que c'est une base de donnée qui tient dans un seul fichier :
-> petit, donc meilleurs performance que MySQL ou PostgreSQL
-> compact, en un seul fichier, donc facilité d'installation et de maintenance
Un des principals atouts du libre c'est sa diversité !
[^] # Re: je vais etre chiant mais ...
Posté par Emeric . Évalué à 1.
Ma principale ressource, c'est l'auto formation. C'est principalement en codant des truc qui servent à rien ou presque dont ce projet qui, avec un peu de recul, et pour la majorité des personnes susceptible de l'utiliser, pourrait être considéré comme "un canon pour tuer une mouche".
Seulement voilà, quand je code, je me dit "et si l'utilisateur voulais faire ça, et si l'utilisateur voulais faire ça..." et donc au bout d'un moment je me retrouve avec une montagne de sources... Enfin bon ... Même si personne n'est intéressé, je ne regrette rien, étant donné ce que j'ai appris !!!
Actuellement je suis en train de tâter le terrain afin de chercher une autre idée de projet ...
D'ailleurs : si quelqu'un a une bonne idée, je suis preneur :-)
En attendant je suis en train d'installer une gentoo sur mon serveur AMD64x2 pour remplacer la bonne vieille Debian (eh oui, je suis un maniaque des choses minutieuses, personnalisables et bien faites ;-) )
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.