:: Enseignements :: ESIPE :: E3INFO :: 2008-2009 :: Programmation Objet avec Java ::
[LOGO]

GeoLoc Traceroute


Le but de ce projet est d'afficher un ensemble de routes obtenues avec la commande traceroute (ou tracert) sur un globe terrestre. Les bases de données gratuites de geolocalisation ne donnant pas des résultats très pertinents, l'utilisateur devra de pouvoir choisir quel service de geolocalisation il souhaite utiliser parmi un ensemble de services existants.

Ce que doit faire le projet

Le projet doit exécuter en concurrence un ensemble de traceroute sur un ensemble d'adresse IPs (ou nom de machines), geolocaliser les adresses IP de chaque point de la route en utilisant un service externe et afficher chaque point avec sa route sur un globe terrestre.
Le projet doit tourner sous Linux et optionnellemenent sur les plateformes MacOS, Solaris et Windows.

Étude technique

Une partie de l'étude technique à déjà été faite ici :
A part les bibilothèques sus-nommées, vous ne devez pas utiliser d'autres bibliothèques trouvez ça et là sur le Net.

Ce qui vous reste à faire

  • Gérer la commande traceroute pour obtenir des routes
  • Intégrer les deux systèmes de geolocalisation demandés dans une architecture commune
  • Écrire une application en ligne de commande permettant de relier les différentes parties

Gestion de la ligne de commande

L'application devra être capable de prendre en paramètre un ensemble d'adresses IP ou de noms d'hôtes, devra permettre de spécifier le service de geolocalisation voulu et devra afficher les résultats sur le globe terrestre.

Votre application devra être livré sous forme d'un jar exécutable.

Spécification des options de la ligne de commande

Exemple :
java -Djava.library.path=lib/worldwind -jar lib/geoloc-traceroute.jar -geoloc hostip www.google.fr www.google.cn

Gestion de la commande traceroute

L'application devra exécuter la commande traceroute ou utiliser les appels systèmes équivalents. L'utilisateur pourra agir sur le nombre de maximal saut (hop) et le temps maximal (timeout) d'attente de réponse pour chaque saut.

Il est important que l'affichage sur le globe se fasse dès que les données du traceroute sont accessibles. Il est donc important de récupérer les données au fur et à mesure que celles-ci sont produites.

Gestion de la geolocalisation

Pour GeoIP de MaxMind, la base de données de geolocalisation est située dans le fichier GeoliteCity.dat qui devra être mis à la racine du répertoire. Les classes Java permettant d'accès à cette base de données sont regroupés dans l'archive Java: geoip.jar.

Pour HostIP, HostIP est un service Web basé sur HTTP et dont le format de sortie choisi sera XML. Il faudra donc émettre une requête HTTP en Java et utiliser un parseur XML pour extraire les informations pertinentes du résultat. Il existe plusieurs types de parseur disponible en Java. Il est demandé d'utiliser l'implantation disponible dans le JDK 1.6 de la spécification SAX.

Gestion de l'affichage sur un globe

La partie interface graphique a déjà été écrite. La classe GlobeDisplay agit comme une facade par rapport à l'API de WorldWind et gère aussi la concurrence des traitements. Vous devez uniquement utiliser cette classe pour la partie interface graphique.

Règles d'utilisation des bibliothèques

Votre projet dépend de bibliothèques dont voici les règles d'utilisations. Les sources des bibliothèques sont fournis uniquement pour votre compréhension et ne doivent être recopiés ou modifiés en aucune façon. Les archives Java (jar) fournies ne doivent pas non plus être modifié Le jar que vous devez fournir ne doit pas contenir des classes présentent dans les jars fournis.

Conditions de rendu

Le projet doit être rendu au plus tard le 7 juin à 23h59.

Le projet est à rendre par mail aux enseignants de la matière avec dans le corps du message les noms et prénoms de chacun des membres du binôme. Le format de rendu est une archive au format zip (tout rar, tar.gz, 7z et autre ne sera pas ouvert) contenant:
  • un répertoire src contenant les sources du projet
  • un répertoire docs contenant le manuel de l'utilisateur (user.pdf) et le manuel qui développeur (dev.pdf) au format PDF
  • un répertoire docs/api vide dans l'archive et qui contiendra la javadoc
  • un répertoire classes vide dans l'archive et qui contiendra les classes une fois compilées
  • un build.xml qui permet de
    • compiler les sources (target compile)
    • créer le jar exécutable (target jar)
    • compiler et créer l'exécutable (target all)
    • générer la javadoc dans docs/doc (target doc)
    • nettoyer le projet pour qu'il ne reste plus que les éléments demandés (target clean)
  • un répertoire lib contenant les bibliothèques dont a besoin votre projet pour fonctionner.
  • un jar exécutable geoloc-traceroute.jar dans le répertoire lib.

Cette archive zip aura comme nom Nom1Nom2_geoloc-traceroute.zip, où les noms sont ceux des membres du binôme par ordre alphabétique. L'extraction de cette archive devra créer un répertoire de nom Nom1Nom2_ geoloc-traceroute pour contenir tous les éléments demandés ci-dessus.

Notation

Cas de 0 sans aucune correction:
  • projet envoyé après la date (ferme).
  • projet ne compile pas
  • projet non envoyé à TOUS les chargés de TDs (AUX BONNES ADRESSES !)
  • mail ne contenant pas les noms et prénoms de chacun des membres du binôme
  • réception d'une archive qui n'a pas comme nom Nom1Nom2_geoloc-traceroute .zip, où les noms sont ceux des membres du binôme par ordre alphabétique
  • fichier d'archives dont l'extraction ne produit pas un répertoire dont le nom est geoloc-traceroute
  • fichier d'archive foireux (vérifiez le et mettez vous en copie du mail)
  • l'absence de Javadoc (une seule méthode/classe suffit)
  • le jar geoloc-traceroute.jar n'est pas exécutable
  • l'execution avec -help ne marche pas

Base de la notation:
  • le code marche et fait ce qu'il faut
  • la propreté et la lisibilité du code auront un poids très important dans la note
  • la présence de code inutile
  • les différents rapports et, par conséquent, l'orthographe !
  • la soutenance (vous en êtes les acteurs...)

Références

Eclipse :
www.eclipse.org
http://www.forax.org/ens/java-avance/cours/pdf/Eclipse%20pour%20les%20null.pdf

Accéder à une ressource à partir d'une URL :
les classes java.net.URI, java.net.URL et java.net.URLConnection

Parseur XML (SAX/DOM) :
http://java.sun.com/javase/6/docs/technotes/guides/xml/index.html

Expression régulière en Java (piquée à Perl) :
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

ANT
http://ant.apache.org/