next up previous contents
Next: Globe : Nicolas Up: Trace-Route Previous: Graphiquement   Contents

Whois : Simon

Dans Delphi, il existe un groupe de composants Indy qui permettent l'utilisation de nombreux protocoles Internet, nous avons donc décidé d'utiliser le composant WhoIs client de Indy car même si l'implémentation d'une demande à un serveur WhoIs n'est pas très compliquée, nous n'avions pas le temps de le faire. Ce composant permet de se connecter sur un serveur WhoIs de notre choix puis de faire une demande de renseignements sur un nom de domaine ou une adresse IP, un String contenant de nombreuses informations sur le site nous est alors renvoyé.
Nous sommes allé sur de nombreux serveurs WhoIs et nous avons trouvé que le meilleur était whois.uwhois.com car c'est celui qui permettait d'avoir des renseignements sur beaucoup de sites (.com,.net, .edu ...) et qui générait des réponses avec de nombreux renseignements, écrits assez lisiblement, ce qui facilite ensuite le parcing de la réponse, on a donc mis ce serveur par défaut, cependant l'utilisateur pourra en choisir un autre.
On a ensuite testé quelques sites connus français et étranger et on a vu que à chaque fois le nom du pays où était situé le serveur se trouvait était représenté par un code sur deux lettres (par exemple FR pour la France et US pour les État-Unis ...). Il nous fallait donc pouvoir associer les codes de tous les pays avec le nom du pays et sa position géographique, puisque pour pouvoir dessiner le serveur sur notre globe, il nous faut la longitude et la latitude du pays. En cherchant sur Internet nous avons trouvé les sources de Xtrace-Route, un Trace-Route pour Linux, les sources étaient incompréhensibles puisqu'elles étaient écrites en C et beaucoup trop volumineuses (de toute façon notre trace route marchait déjà) mais nous avons trouvé dans un des fichiers sources un tableau comportant toutes les données dont on avait besoin. Il a donc fallu remplacer quelques caractères pour qu'il soit lisible par le compilateur Pascal et de créer un tableau d'enregistrements avec toutes ces données.
Pour parcourir le texte que nous à renvoyé le Whois, nous avons choisi une méthode de pointeur sur caractère, ce qui nous donne une plus grande souplesse et surtout une amélioration de la vitesse de parcours.
Nous avons remarqué que les codes des pays étaient entourés d'un caractère de saut de ligne, d'un espace ou d'un tiret, ce que nous appellerons par la suite caractères délimiteurs. Il nous a donc fallu implementer un parser qui recherche un de ces caractères délimiteurs, ensuite de regarder si les deux caractères suivants sont des lettres en majuscules et que le troisième soit un autre caractère délimiteur, si toutes ces conditions sont remplies il faut alors chercher dans le tableau des pays le code d'identification du pays et ensuite de sortir toutes les données correspondantes à ce pays. Pour optimiser le parser, nous avons décider de transformer la réponse du serveur qui est au départ un String en un PChar, ensuite le parser utilise un pointeur sur caractère pour examiner tout le texte de la réponse.
Le problème était que sur certains sites, le parser nous renvoyait plusieurs pays, cependant on a remarqué que le pays où était situé le serveur revenait plusieurs fois dans les réponses, on a donc décidé d'augmenter l'enregistrement du tableau contenant les pays par la donnée fréquence. Au lieu de donner la réponse, le parser incrémente la fréquence du pays trouvé, il suffit alors à une autre fonction de rechercher quel pays a la plus importante fréquence, ce pays est alors celui qu'il faut dessiner sur le globe.
Lors de nos tests, nous avons souvent eu des problèmes de connexion sur le serveur WhoIs, il mettait du temps à répondre et on ne peut rien faire pour l'accélérer. Nous avons donc décidé de séparer le ``tracage'' d'un ordinateur et les demandes de WhoIs. Donc quand on clique sur Tracer on a les réponses sous forme texte qui s'affichent dans une fenêtre, et quand on clique sur dessiner, on transforme les données pour pouvoir les afficher sur le globe.
Par exemple, lorsque l'on effectue une recherche de WhoIs sur hotmail.com, on obtient une réponse, comme vous pouvez la voir dans l'annexe. De cette réponse, notre WhoIs répond :
latitude : 38,53 longitude : -77,02 code : GOV nom : US Government
A partir de cette réponse, on peut donc tracer le chemin prit par le paquet.
next up previous contents
Next: Globe : Nicolas Up: Trace-Route Previous: Graphiquement   Contents
root 2002-06-23