WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Stage Erasme: Visualisation de Réseaux


par Cédric TEMPLE
UNIVERSITE DE VALENCIENNES ET DU HAINAUT CAMBRESIS - Master Informatique Première Année 2003
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Copyright (c) Cedric TEMPLE

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU

Free Documentation License".

Stage de Master 1 Informatique

TEMPLE Cédric.

Responsables : M. BLANC Michel (ERASME) et M DELOT Thierry
(UVHC-ISTV)

Résumé

Ce rapport présente le travail effectué lors du stage réalisé dans le cadre du Master Informatique Première Année à l'Université de Valenciennes et du Hainaut Cambrésis, Institut des Sciences et Techniques de Valenciennes(Nord) sous la tutelle de Monsieur DELOT Thierry. Ce stage a été fait à ERASME, le service des Technologies de l'Information du Département du Rhône, sous la direction de Monsieur BLANC Michel, Ingénieur Systèmes/Réseaux.

Il sera présenté dans ce document la mission ERASME ainsi que les différents projets auquel elle participe. Puis la problématique du sujet, suivi du développement. Enfin les conclusions et les perspectives seront présentées.

Remerciements

Je tiens à remercier particulièrement Monsieur BLANC Michel pour m'avoir fait confiance, m'avoir permis de travailler avec autonomie, m'avoir proposé ce sujet, de m'avoir conseillé et aidé lorsque des problèmes se posaient.

Je voudrais remercier aussi Monsieur LACROIX Daniel pour d'avoir pris sur son temps pour développer une bonne partie du serveur, d'être resté disponible lors de mes questions sur la base de données et sur le langage PERL.

J'aimerais remercier aussi l'ensemble des personnes qui travaillent à ERASME pour leur accueil et leur gentillesse.

Merci au personnel du Centre d'hébergement et au Conseil Général du Rhône pour m'avoir hébergé gratuitement au Centre d'hébergement et avoir toléré ma présence, même le week-end et les jours fériés.

Table des matières

I Présentation d'ERASME 5

1 Infrastructure 7

1.1 Le Centre Serveur Départemental 7

1.2 Le Centre d'hébergement 8

1.3 Le Centre de Formation 8

2 Les projets d'ERASME 9

2.1 Laclasse.com: un portail éducatif 9

2.2 ProjetHartur 9

2.3 Désenclavement avec le Wifi 10

2.4 Arbresdeconnaissances 10

2.5 Autresprojets 12

II Description de l'outil 13

3 Buts/Objectifs 14

3.1 Présentation 14

3.2 Problèmes 14

3.3 Buts à atteindre 16

4 Présentation de l'environnement 17

4.1 Base de données 17

4.2 Langage de développement 17

4.3 Système d'exploitation 17

4.4 Outils de développement 18

4.4.1 argoUML 18

4.4.2 Poséidon for UML 18

4.5 Navigateurs Web 19

4.6 Editeur de texte 19

III Architecture de l'outil 21

5 Côté serveur 23

5.1 Description de la partie serveur 23

5.2 Adaptation de la partie serveur 23

5.2.1 Le fichier de configuration 23

5.3 Intégration des requêtes Whois 26

5.3.1 Description de whois 26

5.3.2 Intégration de whois au serveur 29

6 Côté client 30

6.1 Description de l'interface 30

6.1.1 Visualisation des sous-réseaux 30

6.1.2 Affichage des informations d'une plage 32

6.1.3 Recherche de plages libres 32

6.1.4 Recherche de plages selon un filtre 33

6.1.5 Navigation dans la partie visualisation 33

6.1.6 Historique 33

6.2 Architecture du client 33

6.2.1 Outils pour l'interface 34

6.2.2 Interface Graphique 36

7 Perspectives 40

7.1 Implémentation d'un cache 40

7.2 Différentes visualisations 40

7.3 Ajout des plugins côté serveur 40

8 Conclusion 41

IV Annexes 42

Première partie

Présentation d'ERASME

ERASME est une mission du Conseil Général du Département du Rhône pour le développement des Nouvelles Technologies de l'Information. Créé en 1999, sur le canton de communauté de communes de Saint Laurent de Chamousset, à Saint Clément les Places, au coeur des Monts du Lyonnais, le Centre Multimédia ERASME a pour mission le déploiement des nouvelles technologies de l'information dans le département du Rhône. Mais sa fonction ne s'arrête pas là et il sera présenté les projets auxquels il participe.

Chapitre 1

Infrastructure

