:: Enseignements :: Master :: M1 :: 2009-2010 :: Programmation d'Applications Réseaux ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Proxy HTTP filtrant |
Le projet consiste à implanter un proxy pour HTTP capable de
réaliser du filtrage.
Le 08/03/2010 : Précisions concernant
l'utilisation du proxy.
Description du sujet
Le projet consiste à implanter un proxy pour HTTP
capable de réaliser du filtrage
-
sur les requêtes: par exemple, sur le nom du serveur web,
son domaine, son adresse IP, le numéro de port utilisé,
une variable transmise dans l'URL, ou plus généralement
sur n'importe quel élément de la requête
(ligne de requête ou champs d'en-tête), mais également
sur le corps éventuel de la requête
(e.g. s'il s'agit d'une requête POST)
-
sur le contenu: outre les filtres sur la ligne de status ou
les champs d'en-têtes, votre proxy devra être capable
d'analyser une page web ou un fichier dont il
réalise le transfert pour y détecter des éléments qu'on
souhaite bloquer, remplacer ou plus simplement reporter.
Vous serez jugés sur votre capacité à implanter un proxy pratique
et puissant: le choix de la manière dont est réalisé et spécifié
le filtrage, et l'interface de paramétrage du proxy, sont laissés
à votre appréciation. Il va sans dire, par exemple, que le proxy
devra être paramétrable au moins par un utilisateur non programmeur.
Ajout au 08/03/2010 : Vous pouvez tester votre
proxy en indiquant à votre client (e.g. un navigateur internet) que
les requêtes http doivent passer par votre proxy. Comme il n'est
pas possible de modifier le proxy utilisé par le firefox installé
sur les machines étudiantes, vous pouvez utiliser
Galeon.
Votre proxy devra pouvoir servir plusieurs clients simultanément.
Il n'est pas obligatoire de réaliser un proxy en utilisant les
fonctionnalités non blocantes des E/S de Java; cependant,
vous serez jugés aussi sur la capacité de votre serveur à tenir
la charge ainsi que sur son efficacité.
L'implantation du pipeline est optionnelle. Pensez à avoir une
base de projet propre et qui fonctionne bien avant de vous lancer
dans des extensions complexes. Par exemple, vous pourrez commencer
à développer un proxy HTTP 1.0 puis, une fois qu'il fonctionnera,
le continuer par l'implantation de HTTP 1.1.
Bien sûr, votre proxy devra être implanté en utilisant avec soin
les concepts objets et les différents éléments de la bibliothèque.
Remise du projet
Ce projet est un travail à faire en binôme. On rappelle qu'un
binôme est constitué d'exactement deux personnes
travaillant de manière équitable sur le projet.
La note des deux membres du binôme pourra être différente à
l'appréciation du correcteur, s'il juge que le travail n'a pas
été justement partagé.
Le projet consiste à programmer ce qui est demandé.
La correction sera basée sur les codes sources de ce que
vous avez fait, sur un rapport qui devra contenir entre autres :
-
un rappel sur le sujet,
-
un mode d'emploi du programme,
-
des exemples d'exécutions,
-
une documentation technique du code (hiérachie des classes,
etc.),
-
une reflexion générale sur le projet,
-
une section sur la répartition du travail entre les deux
membres du binôme.
Votre code source devra être correctement organisé :
-
un fichier par classe/classe abstraite/interface, de même
nom que la classe/classe abstraite/interface qu'il contient,
-
les classes/classes abstraites/interfaces seront
organisées en paquetages,
- chaque fichier contiendra des commentaires documentants le
type dont il contient la définition.
Votre projet sera également accompagné d'une documentation
au format javadoc.
Le projet pourra faire l'objet d'une soutenance.
Le projet doit être envoyé dans un fichier zip le
11
avril à 23h59 au plus tard
sur le dépôt suivant sur etudiant :
/home/shares/igm/prof/Projet_M1_11042010
. Le zip contiendra
- un fichier jar exécutable
- la documentation
- le rapport
- les sources
- les classes compilées
- un fichier build.xml permettant de
- compiler les sources (target compile)
- creer le jar (target jar)
- generer la javadoc (target javadoc)
- nettoyer le projet (target clean)
(bref, tout ce qui concerne le projet). Le zip aura un nom formé à partir de vos noms
(par exemple, si vous vous appelez Toto et votre binôme Tatenpion,
TotoTartenpion.jar). L'extraction de cette archive devra créer un
répertoire du nom de l'archive pour contenir tous les éléments
demandés ci-dessus (par exemple, un répertoire TotoTartenpion).
Cas de pénalités :
-
projet non effectué en binôme (i.e. 2 personnes !) sans
l'accord préalable de l'intervenant de TD
-
projet rendu après la date (1 point + 1 point par
demi-heure de retard)
-
Récéption d'une archive qui n'a pas le nom demandé
-
Extraction du zip ne produisant pas le répertoire demandé
© Université de Marne-la-Vallée