Les Autoroutes Rhodaniennes de l'Information sont constituées d'un réseau hybride fibre/coaxial sur 289 communes du département. Ne font pas partie du projet les communes déjà dans le plan câble et desservies par d'autres technologies à haut débit (Lyon, Villeurbanne, Bron, Saint Priest, St Fons, Décines, Meyzieu) et des communes n'ayant pas souhaité adhérer au projet (St Germain au mont d'or, Arnas, Riverie, Jons). Le réseau opéré par UPC [UPC] apporte au moins un point de livraison optique par commune et couvre au moins 70 % des foyers en zone rurale. La téléphonie, la télévision et l'Internet à haut débit sont les trois services fournis. Il existe donc déjà une forte capillarité de déserte à haut débit sur le Rhône. Les batiments publics raccordés sont les services des communes et du département: mairies, Maisons du Rhône (MDR : décentralisation des services offerts par le département), les bibliothèques, les collèges (97) et les écoles (700).

1.1 Le Centre Serveur Départemental

Aussi appelé Centre Multimédia, il fait office de serveur de ressources brutes: images, sons, vidéos; de documents multimédias pédagogiques (les enseignants ont leur propre page personnelle où ils peuvent déposer leurs documents et supports de cours qui seront consultables par les élèves, voir [lac]); d'un moteur de recherche; d'un proxy Internet et d'un serveur de messagerie. Une salle de formation et un amphithéâtre permettent d'accueillir des personnes en formation. Une salle d'accès libre permet aux habitants des communes alentour d'avoir un accès Internet.

ERASME est chargé du support technique aux différents établissements mais aussi de la mise en place ou de l'aide à la mise en place de différents services comme une radio Intranet, un journal de classe, publications de connaissances; le routage Internet est aussi assuré.

Une autre partie de la charge ERASME se trouve dans la veille technologique et le test de nouvelles technologies. Un exemple de ceci est les tests actuellement effectués sur le Wifi pour la mise en place de points d'accès ainsi que leur sécu-

risation et leur suivi. Le but général de ERASME est le développement rural des TIC dans tout le département du Rhône.

1.2 Le Centre d'hébergement

Situé à proximité du Centre Multimédia, le Centre d'hébergement permet d'accueillir des personnes effectuant une formation au Centre de Formation ainsi que les stagiaires. Composé de 60 chambres individuelles et d'un service de restauration sur place, il augmente les possibilités de formation d'une durée importante (plusieurs jours) et permet un bon accueil des stagiaires.

1.3 Le Centre de Formation

Le Centre de Formation se situe juste à côté du Centre d'hébergement. A l'intérieur, il y a un amphithéâtre de 80 places avec double rétro-projecteur, deux salles informatiques pour des travaux de groupes (quinze personnes) et deux salles de travail libre.

Les formations sont ouvertes à tous, professeurs, élus, personnels du Conseil Général ainsi qu'à toute personne ou groupe de personnes le demandant. Les formations sont diverses et vont des bases de l'informatique avec Internet, le courrier électronique, Star Office jusqu'à la mise en place d'un site Web, le traitement de l'image, PHP , la pratique de la réalisation vidéo en studio, l'administration de Windows 2000.

Chapitre 2

Les projets d'ERASME

2.1 Laclasse.com: un portail éducatif

Laclasse.com ([lac]) est un portail éducatif exploitant les ressources du haut débit pour fournir aux enseignants et élèves une bibliothèque multimédia, des outils de communication et de publication. Hébergé par le Centre Multimédia, il permet la mutualisation des moyens et l'accès à des contenus en ligne, facilitant l'autoformation des élèves et des enseignants. Les personnes y ayant un accès total sont les enseignants des collèges et écoles du département du Rhône ainsi que les élèves de ces établissements. Les contenus libres de droit sont consultables par tout internaute en se loguant sous le nom «demo» et le mot de passe «demo». Les établissement extérieurs au département peuvent demander un compte à titre expérimental.

Les contenus (cartes, textes, sons, ...) peuvent être utilisés comme support de cours, comme rapports d'expériences pédagogiques ou auto-formation des enseignants. Les enseignants peuvent ainsi s'échanger des cours ou des plans de cours, les élèves peuvent publier leurs recherches pour leur classe, participer à des discussions avec des élèves d'autres classes. Les parents d'élèves peuvent consulter l'agenda de la classe et entrer en contact avec les enseignants.

2.2 Projet Hartur

Hartur signifie: «Hypermédia d'Archives Régionnales d'Actualités Télévisées sur l'Urbanisme dans le Rhône». C'est un projet mis en place par le département du Rhône, l'Institut National de l'Audiovisuel (INA) et le Centre Régional de Documentation Pédagogique (CRDP) de Lyon à destination des 160 collèges du Département du Rhône. Il permet la consultation en ligne d'une cinquantaine d'extraits de films vidéo sur le thème de l'architecture et de l'urbanisme. Ce service s'appuie sur une technologie innovante de navigation, «Hypermédia», développée par l'INA, qui permet d'indexer et de consulter de manière interactive et est hébergé au Centre Multimédia. L'indexation est organisée pour pouvoir accéder directement au passage pertinent à l'intérieur d'un document vidéo et de pouvoir naviguer dans cette

vidéo. L'utilisateur final peut réaliser une production simple et la stocker ainsi que les commentaires sur les résultats de sa recherche dans un espace qui lui est alloué. Le contenu pédagogique a été réalisé sous la responsabilité du CRDP de Lyon, en liaison étroite avec le Centre Académique de Ressources pour l'Informatique Pédagogique qui relève du Rectorat.

2.3 Désenclavement avec le Wifi

Du fait des limites d'extension physique du réseau câblé, des lieux-dits et des foyers en zone rurale ne seront pas desservis par le câble. ERASME étudie la possibilité de connecter ses différents lieux en Wifi (voir la figure 2.3 page 11 tiré du document «présentation_projet_wifi.doc» sur le site [era]). L'étude des sites à desservir a permis de dégager des caractéristiques générales:

- l'existence d'un nombre important de zones à étendre

- l'existence à l'intérieur de chaque zone d'un nombre relativement faible de clients finaux

- la possibilité de liaison avec un point câblé du réseau départemental situé dans la quasi totalité des cas à moins de 3 kilomètres.

Comparée à d'autres technologies, le Wifi répond le mieux aux besoins:

- coût de déploiement limité et évolution aisée (multiplications des infrastructures)

- bande passante partagée suffisante pour un petit nombre d'utilisateurs

- portée de liaison suffisante (un test sur deux kilomètres a été effectué au Centre ERASME en mai 2002)

- le Département souhaite s'engager dans une voie innovante sur le plan technique et collaboratif.

Des tests sont actuellement effectués pour l'installation et la configuration des matériels, la mis en place d'une politique de sécurité (définition d'une liste d'adresses MAC autorisées à se connecter, cryptage des données via une clé WEP 64 ou 128 bits, tunneling IP SEC, adjonction d'un serveur d'authentification), ainsi que la meilleure localisation pour placer l'antenne, les combinaisons

points d'accès/antennes les plus performantes.

Unejournée spéciale wifi était organisée le samedi 14juin, intitulée «Wifi, c'est parti !», où les maires de communes ainsi que le public pouvaient s'informer sur le matériel, la mise en place et la sécurité d'un réseau wifi. Une conférence sur les généralités du wifi et une, un peu plus technique, sur la sécurité, ont été présentées par des membres de l'association «wireless Lyon» ([wir]) et l'on pouvait participer à des ateliers comme la fabrication d'une antenne.

2.4 Arbres de connaissances

ACNE [acn] signifie «Arbres de Connaissances pour une Nouvelle Ecole». Michel AUTHIER et Pierre LEVY, mathématiciens, sociologues et chercheurs, ont

3

4 5

1

2

CHAPITRE 2. LES PROJETS D'ERASME 11
FIG. 2.1 - Exemple de raccordements wifi

mis au point le principe appelé "arbre des connaissances" et l'outil informatique permettant seul de réaliser la gestion globale des connaissances, des compétences et de la formation dans les organisations (communautés scolaires ou territoriales ou sociales, entreprises ....). Un arbre de connaissances permet de faciliter l'échange réciproque de savoir entre individus et de situer l'ensemble des ses connaissances par rapport au groupe auquel il appartient. Le but est de constituer progressivement les arbres des différentes communautés concernées, à savoir:

- l'arbre de chaque classe,

- l'arbre de chaque école,

- l'arbre de chaque communauté éducative (parents, enseignants, ...)

- l'arbre de chaque village, quartier, environnement, canton ...

- l'arbre collectif de plusieurs sites (classes uniques, réseau, ...)

- l'arbre collectif de tous les sites.

2.5 Autres projets

Le projet Olivier est un projet qui associe le Conseil Général, l'Institut National des Sciences Appliquées de Lyon et Handicap International qui a pour but de favoriser la coopération en ligne entre plusieurs établissements d'enseignement spécialisé (pour des jeunes en difficulté ou porteurs de handicap).

Le projet «Apprendre le Net à l'hôpital», porté par Handicap International, vise à apporter aux personnes hospitalisées pour une longue durée une initiation à l'utilisation de l'Internet. Trois établissements hospitaliers du Rhône sont associés à ce projet.

Deuxième partie

Description de l'outil

Chapitre 3

Buts/Objectifs

3.1 Présentation

Le Centre Multimédia a développé un réseau auquel se connectent les écoles, mairies, collèges et d'autres infrastructures du département du Rhône. Des sous réseaux ont été constitués pour chaque «catégorie» d'infrastructure. Chaque catégorie a ensuite été subdivisée en un sous réseau pour une entité, comme par exemple le collège d'une commune.

Toutes les données de ce réseau sont dans une base MySQL. Le modèle entité/association de la partie de la base de données utilisées se trouve à la page 15.

3.2 Problèmes

Toutes les données de ce réseau sont dans une base MySQL. Cependant, toutes ces données sont «à plat» et il devient très difficile d'avoir une vue globale facilement compréhensible par un humain. L'appartenance d'un sous réseau à un réseau est très difficile à déterminer et il faut faire une recherche non pas sur l'adresse mais sur l'entité qui l'intègre. Par exemple, lorsque l'on veut savoir à quel réseau appartient le sous réseau Ecole de Saint Clément les Places, il faut effectuer une recherche sur le nom du sous réseau qui contient le terme «Ecole» et non sur l'adresse CIDR. Auparavant, cette recherche était effectuée suivant une table de correspondance, dans un manuel papier.

De même, la recherche d'une plage suivant un filtre doit s'effectuer avec une requête SQL directement. Il est obligatoire de se connecter à distance au serveur MySQL et de taper la requête. Ce qui est assez désagréable et entraîne une perte de temps, notamment lors d'une intervention sur un site. De plus, ne disposant pas de toute la documentation à disponibilité immédiate comme par exemple le diagramme Entité/Association de la base de données,il faut se souvenir précisément de ce diagramme.

Enfin, il est impossible de voir les plages libres (non affectées) à l'intérieur

Canton

Id Lib

Type _etb

1..n

Id

lib

dsc

Id

Nom cp

tel

web mail

Commune

Id lib

1

1..n

Etablissement

1

1..n

1

FIG. 3.1 - Modèle entité/association de la partie de la base de données utilisée

d'un sous réseau sans lister toutes les plages et calculer «à la main». Il manque donc un outil de visualisation représentant les sous réseaux, les plages libres d'une manière aisée et facilement interprétable. Un module de recherche des plages libres d'une taille donnée dans un sous réseau particulier permettra de vérifier aisément les «trous» dans un sous réseau. On pourra ensuite passer à la visualisation de ce sous réseau pour faciliter, en plus, l'interprétation.

3.3 Buts à atteindre

Le principal but à atteindre est la visualisation immédiate et aisément interprétable de tout le réseau et de ses sous réseaux. Le deuxième est la navigation à l'intérieur de ce réseau : pouvoir changer de plage, aller à la précédente et la suivante. Enfin des modules de recherche amélioreront l'utilisabilité du logiciel. L'ajout de fonctionnalités selon l'avancée du projet devra être le plus aisé possible.

Chapitre 4

Présentation de l'environnement

4.1 Base de données

L'environnement de départ repose sur une base de données existante. En effet, la base de données a été développée avant même l'idée de création de cet outil de visualisation. C'est d'ailleurs à la vue de la difficulté de visualisation des données contenues dans la base que l'idée de développer un outil de visualisation s'est faite sentir. Ensuite, l'extension vers tout l'Internet est venue naturellement. Ainsi, lors par exemple de vérification des fichiers journaux de serveurs, si une alerte apparaît avec l'adresse IP d'une machine ayant essayer de pénétrer de manière non autorisée, on peut visualiser les informations renvoyées par une requête whois . Le serveur est MySQL dans sa version 3.23.x.

4.2 Langage de développement

L'outil devant être le plus accessible, quel que soit le Système d'Exploitation, le responsable de stage a demandé à ce que l'outil soit une applet, donc une application écrite en langage Java et pouvant être utilisée depuis un navigateur Web compatible avec le langage Java. En effet, l'utilisateur final de l'outil sera peut être amené à intervenir sur des sites distants et il devra avoir accès à cette application, les applets sont donc l'outil idéal pour ce genre d'utilisation.

4.3 Système d'exploitation

Le Système d'Exploitation de la station sur laquelle a été écrite le logiciel est laissé libre au choix du stagiaire. Il a été choisi une distribution Linux, environnement utilisé le plus par le stagiaire lors de ses études. Tous les outils sont laissés libres. Ce libre choix est un point très positif, notamment cela permet de s'intégrer très rapidement car l'on s'habitue beaucoup plus rapidement à son environnement de travail.

4.4 Outils de développement

Différents outils de développement ont été utilisés. Pour la modélisation en UML du logiciel, deux outils ont participé, argoUML (voir [arg]) dans sa version 0.12 et Poséidon for UML ([gen]) dans la version Community Edition 1.6.1. Un éditeur de texte pour taper le code source : emacs([ema]). Différents navigateurs Web pour les tests de l'applet : Mozilla ([moz]), Netscape([net]) et Galeon([gal]). Ces navigateurs ont aussi servi à consulter la documentation disponible sur Internet.

4.4.1 argoUML

argoUML est un outil de modélisation UML. C'est un Logiciel Libre, sous licence BSD ([bsd]). Ce logiciel a été pour la première fois utilisé pour les travaux pratiques dans le cadre du cours de Génie Logiciel de M Kolski, travaux pratiques encadrés par M Adam. Lors de ces premières utilisations en TP, de nombreux problèmes sont apparus au niveau graphique comme par exemple les onglets qui grandissaient lorsque l'on ajoutait des paramètres aux fonctions ou qu'on modifiait leur type et un redémarrage de argoUML était nécessaire. Ce problème était peut être dû au langage Java lui même (voir paragraphe sur Poseidon for UML). Cependant lors du stage, après avoir téléchargé sur le site et installé la dernière version du logiciel, ses problèmes ne se sont pas présentés.

Mais d'autres sont apparus. Un onglet permet de documenter chaque méthode, chaque attribut et l'intégrer directement au code source lors de la génération du code. Lors de la sauvegarde et de la restauration du fichier cette documentation avait tendance à disparaître, ce qui est gênant voir frustrant. Lors de la génération de code, si le fichier était déjà présent sur le disque, le logiciel tentait de «corriger» ce fichier en y ajoutant ou supprimant ce qu'il fallait. Cependant, ce fichier n'était alors pas syntaxiquement correct (la compilation ne réussissait pas). Ce problème ne se posait pas lorsque le répertoire de destination était vide. De même de temps à autre, lors d'une tentative de chargement le fichier de sauvegarde se retrouvait corrompu, il fallait alors importer depuis les sources. Ce n'était pas un gros problème lorsque l'on pensait à générer le code source dans un répertoire vide après avoir sauvegardé. Ces problèmes devenant vite difficiles à gérer lors du développement, il a été décidé de se tourner vers un autre outil.

4.4.2 Poséidon for UML

Poséidon for UML est un outil de modélisation UML comme argoUML. Poséidon est en fait basé sur la version 0.9.4 d'argoUML, mais il faut noter que les architectures diffèrent et les modifications apportées sur argoUML ne sont pas directement intégrables dans Poséidon. La version utilisée est la version gratuite, la «Community Edition». Les différences avec argoUML se situent au niveau de la stabilité principalement et des fonctionnalités. Cependant, les fonctionnalités uti-

lisées lors du stage sont aussi disponibles sur argoUML. La grande stabilité de Poséidon lui a donc permis d'être utilisé plutôt que argoUML.

A noter que Poseidon réclame au minimum la version 1.4.1 du JDK, malgré cela, son utilisation avec la version 1.4.2 pose quelques problèmes graphiques de dimensionnement, comme pour argoUML, mais ici c'est directement dans la fenêtre principale, lors de la sélection des classes, la taille du composant diminue et les noms des méthodes ne sont plus lisibles (pour ne pas dire qu'elles deviennent illisibles). Ce problème ne se pose pas avec le JDK 1.4.1. Poséidon connaît quelques problèmes d'import (lecture de code source) notamment sur les gros fichiers où, après avoir modifier le code de plusieurs fichiers, un import a été réalisé mais le logiciel a «perdu» des variables de classes et le code de certaines méthodes (les constructeurs d'objets).

4.5 Navigateurs Web

Différents navigateurs Web ont été testés pour vérifier que l'applet donnait les mêmes résultats. Les navigateurs de tests ont été Mozilla dans sa version 1.3, Nets-cape dans sa version 7.0 et Galeon, installé de base avec la Red Hat. L'applet s'est comportée de la même manière avec les trois navigateurs, même dans un problème rencontré. La description du problème est la suivante : au chargement de l'applet, lorsque l'on souhaite entrer du texte dans l'une des cases disponibles (un objet JTextfield), il est impossible de le faire directement sans changer tout d'abord de fenêtre. En effet, les navigateurs refusaient de mettre le focus dans la case correspondante, il fallait alors changer de fenêtre (donner le focus à un terminal ou un éditeur de texte par exemple) puis revenir dans le navigateur. Ce problème est maintenant réglé de manière complètement artificielle : l'applet étant signée car demandant un certains nombres de privilèges (comme lancer plusieurs threads ou se connecter à un serveur), juste avant la fin du chargement une fenêtre s'ouvre demandant si l'utilisateur souhaite faire confiance à l'applet. C'est l'ouverture de cette fenêtre qui règle le problème précédent. Il semble cependant que le problème ne soit qu'en partie réglé car lors du rechargement de l'applet, la fenêtre ne s'ouvre plus car l'utilisateur a déjà donné son accord pour le chargement de l'applet, ce qui implique qu'il faut alors sortir de la fenêtre puis y revenir.

Un autre petit problème vient de l'affichage de l'applet dans une fenêtre de taille maximale. En effet, à la demande du responsable, un bouton permet de «sortir» l'applet du navigateur et de la voir dans une autre fenêtre. Cependant, lorsque l'on maximise la fenêtre, les proportions des différents composants à l'intérieur de la fenêtre ne sont plus du tout respectées et l'affichage devient très désagréable.

4.6 Editeur de texte

Le code source peut être édité directement dans Poséidon. Cependant, Poséidon consommant de nombreuses ressources mémoire, l'ouverture d'un navigateur Web

pour consulter la documentation disponible sur le Web (l'API du JDK [API] sur le site de Sun) et de l'applet les ressources de la machine devenant vite très limitées. Un éditeur de code source se révèle donc plus léger mais aussi beaucoup plus fonctionnel, notamment pour l'indentation et la navigation entre différents fichiers. Emacs a donc permis l'édition du code source d'une manière bien plus aisée.

Troisième partie

Architecture de l'outil

L'outil est en fait séparé en plusieurs parties. La partie interface graphique et la partie interaction avec la base de données. Ces deux parties communiquent au travers le réseau de façon client/serveur. Il sera présenté dans cette partie l'architecture du serveur et l'architecture du client.

Chapitre 5

Côté serveur

5.1 Description de la partie serveur

Le serveur est écrit en langage PERL. Ce langage est «imposé«, car une grosse partie a été écrite par Daniel LACROIX, qui le maintiendra dans le futur et continuera à le développer si le besoin s'en faisait sentir. Daniel a commencé par écrire les fonctions de gestions des sous réseaux comme par exemple récupérer le masque du sous réseau, obtenir l'adresse de broadcast, tester si un sous réseau appartient à un réseau... Ensuite il a écrit les fonctions et procédures qui récupèrent les sous réseaux correspondant à un filtre de recherche; les procédures de communication et enfin le programme qui crée un nouveau processus à chaque demande de connexion. Cette première écriture a permis de développer rapidement l'interface graphique et d'avoir un premier outil disponible. Cependant, les possibilités d'extension et de configuration sont un peu limitées par rapport à ce que l'on souhaitait obtenir mais cela a permis d'analyser son code source et, ne connaissant pas Perl, d'obtenir un très bon point de départ pour la suite.

5.2 Adaptation de la partie serveur

La première chose à effectuer était de faire un fichier de configuration, facilement modifiable pour y incorporer un système de «plugins» . Ensuite ajouter les fonctionnalités qui n'étaient pas encore développées. Ce fichier de configuration doit être le plus facilement extensible et l'ajout éventuel de données ne doit pas influer sur le code, autrement que par l'ajout des outils nécessaires.

5.2.1 Le fichier de configuration

Perl se marie très bien avec XML (eXtensible Markup Language), c'est pourquoi ce choix s'imposait. De plus, XML permet de valider le fichier de configuration avec le mécanisme des Document Type Definition (DTD). La facilité de récupération des données est aussi entrée en compte et le choix d'un parser (outil

du langage permettant de parcourir le fichier et d'obtenir le contenu des balises tout en ayant la possibilité ou non de le valider) est conséquent. Perl fournit en effet de nombreux parsers tels que:

- XML : :Parser: parser non validant. C'est sur ce parser que sont basés la plupart des autres. Il est plutôt simple à utiliser. En effet, il suffit d'écrire deux procédures pour chaque balise : une procédure pour la balise ouvrante, cette procédure portant le même nom que la balise et une procédure pour la balise fermante portant le même nom que la balise, suffixée par le caractère «souligné ("_" ou "underscore"). Il est pas obligatoire de créer toutes les procédures. Ensuite il suffit d'écrire une balise appelé dans tous les cas non pris en compte. Cependant, il devient difficile à utiliser lorsque l'on veut avoir un groupe de noeuds. Son point fort est sa très grande rapidité.

- XML : :Simple : un parser développer essentiellement pour les fichiers de configurations, dont le but est d'être très simple d'utilisation. Cependant, il est encore en version bêta et non disponible dans la version standard donc il n'a pas été utilisé.

- XML: :SAX: l'implémentation de l'autre API standard du W3C. Alors que DOM est tourné vers la représentation du fichier XML sous forme d'arbre, SAX est tourné vers l'événementiel, comme XML: :Parser, ce qu'il fait qu'il est rapide par rapport à DOM tout en l'étant moins que XML: :Parser.

- XML: :DOM: l'implémentation de l'API standard définie par le W3C1.

Le fichier est représenté sous forme arborescente. On parcourt le fichier en

sélectionnant les noeuds que l'on souhaite et on travaille sur ces noeuds.

Le problème qui se pose avec cette représentation est que chaque retour à la

ligne est interprété et lorsque l'on parcours la liste des noeuds fils d'un noeud

particulier il faut vérifier le type du noeud pour s'assurer que ce n'est pas du

texte (la valeur du noeud). Un facteur limitant est la lenteur de ce parser,

mais pour le fichier de configuration, lu une seule fois lors du démarrage du

serveur, ce n'est pas important. C'est donc ce parser qui a été utilisé.

La première chose était de sortir les données stockées «en dur» (c'est à dire sous la forme d'une structure de données) dans le programme. Ces données n'existent pas dans la base car elles n'ont aucun sens réel. En effet, les réseaux ne sont pas rattachés à un établissement, ce qui implique qu'il aurait fallu représenter explicitement la notion de sous réseaux d'un réseau et donc cela aurait engendré des modifications trop importantes de la base de données. Ces données ont donc été stockées dans un fichier XML externe au fichier de configuration et une balise dans le fichier de configuration fait mention du fichier de données à parser.

Ensuite il fallait prendre en compte le cas où l'on pouvait avoir plusieurs bases de données complètement différentes. En effet, il se peut que plus tard la base soit «éclatée» sur plusieurs serveurs, il serait dommage de devoir étudier de nouveau le logiciel pour ce cas. On stocke donc dans le fichier le type du serveur (MySQL, Oracle, DB, ...), le nom ou adresse IP de la machine sur laquelle est lancée le ser-

FIG. 5.1 - Modèle entité/association No 1

Etablissement

Numero Subnet Numero NumRue Adresse Ville

 

FIG. 5.2 - Modèle entité/association No2

veur, son port de communication, l'identifiant et le mot de passe pour la connexion au serveur, la plage la plus grande contenue dans la base et les requêtes que l'on va effectuer. La plage la plus grande est une plage de la forme 172.0.0.0/4, par exemple, qui contient toutes les autres plages. Il se peut que certaines plages ne soient pas connues dans la base mais ce n'est grave, on fera une recherche, au pire, non utile mais ce n'est pas ce qui coûte le plus (ce sont les requêtes whois, voir plus loin). Les requêtes sont des requêtes SQL, qui possèdent chacune un nom pour une recherche donnée. Par exemple, une requête listant tous les sous réseaux portera le nom de «liste_subnets». Si la requête n'est pas définie, on n'effectue pas la recherche dans cette base. Toutes les requêtes de même nom doivent avoir le même format de «sortie», ce qui est très simple à faire en SQL. Un exemple permettra d'éclaircir ce qui a été dit précédemment. On cherche à obtenir toutes les adresses IP de deux bases distinctes. Les modèles entités/associations des deux bases sont donnés par les figures 5.2.1 et 5.2.1.

On écrit donc les deux requêtes pour chaque base; la première (figure 5.2.1 page 25):

SELECT subnet AS subnet_Lan,

numero as numero

FROM Etablissement

et la deuxième (figure 5.2.1 page 25):

SELECT

CONCAT(adresseIP.adresse, »/»,masque) AS subnet_Lan,

etablissement.numero AS numero

FROM etablissement, adresseIP

WHERE etablissement.numero = adresseIP.numero;

et on a ainsi en sortie deux résultats ayant les mêmes noms de colonnes et le programme peut utiliser les requêtes de la même manière. Le code Perl (mais se serait la même chose pour Java ou tout autre langage) reste identique et se base sur les noms de colonnes.

Actuellement il y a trois types de requêtes : une pour obtenir toutes les plages et leurs informations, une pour faire une recherche selon le nom du propriétaire et une pour faire une recherche sur le nom de l'enregistrant. Cependant, si l'on veut ajouter d'autres requêtes, il est inutile d'ajouter du code au parser. En effet, le parser et la structure du fichier XML sont étudiés pour que la requête soit directement stockée dans la structure de données et il suffit de récupérer le code de la requête en l'appelant par son nom. Pour ajouter une nouvelle requête, non encore étudiée, il suffit d'aj outer une balise au fichier XML dans la balise «requete», mettre à jour la DTD (il suffit juste de signaler le nom de la requête dans la liste des attributs de la requête) et prendre en compte la modification dans le fichier principal du serveur (traitement des communications et recherches). Il n'y a aucun besoin de modifier le parser, ce cas de figure est pris en compte.

5.3 Intégration des requêtes Whois

5.3.1 Description de whois

whois est un utilitaire permettant de récupérer les informations concernant une plage ou un nom de domaine. Cet utilitaire interroge les serveurs whois et affiche le résultat à l'écran. Les informations fournies sont: le nom du groupe qui a enregistré la plage; le nom du groupe auquel est enregistré la plage; la plage d'adresses; les différents contacts disponibles ;... Un exemple de requête sur un nom de domaine: whois erasme.org

Domain ID :D101339-LROR

Domain Name :ERASME.ORG

Created On :02-Jan-1 99705 :00 :00 UTC

Last Updated On :05-Jun-2003 16 :44 :26 UTC

Expiration Date :01-Jan-2005 05 :00 :00 UTC

Sponsoring Registrar :R54-LROR

Status :OK

Registrant ID :ER11162-NBAY

Registrant Name :MARTIN YVES-ARMEL

Registrant Organization :ERASME

Registrant Street1 :29-31, COURS DE LA LIBERTE

Registrant City :LYON CEDEX 03 Registrant State/Province :FR Registrant Postal Code :69483 Registrant Country :FR

Registrant Phone :+ 33.4 74706840 Registrant Email : YAMARTIN@ASI.FR Admin ID :MA88224-NBAY

Admin Name : YVES-ARMEL MARTIN Admin Street1 :407ROUTEDEBAYERES Admin City :CHA TILL ON

Admin State/Province :FR

Admin Postal Code :69380

Admin Country :FR

Admin Phone :+ 33.4 74706840 Admin Email :YAMAR TIN@ASI.FR Billing ID :AI31456-NBAY

Billing Name :JACQUES MOLINES Billing Organization :AIC NETWORK Billing Street1 :8, rue Colonnel Chambonnet

Billing City :BRON

Billing State/Province :FR

Billing Postal Code :69500

Billing Country :FR

Billing Phone :+33.4 723 72315 Billing Email :tech@ aic.fr

Tech ID :AI22257-NBAY

Tech Name :SAMIA CHIKER

Tech Organization :AIC NETWORK

Tech Street1 :8, rue Colonnel Chambonnet Tech City :BRON

Tech State/Province :FR

Tech Postal Code :69500

Tech Country :FR

Tech Phone :+ 33.4 72372315 Tech Email :tech@ aic.fr

Name Server :NS0.ERASME. ORG Name Server :NS1.ERASME.ORG

Un exemple de requête depuis une adresse: whois 1 93.50.192.40

Donne le résultat:

inetnum: 193.50.192.0 - 193.50.197.255 netname : FR-UVHC

descr: University of VALENCIENNES Campus

descr : Le Mont Houy BP 311, 59304 Valenciennes, France

country : FR

admin-c : JA2966-RIPE tech-c : JP1641-RIPE tech-c : FV982-RIPE

status : ASSIGNED PA mnt-by : RENATER-MNT

changed: RenSVP@Renater.Fr 19991230

source : RIPE

route: 193.50.192.0/24 descr : FR-UVHC

origin : A S2200

mnt-by : RENATER-MNT

changed: RenSVP@Renater.fr 19991008

source : RIPE

person : Jean-Claude ANGUE address: Universite de Valenciennes

address : Le Mont Houy - BP 311

address: 59313 VALENCIENNES CEDEX3

phone: +33327511234 fax-no: +33327511360

e-mail : president@univ-valenciennes.fr

nic-hdl: JA2966-RIPE mnt-by : RENATER-MNT

changed: rensvp@renater.fr 19991229

changed: rensvp@renater.fr 20000211

source : RIPE

person : Francis VANHUYSSE address : Le Mont Houy address : BP 311

address: 59304 VALENCIENNES CEDEX

phone:+33 327141128 fax-no:+33327 141183

e-mail: vanhuysse@univ-valenciennes.fr

nic-hdl: FV982-RIPE mnt-by : RENATER-MNT

changed: rensvp@renater.fr 19991230

source : RIPE

person : Jean-Luc PETIT address : Le Mont Houy address : BP 311

address: 59304 VALENCIENNES CEDEX

phone: +33327511128 fax-no: +33327511340

e-mail : jlpetit@univ-valenciennes.fr

nic-hdl: JP1641-RIPE

mnt-by : RENATER-MNT

changed: rensvp@renater.fr 19991221 changed: rensvp@renater.fr 20000211 source : RIPE

5.3.2 Intégration de whois au serveur

Pour intégrer les requêtes whois au serveur il faut utiliser une bibliothèque annexe au langage que l'on trouve sur le site officiel des bibliothèques deu langage Perl ([cpa]), il s'agit de la bibliothèque Net: :XWhois. Il y avait aussi la bibliothèque Net: :Whois mais elle est beaucoup moins évoluée, notamment elle ne per-met pas d'obtenir directement une valeur d'un paramètre, il faut pour cela parser le résultat obtenu. Par contre, la bibliothèque Net: :XWhois est très simple à utiliser: il suffit de faire la requête et de récupérer la valeur du champ souhaité (par exemple desc). De plus, les requêtes whois étant assez lentes, il fallait développer un système de cache pour éviter de refaire des appels faits précédemment. Cependant, ce développement n'a pas été nécessaire car ce système est inclus directement dans la bibliothèque elle même, ce qui facilite grandement les choses. Enfin, lorsque l'on effectue une requête, il faut tenir compte que l'on obtient pas directement les données souhaitées, il faut en fait faire une première requête, vérifier si les données sont suffisantes sinon refaire une deuxième requête qui permettra d'obtenir plus d'informations et ainsi de suite.

Chapitre 6

Côté client

La partie cliente doit principalement s'attacher au problème de représentation de la base, c'est le point le plus important à considérer. Le responsable de stage a défini ce qu'il désirait comme interface, ce qu'il désirait obtenir comme visualisation la plus compréhensible possible et interprétable.

6.1 Description de l'interface

6.1.1 Visualisation des sous-réseaux

L'affichage principal est un tableau de sous-réseaux. Le premier sous-réseau, par exemple 172.17.0.0/22, celui dont on cherche à avoir un découpage est affiché sur la première ligne. Puis, ce sous réseau est découpé en deux parties, 172.17.0.0/23 et 172.17.2.0/23 qui sont ajoutés sur la deuxième ligne, on réitère en découpant les deux sous réseaux en deux et on place les quatre sous réseaux ainsi obtenus (172.17.0.0/24, 172.17.1.0/24, 172.17.2.0/24 et 172.17.3.0/24) sur la troisième ligne. On peut choisir le nombre de lignes que l'on cherche à obtenir, en entrant en fait la plage de départ et en ajoutant un '/' et le nombre de lignes, ce qui donne dans notre exemple : 172.17.0.0/22/5. Cette manière d'entrer les informations a été préférée, notamment par M Blanc, utilisateur final de l'outil, car il est beaucoup plus rapide de taper une seule fois de cette manière plutôt que de cliquer sur une case, entrer la plage, cliquer sur une boite de sélection pour le masque, cliquer sur une autre boite de sélection pour le nombre de niveaux et enfin cliquer sur un bouton de validation. La figure 6.1.1 page 31 représente un schéma de ce qui est représenté à l'écran.

De plus, lors de la requête, les cases sont de couleur grisâtres (comme un bouton que l'on ne pourrait pas cliquer), ce qui indique que pour le moment, il n'y a pas d'informations disponibles pour la case considérée. Puis lorsque des informations parviennent, les cases changent de couleur pour indiquer que, maintenant, des informations sont disponibles (voir capture 6.1.1 page 31).

Si aucune plage n'est trouvée dans ce réseau, une boite de dialogue s'ouvre

CHAPITRE 6. COTÉ CLIENT 31
FIG. 6.1 - Capture d'écran de la représentation de sous réseaux

FIG. 6.2 - Arrivée des informations

pour demander à l'utilisateur s'il désire remonter dans l'arborescence pour trouver la première plage parente. Cette fonctionnalité est très utile, notamment lorsque l'on cherche à qui appartient une plage ou de quelle catégorie («Mairies», «Écoles», «Collèges») elle fait partie.

Un clic droit sur une case donnée affichera un menu permettant de zoomer sur la plage sélectionnée, d'afficher les informations détaillées sur cette plage ou d'ouvrir une page Web permettant d'accéder à des informations encore plus détaillées sur cette plage. Cependant, il faut noter que cette dernière possibilité n'est envisageable que pour les plages contenues dans la base de données MySQL. En effet, cette page s'ouvre vers un logiciel écrit précédemment, qui n'affiche les informations disponibles que pour les sous réseaux contenus dans la base de données.

6.1.2 Affichage des informations d'une plage

La plage, son adresse au format CIDR, est affichée directement dans la case prévue à cet effet. D'autres informations sont importantes comme à qui appartient la plage («Mairie de Saint-Clément-les-Places» ou «École de Sainte-Foyl'Argentière» ), le groupe qui l'a enregistrée (ERASME) et une description. Cependant, la place manquait vite dans les cases et il a fallu trouver autre chose. L'idée, très simple, est de déporter l'affichage en bas de l'écran, dans un onglet, et qu'à chaque fois que la souris passe sur une case les informations sont affichées touj ours au même endroit. L'affichage est déporté en bas, dans un onglet, et non sur la gauche ou la droite car le problème de place se posait essentiellement à l'horizontal et non à la vertical.

6.1.3 Recherche de plages libres

La recherche est dans un onglet, comme l'affichage des informations. Cette table à onglets permet de gagner de la place et est légitime car il ne sera pas nécessaire de vérifier les informations sur une plage donnée en même temps que l'on recherche une liste des plage libres.

La recherche s'effectue par l'entrée d'une valeur dans une case de texte puis par pression de la touche <ENTRÉE> ou par un clic sur le bouton prévu à cet effet. On peut choisir d'afficher la liste des plages depuis le début ou depuis la fin. Le paramètre devant avoir la forme suivante:

X.X.X.X/MASQUE/MASQUE_RECHERCHE. Les quatre X séparés par un point identifie une adresse IP, MASQUE complétant cette adresse pour obtenir une plage sous la forme d'une notation CIDR dans laquelle rechercher les plages libres. Enfin MASQUE_RECHERCHE spécifie la taille des plages recherchées. Par exemple on veut trouver la liste des plages de taille /27 disponibles dans le réseau

172.17.0.0/22, il suffit d'entrer : 172.17.0.0/22/27 et de presser la touche <ENTRÉE>. Il est à noter que si une plage libre est de taille /26, alors le serveur la découpe en deux plages de tailles /27 consécutives. Toutes les plages obtenues s'affichent dans un tableau et il suffit de cliquer sur une des plages pour que l'affichage

principal «zoome» sur cette plage.

Il faut noter que la recherche de plages libres n'a aucun sens dans le cas de requêtes whois. Elle n'est utilisée que pour rechercher des plages du réseau géré par ERASME pour allouer des plages à de nouvelles écoles ou mairies.

6.1.4 Recherche de plages selon un filtre

Cette recherche est aussi située dans un onglet. Pour effectuer la recherche, on entre de la même manière une plage au format CIDR, on choisit la catégorie: soit le propriétaire, soit le registrar (organisme ayant enregistré la plage). Ensuite on entre le filtre de recherche et on appuie sur la touche <ENTRÉE> ou on clique sur le bouton prévu à cet effet. Le filtre accepte les «jokers» du langage SQL, c'est à dire des caractères symbolisant n'importe quel caractère ou groupe de caractères. Par exemple, le filtre «e%e» affichera toutes les plages commençant par la lettre 'e' et se terminant par cette même lettre. La recherche n'est pas sensible à la casse, ainsi «ERASME», «ErAsMe», «erasme» donnera exactement le même résultat.

De même, les plages s'ajoutent dans un tableau et la sélection d'une de ses plages la fera s'afficher dans la partie visualisation.

6.1.5 Navigation dans la partie visualisation

Après avoir entré une plage et l'avoir visualisée, on peut, grâce à un panneau de navigation, remonter, aller à la plage suivante, aller à la plage précédente, descendre. Lorsque l'on remonte, on va en fait à la plage immédiatement supérieure de la plage actuelle. Par exemple, après avoir entré : 172.17.6.0/23/6 et la pression sur le bouton permettant le remonté sélectionnera la plage 172.17.4.0/22/6. Lorsque l'utilisateur cliquera ensuite sur le bouton permettant d'aller à la plage précédente, la navigation le dirigera vers la plage 172.17.0.0/22/6 alors que la navigation l'aurait emmené vers la plage 172.17.10.0/22/6 s'il avait voulu obtenir la plage suivante. Pour aller vers le bas, en fait augmenter le masque d'une unité, le choix se pose. En effet, le découpage d'une plage /26 donne deux plages /27. Par défaut, l'utilisateur sera dirigé vers la première plage à partir de la gauche.

6.1.6 Historique

Une autre fonctionnalité intéressante est l'historique. Il y a trois boutons en haut à gauche permettant de naviguer comme dans les butineurs Web : page précédente, page suivante et aller directement à une page par sélection sur un menu surgissant (popup menu).

6.2 Architecture du client

Le client est séparé en deux packages. Un package est un regroupement logique de classes. Le premier package est un package outil, il permet de manipuler des

FIG. 6.3 - Schéma simplifié du diagramme des classes des outils

plages, des listes de plages, de faire les communications avec le réseau et possède un modèle d'interface graphique. Le deuxième package est constitué des classes permettant de faire l'applet: c'est le package ayant permis de faire l'interface graphique ou interface homme/machine (IHM).

6.2.1 Outils pour l'interface

La première classe, BlockAdresses, permet de gérer les plages sous formes CIDR ou non. Elle permet d'obtenir l'adresse réseau d'un sous réseau, de récupérer le masque, d'obtenir l'adresse de broadcast, d'obtenir les adresses suivantes, précédentes, parentes... Cette classe était nécessaire pour faciliter grandement le développement futur. Pour le schéma simplifier du diagramme des classes, voir la figure 6.2.1 page 34.

La classe SsReseau hérite de cette classe et a une association avec une autre classe: InfoSsReseau, qui stocke les informations sur un sous réseau: le propriétaire, le registrar, la description, l'identifiant. L'identifiant est une chaîne de caractère inexploitable par le client. En effet, le client ne peut que stocker cette valeur et la récupérer mais ne connaît pas la manière de l'utiliser. Cet identifiant est utilisé par le serveur qui fournit la bonne adresse (URL) pour ouvrir le document Web sur un établissement particulier. Cette méthode a été utilisée pour éviter de devoir changer le code du client (parser l'identifiant notamment) si l'établissement a été changé de base de données ou si le stockage est différent («éclatement» de la base de données sur plusieurs serveurs). De plus, ce n'est pas à lui de savoir comment sont gérés les sous réseaux, si ils proviennent bien d'une base de données plutôt que de fichiers ou d'une requête whois.

Deux classes pour gérer les listes. Une classe Liste qui définit les méthodes se positionnant au premier ou au dernier élément, et des méthodes pour savoir si le suivant et le précédent existent. Ensuite une autre classe ListeSsReseaux qui per-

met d'ajouter un sous réseau et de récupérer le suivant ou le précédent sous réseau. Pourquoi avoir séparé en deux classes? Tout simplement, la première permet de définir une classe générique, ne connaissant pas ce qu'il y a l'intérieur de la liste mais où toutes les méthodes sont mutuellement exclusives l'une de l'autre (méthodes «synchronized» : on ne peut pas appeler une deuxième méthode tant que la première méthode appelée n'a pas libéré le verrou en se terminant). Ensuite, une classe ListeSsReseaux spécialise cette classe pour ajouter ou récupérer un et un seul type d'objet: chaque classe sera alors spécifique à un objet, ce qui permet de ne pas rencontrer de problème lors de la récupération des informations. De même, chaque méthode sera de type «synchronized». Ceci parce que les communications sont gérées de telles manières que des données peuvent arrivées alors que l'interface homme-machine récupère les données précédentes en même temps et il peut y avoir conflit. Mais ce sera expliqué plus en profondeur plus loin. Ces deux classes peuvent générer une exception PlusRienException, lorsque l'on essaye d'accéder au delà des bornes de la liste.

La classe Communication permet de gérer les communications avec le serveur. Cette classe hérite de Thread. En effet, étant donné que les requêtes whois peuvent prendre beaucoup de temps, il se peut que cela bloque l'affichage pendant un long moment, sans qu'il ne soit possible d'arrêter la requête. En procédant comme cela, il est très simple de l'arrêter car on lance le thread, on attend les résultats, lorsque les résultats arrivent au fur et à mesure, un autre thread peut les afficher, puis si le temps est trop important pour l'utilisateur, il peut faire une autre requête, avec ou sans l'arrêt du thread courant. Ceci aurait été beaucoup plus compliqué à mettre en oeuvre sans les threads, il aurait fallu pour cela utiliser des méthodes de lecture non bloquantes sur la socket et s'assurer à intervalle régulier de la réception des informations. Cependant, ceci aurait du être fait du côté de l'IHM, ce qui était inacceptable. Comme cela le problème est simplifié et le codage de l'IHM n'a pas à se soucier de ce cas de figure: les données lui arrivent automatiquement par un processus décrit ci après.

Une classe permet de modéliser l'arrivée d'informations de la part de la communication: la classe ThreadIHM. Cette classe modélise en fait un «écouteur de communication». En effet, lors de la création d'un objet de la classe Communication, il faut lui passer comme argument un objet d'une classe héritant de ThreadIHM pour que les méthodes de cet objet soient appelées par l'objet de la classe Communication. Certaines méthodes abstraites de la classe ThreadIHM doivent être écrites pour que la méthode soit appelée. Ces méthodes sont:

- aAppeler: qui prend comme paramètre un sous réseau. Cette méthode est appelée lorsqu'une nouvelle donnée arrive depuis le réseau.

- erreur: qui prend comme paramètre un message d'erreur. Cette méthode est appelée lorsqu'une erreur de communication est arrivée.

- terminer: cette méthode est appelée lorsque la communication est terminée et que toutes les données sont parvenues.

D'autres méthodes ne sont pas modifiables, ne peuvent pas être ré-écrites lors de l'héritage : ceci permet l'intégrité et l'assurance que les messages d'erreur et les

données parviendront à l'objet correspondant. Il s'agit de run et de arrete qui per-met d'arrêter la communication des deux côtés (côté client et côté serveur).

Cette méthode de communication et d'utilisation avec l'interface graphique ou textuelle permet une mise en place aisée : il suffit de créer une classe héritant de ThreadIHM et implémentant les méthodes déclarées comme abstraites; créer un objet de la classe Communication avec comme paramètre un objet de la classe précédente et appelée l'une des méthodes de Communication. Ce processus permet de ne pas geler l'IHM, car d'autres choses (réaction lors d'un clique sur un bouton, entré de nouveaux paramètres, ...) peuvent être effectuées en même temps que l'interrogation du serveur à lieu et l'on peut facilement arrêter la communication en cours. Notamment, les interfaces graphiques se prêtent très bien à ce type de méthodes.

6.2.2 Interface Graphique

L'interface graphique est composée de plusieurs parties : la visualisation des sous réseaux, la partie recherche de plages libres, la partie recherche selon un filtre et la partie navigation. Les communications entre ces trois parties, par appel de méthodes, s'effectuent selon le schéma 6.2.2 à la page 37.

Pour le schéma simplifié du diagramme des classes, voir la figure 6.2.2 page 38.

Au début, la partie visualisation était composée de boutons (JButton du package javax.swing). Cependant, de nombreux problèmes de placement de ces boutons étaient présents : malgré l'utilisation d'un outil de placement de composants graphiques sous la forme d'un tableau ( GridBagLayout) avec hauteur et largeur définie (grâce à GridBagConstraints), les composants ne se plaçaient pas exactement comme il leur était imposé. En fait, leur position x et y était correct, cependant, leur taille, surtout la largeur, ne restait pas constante. Certains boutons se superposaient et lors d'affichage de nombreux boutons, cela devenait inutilisable. De plus, les performances d'affichage n'étaient pas suffisantes. Sous les conseils du responsable, il a été choisi de dessiner directement les cases et non d'ajouter des boutons. Cela s'est avéré être un très bon choix, les performances ont été bien meilleures et le placement correspondait exactement à ce qui était demandé. De plus, la modification a été très rapide à effectuer, il a suffit de ne pas faire hériter notre bouton de JButton et de faire une méthode dessine, les coordonnées, la taille (hauteur et largeur) étant calculer précédemment.

Chaque partie de l'interface utilisant la classe Communication est un thread, ce qui fait qu'il y a deux threads par partie négociant avec le serveur, un pour un objet de la classe Communication, un pour le composant effectuant l'affichage, soit au total et au maximum six threads simultanés. Il est spécifié «au maximum» car il se peut et ce sera la majorité du temps, qu'il n'y ait que deux threads exécutés en même temps. Cependant, des tests ont été effectués pour lancer les six threads en même temps, les arrêter et les relancer de nombreuses fois sans que cela ne pose le moindre problème. Il faut aussi noter que si la visualisation est lancée et

FIG. 6.4 - Schéma de représentation des communications dans l'interface graphique. La classe ThreadIHM a été ajouté pour simplifier la compréhension

que l'utilisateur essaye de naviguer ou sélectionne une plage trouvée lors d'une recherche alors que le thread de visualisation n'est pas terminé (autrement dit: la communication entre la visualisation et le serveur n'est pas finie), les threads sont automatiquement arrêtés et la visualisation est relancée sur cette nouvelle information. Ce qui fait que chaque thread est indépendant des autres mais le thread visualisation peut être interrompu par l'utilisateur lorsqu'il sélectionne une plage trouvée par une recherche ou naviguer ou qu'il souhaite sélectionner une plage dans l'historique.

Chapitre 7

Perspectives

7.1 Implémentation d'un cache

Les requêtes prennent du temps et il seraient bien d'éviter de surcharger le serveur. En effet, pour le moment, le client effectue plusieurs fois la même requête si on le lui demande. Un cache côté client serait utile pour éviter ce cas de figure.

De plus, si des modifications de la base de données sont effectuées, les répercussions ne seraient pas prises en compte. Un bouton ou autre composant graphique devra permettre la remise à zéro du cache.

7.2 Différentes visualisations

Une fonctionnalité qui pourrait permettre une meilleure compréhension de la répartition des plages serait de pouvoir choisir entre différentes vues, différentes représentations de la base. Une vue possible serait par exemple un arbre dépliant, dans le type des systèmes de fichiers: on rentre une plage, l'outil affiche sous forme d'arbre toutes les plages libres du niveau le plus haut et lorsque l'on sélectionne un sous niveau, il se déplie (on effectue une recherche de sous niveaux dans cette plage). Ainsi, par analogie au système de fichier, un répertoire serait un sous niveau qui aurait d'autres sous niveaux et un fichier serait un sous niveau sans sous niveau.

7.3 Ajout des plugins côté serveur

L'ajout de plugins côté serveur se fait assez simplement. En effet, il faut ajouter quelques lignes dans le parser du fichier XML pour prendre en compte le plugin (rappel: si ce n'est que l'ajout du code d'une requête pour une base de données, cette partie est inutile). Ensuite il faut modifier la partie communication avec le client si nécessaire (pour l'ajout des requêtes whois, ce point n'a pas eu lieu d'être, car ce n'est pas au client de savoir pour quelles plages on interroge la base de données ou un serveur whois) et écrire le code qui permet de faire les nouvelles recherches et renvoyer le résultat.

Chapitre 8

Conclusion

Ce stage, le premier pour moi, m'a permis d'apprécier le travail dans une «société» tournée vers l'informatique. Le statut particulier de la mission ERASME n'a pas, je suppose, une organisation si éloignée d'une PME notamment les contraintes de budget et de temps ou l'obligation de résultats.

Le sujet m'a permis de toucher des domaines assez variés comme les bases de données, UML, le modèle client/serveur, la programmation multithreadée avec concurrence, XML et les DTDs, deux langages de programmation (Java et Perl) et l'adressage sous forme CIDR des réseaux.

La contrainte de temps a été bien gérée, ce qui est un des points les plus intéressants et les plus essentiels en gestion de projet. La distance du lieu de travail et de mon domicile ne s'est pas fait réellement sentir, malgré ce que je pensais au premier abord.

Bref, ce stage m'a permis de parfaire ma formation et a aussi fait office de première expérience professionnelle dans le monde de l'informatique. Cette première expérience c'est bien passée, ce qui est positif pour l'avenir.

Quatrième partie

Annexes

Table des figures

2.1 Exemple de raccordements wifi 11

3.1 Résumé du modèle entité/association de la base 15

5.1 Modèle entité/association No1 25

5.2 Modèle entité/association No2 25

6.1 représentation de sous réseaux 31

6.2 Arrivée des informations 31

6.3 diagramme des classes des outils 34

6.4 Communications dans l'IHM 37

6.5 Diagramme des classes de l'interface graphique 38

Bibliographie

[acn] Arbres de connaissance pour une nouvelle education.

www.erasme.org/acne/index.html.

[API] Api de j2se v1 .4.1. http :// java.sun.com/j2se/1 .4. 1/docs/api/. [arg] site web de argouml. http :// argouml.tigris.org.

[bsd] Licence bsd. http :// opensource.org/licenses/bsd-license.php. [cpa] Site des bibliothèques et outils pour le perl. www.cpan.org. [ema] site web de emacs. www.gnu.org/software/emacs/emacs.html. [era] site web de erasme. www.erasme.org.

[gal] navigaeur web galeon. http :// galeon.sourceforge.net. [gen] Site web de poseidon for uml. www.gentleware.com. [lac] Projet de cartable électronique. www.laclasse.com. [moz] navigateur web mozilla. www.mozilla.org.

[net] navigateur web netscape. www.netscape.fr.

[UPC] Site web de upc. www.upcfrance.com.

[wir] Site de l'association wireless lyon. www.wireless-lyon.org.

Index

ACNE, 10 argoUML, 18

Centre d'hébergement, 8 Centre de Formation, 8 Centre Multimédia, 7 Centre Serveur, 7 CRDP, 9

DTD, 23 ERASME, 6

Hartur, 9 INA, 9

laclasse.com, 9

package, 33

parser XML, 23 plugins, 23

Poseidon, 18

réseau,sous-réseaux, 14 whois, 17

XML, 23

GNU Free Documentation License Version 1.2 November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative

works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with

modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed,

as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document

straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file

format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats

include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the

machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself,

plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in

formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title"

of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies

to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

H. Include an unaltered copy of this License.

I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or

appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of

Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may

distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the

Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions

of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Soit réservé sans ostentation pour éviter de t'attirer l'incompréhension haineuse des ignorants"   Pythagore