Cahier des Charges - think FTP project
Transcription
Cahier des Charges - think FTP project
Cahier des Charges 14 janvier 2003 Guillaume Camard Aaron Manrique Nicolas Manente Johann Thiesson EPITA - Info Spé C1 - Promo 2006 Powered by Try Again 1 Table des matières 1 Introduction 3 2 Apport et motivation individuelles 4 3 Présentation globale du projet : découpage du projet 6 4 Fonctionnalités à implémenter 4.1 Fonctionnement du Client . . . . . . . . . . 4.1.1 Mode graphique . . . . . . . . . . . 4.1.2 Gestion des comptes . . . . . . . . . 4.1.3 Multithread . . . . . . . . . . . . . . 4.2 Fonctionnement du serveur . . . . . . . . . 4.2.1 Serveur : Fonctions de bases . . . . . 4.2.2 Elaboration d’un Shell . . . . . . . . 4.2.3 Serveur : Fonctions avancées . . . . 4.3 Fonctions communes Client/serveur . . . . 4.3.1 Fonctions et protocole FTP . . . . . 4.3.2 Gestion des logs . . . . . . . . . . . 4.3.3 Limitations de vitesses . . . . . . . . 4.3.4 Cryptage/décryptage des transferts . 4.4 Site Web et fichier d’aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 7 8 8 8 9 9 9 9 10 10 10 10 5 Moyens mis en oeuvre 5.1 Moyens intellectuels . . . . . . . . 5.2 Moyens matériels . . . . . . . . . . 5.3 Moyens en commun pour le groupe 5.4 Coûts de fabrication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 14 15 16 6 Planification 6.1 Répartition des taches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Echéancier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 7 Conclusion 19 . . . . . . . . . . . . . . . . . . . . 1 Introduction Comme son nom l’indique, le groupe Try Again se compose exclusivement de redoublants. Nous nous côtoyons depuis notre entrée en info Sup, nous formons donc un groupe uni où règne une bonne ambiance. A l’heure des connections haut débits, les transferts de fichiers sont de plus en plus fréquemment utilisés. Les meilleurs outils de transfert connu à ce jour sont les logiciels reposant sur le protocole FTP. Nous en sommes d’ailleurs des utilisateurs avertis. Attirés par l’esprit des systèmes libres tel que Linux, nous nous sommes aperçu que les clients FTP ne satisfaisaient nos attentes et n’atteignaient pas le niveau des clients sous Windows. C’est ainsi que l’idée de créer une suite Client/Serveur FTP, germa dans l’esprit des membres du groupe Try Again. Think FTP est donc un logiciel de transfert de fichier utilisant le protocole FTP (File Transfer Protocol) fonctionnant sous Linux. Notre application se compose d’un Client FTP disposant de fonctions évoluées et d’un serveur FTP avancé. L’utilisation du protocole FTP présente un inconvénient majeur : toutes les données circulant à travers les réseaux sont visibles par tous. Autrement dit, n’importe quelle tiers personne malintentionnée peut récupérer d’un part les identifiants d’authentification et d’autre part le contenu des données échangées. Dans un soucis de sécurité, nous avons décidé d’implémenter un système de cryptage efficace permettant d’effacer ce point noir. 2 Apport et motivation individuelles CAMARD Guillaume : Elu au suffrage universel, à l’unanimité, par notre groupe Try Again en qualité de chef de projet. Il a pour fonction de répartir le travail par binôme de travail ainsi que du maintien de l’intégrité du groupe. Il sera aussi le porte-parole. Passionné par l’informatique, j’ai acquis en InfoSup de solides bases en programmation 3D sous OPENGL et Direct X avec le développement d’un jeu de golf ”Episwing”. De plus mon redoublement sera bénéfique dans l’élaboration de ThinkFTP, car l’an dernier j’étais membre du groupe ohmygod, où nous avions développé une application réseau ”peer-topeer” sous Windows. Il s’agit d’une application réseau où chaque client peut télécharger des fichiers partagés à un autre client directement. De plus avant d’entamer l’étude du fonctionnement du peer-to-peer, je me suis intéressé au protocole TCP/IP et FTP. C’est donc avec joie et intérêt que je participe à ce projet. Depuis déjà deux ans je programme sous Windows, et c’est avec plaisir et curiosité que je vais travailler sous Linux. En effet, je suis un peu neophyte dans le domaine de l’utilisation et configuration de Linux. Comme le reste de l’équipe, il aime s’amuser et pourra donc les divertir dans les moments de pression sans négliger le travail. MANENTE Nicolas : Ce projet de logiciel FTP m’a beaucoup plu dès le départ. N’ayant pas d’expérience de programmation autour des programmes utilisant les réseaux, et passant beaucoup de temps sur Internet, à échanger et partager des fichiers, et notamment par l’intermédiaire du protocole FTP, il m’a paru très intéressant de se lancer dans un projet comme celui de ThinkFTP. De plus, je pense que ce sont des technologies qui sont en plein boom, avec la démocratisation des connections Internet haut débit. C’est donc un défi pour moi de programmer un outil fonctionnant sur la toile, dont je pourrais me servir. En effet, mes projets des années précédentes ne m’ont pas permis de programmer un tel programme, car aucun des deux n’utilisaient de réseau : EPITOPIA en SUP, un jeu d’aventure en 3D, et GENETICA en SPE, un simulateur d’écosystèmes aquatiques. En revanche, ce dernier m’a permis d’acquérir de l’expérience au niveau de la conception d’interface, susceptible de pouvoir aider le groupe dans le développement du programme. Pensant aussi, à la suite de ma scolarité à l’EPITA, et sachant que UNIX et le langage C seraient la base de la programmation du cycle d’ingénierie, ils seraient donc très important pour moi, et pour le groupe, le fait de développer ThinkFTP en C et sous Linux m’a vraiment motivé. Je n’ai pas vraiment d’expérience en programmation sous Linux, mes deux précédents projets étant développés sous Windows. Et cela ne peut que m’aider à renforcer ma maı̂trise de ce système d’exploitation, mais aussi de ce langage. Mais ce n’est pas seulement tout ce qui m’a motivé à faire ce projet. Il y a aussi le groupe Try Again : le fait de connaı̂tre et d’être dans la même classe que les autres membres du groupe depuis notre entrée en SUP, et de les apprécier m’a énormément attiré. La bonne ambiance régnante dans ce groupe me parait importante pour le bon déroulement de l’année. Et je pense les connaı̂tre assez bien, pour douter que cela se passe mal. En bref, je pense avoir fait le bon choix en venant dans ce groupe, et en choisissant ce type de projet. Je suis fin prêt à commencer concrètement le développement de celui-ci, et de prendre ma part de responsabilité. MANRIQUE Aaron : Cette année, le but de notre projet est très précis, faire le meilleur des clients FTP jamais réalisés sous un environnement autre que windows. Ma connaissance de l’environnement Linux ainsi que celle du langage C, m’ont permis de rejoindre un groupe de travail composé des copains de longue date, avec lesquels je m’entends bien, et qui ont un niveau en programmation plus que correct. Bien évidement, mes connaissances en matière des réseaux acquises l’année dernière vont me permettre d’apporter un plus au groupe et ca nous permettra à mieux consolider notre projet. Le but étant je le rappelle de créer un client FTP digne de ce nom, car sous un autre environnement autre que Windows, je fait notamment allusion à linux, je n’était pas satisfait des clients FTP, car pas assez complets et pas assez souples dans l’ensemble, c’est pourquoi, je me suis lancé dans cette nouvelle aventure. Le réseau est un domaine qui me plait assez, pour me lancer dans la création d’un tel outil, et pis comme tout le monde le sait : ”there is no spoon”. THIESSON Johann : L’échange de données sur les réseaux m’attire beaucoup depuis longtemps. Je passe énormément de temps sur Internet, depuis plus de deux ans et demi. Et ce ”monde” m’attire toujours autant, voir de plus en plus. J’ai déjà une bonne expérience, pour les échanges de fichiers, notamment par l’intermédiaire du protocole FTP. J’ai géré des serveurs FTP pendant plusieurs mois, en utilisant plusieurs logiciels. Cela m’a permis d’avoir une vue d’ensemble des possibilités que nous offre ce protocole. J’ai également des notions sur l’utilisation des sockets sous unix, grâce à mon précédant projet. Je suis cette année dans un groupe de projet qui me plaı̂t beaucoup, cela se ressentira certainement sur l’ambiance du groupe et sur le résultat final du projet. Aaron et moi étions déjà dans le même groupe de projet l’année dernière. Je connais très bien Guillaume et Nicolas, et nous nous entendons très bien depuis plus de deux ans. Il y a déjà eu beaucoup de projets de ce type qui ont déjà été réalisés, mon but est de faire mieux. Je ne doute pas que tout se passera bien durant l’année, et j’ai l’intention de créer un produit fini, fiable et performant. Je suis sûr que nous passerons de bons moments :) 3 Présentation globale du projet : découpage du projet ThinkFTP est une suite de logiciel FTP qui regroupe d’un coté le serveur FTP et de l’autre le client FTP. Le serveur FTP permettra de partager ses fichiers (et seulement ceux qu’on veut) sur le réseau. Il ne sera développé qu’en mode texte. Il fonctionnera en tâche de fond et se lancera à partir d’une console UNIX. Les fonctions qui lui sont propres, et qui seront accessibles toujours par le shell seront : – Le lancement et l’arrêt du serveur, – L’affichage du’status’ et de toutes opérations en cours, – La gestion des comptes utilisateurs, – Le choix du port à ouvrir pour permettre aux utilisateurs de se connecter. Le client, quand à lui, sera développé en mode graphique, pour une utilisation plus confortable et plus intuitive. On pourra donc utiliser la souris pour effectuer toutes les opérations que l’on veut, voir les informations sur les traitements en cours dans des listes, utiliser des menus déroulants...Il permettra aussi de gérer ses comptes utilisateurs sur différents serveurs FTP, c’est-à-dire de ranger les adresses et les identifiants correspondants, dans des dossiers à la manière des ’favoris’, pour ne pas avoir à retaper toutes les informations à chaque connection. Une autre fonctionnalité plus rare au client FTP, dont sera pourvu ThinkFTP est le ’Multithread’, c’est-à-dire qu’il pourra se connecter à plusieurs serveurs, ou plusieurs fois au même serveur, en même temps pour faire des opérations, sans avoir à relancer plusieurs fois l’application. Cette fonction manque à beaucoup de clients, mais est pourtant très utile et donc très recherchée. L’ensemble ThinkFTP client/serveur devra aussi avoir des fonctions communes et respecter certaines règles. En effet, l’un des points les plus important est de respecter le protocole FTP (File Transfer Protocol), dans le but de rester compatible avec n’importe quel autre client ou serveur FTP, étranger à ThinkFTP. Les autres clients pourront se connecter à notre serveur et inversement, notre client à d’autres serveurs. D’autre part, dans un souci de sécurité, nous avons choisi de crypter les données circulant entre nos clients et serveurs, sans pour autant, encore une fois, empêcher la compatibilité avec les autres clients/serveurs. Cela à pour but d’éviter de se faire ’voler’ les données transitant, par une tierce personne mal intentionnée. De plus, que ce soit dans le serveur ou dans le client, l’utilisateur pourra voir tout ce qu’il se passe : connections, déconnections, transferts, et toutes les autres opérations. Cela se fera à l’aide de ’logs’, c’est-à-dire des fichiers dans lesquels sont enregistrés l’ensemble des traitements effectués, qui sont restitués à l’écran pour l’utilisateur. Dans la prise en main des transferts, aussi bien dans le serveur que dans le client, l’utilisateur pourra aussi limiter les vitesses de transfert de chaque connection, pour une meilleure gestion de sa bande passante. 4 Fonctionnalités à implémenter 4.1 4.1.1 Fonctionnement du Client Mode graphique Nous désirons rendre accessible notre client FTP au plus grand nombre, il sera donc en mode graphique. Ce mode graphique sera créé avec la librairie GTK. Les informations suivantes devront être affichées : – Les contenus des répertoires : Une fenêtre affichera le contenu du répertoire courant local, et une seconde fenêtre affichera le contenu du répertoire courant distant (du serveur FTP auquel on est connecté). Cela permettra une navigation intuitive dans les répertoires (à la souris), et une sélection des fichiers à la souris. – Les logs : Une fenêtre permettra à l’utilisateur de savoir quelles requêtes ont été envoyées par le client, et quelles ont été les réponses du serveur. – L’état global du client : L’utilisateur pourra avoir une vue d’ensemble de l’activité du programme. Les informations affichées seront : L’état des connections, le nombre de transferts en cours, la vitesse global de transfert. – Une liste des fichiers en attente de transfert : Chaque fichier est mis en attente dans une liste. Le fichier est transféré lorsqu’une connexion est libre. L’utilisateur aura la possibilité d’agir sur cette liste, par exemple en y supprimant des fichiers avant qu’ils soient transférés. Cette liste sera également un bon indicateur d’avancement global des transferts. – L’états des threads : Chaque thread aura son statut d’affiché. Il sera possible de savoir quel fichier est en cours de transfert, à quelle vitesse, et l’avancement du transfert. Le fonctionnement multi thread est expliqué un peu plus loin. – Des raccourcis : Sous la forme d’une barre de menus, ils devront permettre de gérer diverses options du programme à partir de boites de dialogue. – Les comptes FTP sauvegardés par l’utilisateur (voir la section suivante). L’utilisateur devra avoir la possibilité ” d’arranger ” son espace. C’est-à-dire qu’il aura la possibilité de redimensionner les diverses fenêtres à sa guise, afin de privilégier la navigation dans les répertoires du serveur, au dépend par exemple de l’affichage des logs. Au final, le but est de créer une interface graphique intuitive qui conviendra au novice, mais également une interface évoluée, qui satisfera les utilisateurs avertis. 4.1.2 Gestion des comptes L’utilisateur occasionnel comme l’utilisateur intensif apprécieront cette fonctionnalité. En effet, elle permet d’enregistrer les identifiants de connexion relatifs à un serveur. Une liste de serveurs favoris évoluée en quelques sortes. L’utilisateur pourra, avec un simple clic de souris, se connecter à un serveur dont il aura enregistré les informations. Il pourra ordonner et classer les comptes comme il le souhaite. C’est en fait une base de donnée que nous devrons gérer, et celle-ci devra être stockée de manière sécurisée, pour éviter qu’un intrus n’accède aux identifiants personnels que l’utilisateur aura stocké. 4.1.3 Multithread Voici une des plus importantes fonctionnalités de notre client FTP. Le multithread rendra possible la connexion simultanée à plusieurs serveurs. Les avantages sont multiples : – Inutile de lancer plusieurs clients pour se connecter à plusieurs serveurs. Il suffit de se connecter à un serveur, et de lancer les transferts. Il est ensuite possible de se connecter à un autre serveur, pendant que les transferts sont en cours. - Possibilité de continuer à naviguer sur le serveur FTP (dans les répertoires), pendant qu’un transfert s’effectue sur ce même serveur. – Temps de transfert diminué, principalement dans deux cas : 1. Lorsque le serveur est saturé, ou bien qu’il limite la bande passante allouée à un thread. Si le serveur est saturé, le fait de lancer plusieurs threads va ”forcer” plusieurs transferts en même temps, et donc le débit va augmenter. 2. Lorsqu’il y a plusieurs fichiers de taille modeste à télécharger (inférieure à 500 ko). En effet, le protocole de connexion FTP impose un ”dialogue” entre le client et le serveur avant toute connexion et tout transfert. Pendant ce ” dialogue ”, la bande passante utilisée est proche de zéro. Prenons un exemple : Ce dialogue dure environs 3 secondes, les fichiers à transférer sont d’environs 200ko, et la vitesse de téléchargement est de 65 ko/s. Le temps total nécessaire à transférer un fichier est de 6 secondes : 3 pour le dialogue, et 3 pour le transfert. La perte de temps est donc conséquente, le transfert pourrait aller deux fois plus vite. En lançant plusieurs transferts en même temps, le temps que l’un des threads établisse le ”dialogue” avec le serveur n’est pas perdu, puisque les autres threads utilisent la bande passante libérée pendant ce temps. Plus les fichiers sont petits, plus le gain est grand comparé à un client qui ne gère pas le multithread. La fonction multithread n’est que trop rarement implémentée dans les clients FTP. Un des meilleurs dans ce domaine est LeechFTP, qui est un client sous windows. Une grande partie des distributions linux incluent le client gFTP. C’est un client graphique qui gère le multithread, mais très mal. Notre but est donc de faire mieux. 4.2 4.2.1 Fonctionnement du serveur Serveur : Fonctions de bases Notre serveur FTP s’affichera en mode texte dans la console sous linux. Comme tout bon serveur FTP qui se respecte, il devra se plier au protocole FTP. Comme nous voulons faire du multithread, il devra être capable d’accueillir plusieurs client simultanément. Notre serveur sera capable d’identifier si l’utilisateur provient d’un client FTP classique ou du nôtre. L’utilisateur aura la possibilité d’ajouter un fichier de configuration au serveur afin de personnalisé le serveur (nom du serveur, message de bienvenue, le port d’écoute par défaut etc ...) 4.2.2 Elaboration d’un Shell Pour faciliter l’utilisation de notre serveur aux utilisateurs, nous allons mettre en place une sorte de Shell propre à notre serveur. En effet suivant la chaine de caractère que l’utilisateur rentrera, notre application sera capable d’interpréter les commandes tapées, avec l’implémentation de quelques commandes de bases d’une part et l’ajout de commandes plus élaborées d’autre part. En effet une commande de lancement du serveur sera incluse. Bien entendu une commande d’arrêt du serveur sera présente. Bien entendu l’administrateur pourra modifier ce fichier de configuration directement en passant par le shell. Nous allons créér des commandes assez intuitive afin que l’utilisateur ne perde pas trop de temps à utiliser notre serveur à bon escient. De plus l’ajout d’un Shell à notre serveur permettra une approche dynamique de la maintenance du serveur puisque l’administrateur n’aura pas besoin de redémarrer les serveur pour les modifications prennent effets. 4.2.3 Serveur : Fonctions avancées L’administrateur du serveur pourra créer à sa guise des comptes utilisateurs, et les administrer. Cette création de comptes comprend la création de quota et des droits sur les répertoires en partage sur le serveur. Comme notre serveur utilisera le cryptage et decryptage des transferts, plusieurs options seront envisageables. Pour améliorer l’affichage du mode console du serveur, nous avons décidé d’informer l’utilisateur avec l’affichage du status de la connection. Cet affichage met en valeur toutes les statistiques relatives à transmission des différentes informations. 4.3 4.3.1 Fonctions communes Client/serveur Fonctions et protocole FTP Le client et le serveur devront accepter toutes les fonctions standard du protocole FTP. Cela inclus donc les fonctions de base : LOGIN, PASS, PORT, RETR, LIST ... et également les fonctions plus avancées, telles que PASV, APPEND. Le protocole FTP devra être strictement respecté, afin de garantir la compatibilité avec les clients/serveurs FTP existants. 4.3.2 Gestion des logs Une gestion avancée des logs est prévue, pour le client et surtout pour le serveur. Chaque action pourra être loguée. L’utilisateur pourra choisir quelles informations doivent être loguées, et personnaliser la méthode de création des fichiers de logs (leur taille, leurs noms...). 4.3.3 Limitations de vitesses Cette fonctionnalité est très intéressante car très pratique. Et ce autant dans le client que dans le serveur. Dans le serveur, l’administrateur pourra limiter l’utilisation globale de la bande passante de son serveur FTP. Dans le client, l’utilisateur pourra ajuster la limite instantanément la vitesse de téléchargement d’un transfert. C’est très pratique, par exemple lorsque l’on lance le téléchargement d’un gros fichier, et qu’on a besoin de la bande passante de la connexion temporairement, il suffit de limiter la vitesse de transfert pendant ce temps, et d’enlever cette limite ensuite. Cela évite de stopper le transfert. 4.3.4 Cryptage/décryptage des transferts Comme nous l’avons dit dans l’introduction, l’inconvénient majeur de ce genre de protocole est la sécurité. En effet, ce n’est pas le meilleur moyen de garder secrètes les données que l’on fait circuler. En effet, toutes les données circulent ”en clair” sur le reseau, notamment les commandes FTP et donc les identifiants de connection. Pour remédier à cela nous avons décidé d’instaurer un système de cryptage/décryptage entre nos clients et nos serveurs, mais sans pour autant mettre en péril la compatibilité avec les autres clients/serveurs. L’utilisateur aura donc le choix entre envoyer les données en mode normal ou bien en mode sécurisé, si les traitements se font entre un client et un serveur ThinkFTP.Ce n’est qu’un ”module”, qui sera activé ou non, selon les besoins des utilisateurs. Le type de cryptage utilisé sera de type symétrique, c’est-à-dire que la clé utilisée pour le cryptage et le décryptage sera la même. La clé ne sera pas la même pour chaque utilisateur, mais prendra le nom de l’utilisateur, ou une caractéristique qui lui sera propre. Le mode sécurisé ne restera donc qu’une option mais en l’utilisant, le principal point faible de ce protocole ne sera alors qu’un souvenir. 4.4 Site Web et fichier d’aide Bien entendu comme tout projet qui se respecte à EPITA, nous allons créer un site internet qui sera notre façade sur la toile. Il s’agit d’un projet réseau donc ça serai idiot de passer à côté de mettre en valeur projet. Tous les membres du groupe utilisent régulièrement la programmation internet en maitrisant le HTML et le Php. On peut donc s’attendre à un site professionnel avec une interface intuitive et agréable. Pour l’aide nous avons plusieurs idées à ce sujet. En effet, nous allons surment le faire au format HTML pour un meilleur dynamisme et une agréable navigation. D’autre part, le serveur est en mode console donc l’interressant d’intégrer une sorte de ”man” propre à notre application, histoire que l’administrateur puisse utiliser la pleine puissance de notre serveur FTP. 5 5.1 Moyens mis en oeuvre Moyens intellectuels Pour le choix du système d’exploitation utilisé, nous avons été guidés par les nécessités de la mise en place du serveur de ThinkFTP. La robustesse, l’efficacité et la reconnaissance générale des systèmes de type UNIX nous a naturellement conduit à rechercher notre système d’exploitation parmi ceux s’en inspirant. Le plus connu et le plus utilisé est bien entendu GNU/Linux, que nous avons donc adopté comme environnement de développement. Le client et le serveur de ThinkFTP fonctionneront donc sous ce système d’exploitation. Sous GNU/Linux, les outils de développement les plus communs sont le compilateur gcc pour la partie compilation du programme, l’interface de développement Glade pour la partie de mise en place l’interface graphique, et un simple éditeur de texte (vi ou emacs, au choix du programmeur) pour l’édition du code. Pour les différents tests que notre client et notre serveur devront subir, nous avons penché plutôt vers les logiciels déjà existants sous Windows, car ceux-ci sont bien plus performants et surtout mieux répandus que ceux crées pour l’univers linux. Le code source du projet sera réalisé en C. gcc - GNU Compiler Collection Le GNU Compiler Collection est un compilateur complet ANSI C incluant le support du C défini par Kernighan et Ritchie, ainsi que du C++, du C orienté objet, du Java et du Fortran. Gcc fournit de nombreux niveaux d’erreur traditionnellement fournis par d’autres outils (tels que lint), produit des informations de déboguage, et peut réaliser différentes optimisations du code résultant. La librairie GTK+ GTK+ est un toolkit pour créer des GUI d’un logiciel libre, multi-plateforme, désigné à l’origine pour le système X Window. GTK+ est accessible sous GNU LGPL (GNU Library General Public Licence), ce qui permet de développer gratuitement. GTK+ est utilisable sous les systèmes de type UNIX, Linux par exemple (cf. Inti, GNOME,...) et une version Windows est en cours de développement (cf. http ://user.sgic.fi/ tml/gimp/win32/ ). GTK+ est un ensemble de librairies servant à la création d’Interfaces Homme-Machine ( IHM ou GUI ). Son architecture orientée-objet est basée sur le langage C, ce qui laisse une flexibilité maximale... des liens vers d’autres langages ont été écrits, incluant C++, Objective-C, Guile/Sheme, Perl, Python, TOM, Ada95, Free Pascal et Eiffel. Les librairies sont les suivantes : – GLib - comprend de nombreux et utiles types de données, des macros, des outils de conversion de type, de manipulation des chaı̂nes de caractères et un index lexical. – GDK - un paquetage de fonctions simples de fenêtrage. – GTK - un ensemble de ”widgets” performants. Glade Glade est une application servant à créer des interfaces graphiques qui utilise les bibliothèques Gtk+ et GNOME. Glade permet de développer ces interfaces rapidement, et peut créer le code source dans différents langages qui construisent directement l’interface. Glade peut aussi être utilisé conjointement avec la libglade pour créer dynamiquement des interfaces utilisateurs à partir d’un fichier descriptif XML généré par Glade. Glade est composé de plusieurs fenêtres dont chacune à une fonction particulière. La fenêtre principale contient les menus, la barre d’outils et la liste des fenêtres de haut niveau. La palette regroupe les objets qu’il est possible d’utiliser pour construire une interface. L’éditeur de propriétés permet de manipuler les propriétés des widgets comme leur taille, couleur, signaux, etc. MikTeX La librairie MikTeX va nous permettre de taper les rapports de soutenance, tout comme elle nous a permis de rédiger ce cahier de charge. Bien évidemment, sa prise en charge par emacs en fait un outil puissant pour rédiger des documents au format tex sous linux, bien que nous avons du l’installer également sous Windows pour prévoir un quelconque disfonctionnement sous UNIX. ViM L’éditeur ViM signifie ” Vi iMproved ” (Vi amélioré). Vi est l’éditeur le plus populaire et le plus puissant du monde Unix. Son nom vient de l’abréviation éditeur Visuel. Un éditeur visuel comme Vi était un grand progrès par rapport aux éditeurs en ligne comme ’ed’ (ou ’ex’). Un bon éditeur tel que ViM permet d’augmenter la productivité lors de la rédaction de fichiers sources en C. Vim supporte les colorations syntaxiques du code ainsi que différentes fontes, normales, grasses ou italiques. Les programmeurs peuvent lire le code beaucoup plus rapidement si la syntaxe du code est colorées et mise en évidence. GNU Emacs Emacs est l’incarnation selon la Free Software Foundation de l’éditeur avancé, auto documenté, personnalisable, extensible et visuel en temps réel. Nous disons qu’Emacs est un éditeur visuel car, normalement, le texte étant édité est visible à l’écran et mis à jour automatiquement lorsque des commandes sont tapées. Nous l’appelons un éditeur en temps réel car l’affichage est mis à jour très fréquemment, généralement après chaque caractère ou paire de caractères tapés. Ce qui minimise la quantité d’informations que vous devez garder en mémoire lorsque vous éditez. Nous qualifions Emacs d’avancé car il fournit des facilités au delà de la simple insertion et suppression : contrôle de sous processus, indentation automatique de programmes, visualisation de deux fichiers ou plus à la fois, édition de texte formaté, traitement en terme de caractères, mots, lignes, phrases, paragraphes et pages, mais aussi expressions et commentaires pour différents langages de programmation. 5.2 Moyens matériels Pour l’instant, les livres utilisés sont : – – – – – – – Programmation Linux avec GTK De David Odin De Windows à Linux De Challi, Martin Langage C. Programmation Windows et Linux. De Collectif RFC 8890 FTP Le langage C norme ANSI de Kernighan et Ritchie 2ème édition Les sockets sous LiNUX par Beej. LATEXpar la pratique de Christian Rolland aux éditions O’Reilly Les Stations de développement comprennent pour chaque développeur : Camard Guillaume PC sous Windows XP Pro et Mandrake 9.0 AMD Duron 700Mhz 312Mo SDRAM DD 60 Go GeForce 4 Ti 4400 128 DDR Abit theator 5.1 ! Graveur/Lecteur CD/DVD Hub 10Mbps 4 ports Portable sous Windows Me et Cygwin AMD Duron 800Mhz 128Mo SDRAM DD 10 Go Ati Rage Mobility Sblaster live ! Lecteur CD/DVD Manente Nicolas PC sous WindowsXP Pro et Debian r3.1 Athlon XP 1700+ 256Mo DDR DD 45 Go GeForce 2 64Mo Sblaster live ! Graveur PC sous Windows XP AMD Athlon 800Mhz 256Mo SDRAM DD 30 Go GeForce 2 GTS Sblaster live ! Graveur/Lecteur DVD 5.3 Thiesson Johann PC sous Windows 2000 Pro et Debian r3.1 AMD Athlon 1200Mhz 256Mo DDR DD 40 Go GeForce 2 GTS Sblaster live ! Graveur/Lecteur CD Switch 100/1000 8 ports Pc sous Debian r3.1 AMD K6 II 400Mhz 196Mo SDRAM DD 5 Go Voodoo 3 3000 Lecteur CD Manrique Aaron PC sous Windows XP et Debian r3.1 Athlon XP 1800+ 256Mo DDR DD 40 Go GeForce 3 Ti4200 Sblaster live ! Graveur/Lecteur CD PC sous Windows 2000 Pro Pentium III 666Mhz 512Mo SDRAM DD 20 Go GeForce 2 GTS Sblaster live ! Graveur/Lecteur CD Moyens en commun pour le groupe Nous disposons tous d’une Connexion ADSL netissimo 1. Connectique Réseau haute performance 10/100Mb qui comprend des cartes réseaux performantes ainsi que des câbles blindés pour éviter tout problème. Un switch très performant dans le but de contenir les problèmes de trafique réseau induits par les tests menés à grande échelle sur nos différents modules (Client/Serveur). A compter du lundi 2 décembre 2002, nous disposerons de 26 semaines brutes et de 20 semaines nettes pour développer notre projet. Durant ces six mois, le projet devra passer de rien (dans l’état actuel des choses) à tout (du moins, nous l’espérons ...). 5.4 Coûts de fabrication 8 PC de développement Livres de Programmation en C Livres Utilisation de Linux Connexions Internet Consommation Electricité [EDF] Consommation alimentaire Transport Total 50 1 1 10 12 35 4 113 000 000 000 000 000 000 800 800 FR FR FR FR FR FR FR FR 7 622.45 152.45 152.45 1 524.49 1 829.39 5 335.72 731.76 17 348.70 C C C C C C C C Ceci prouve donc bien qu’un projet informatique n’est pas quelque chose d’aisé à faire, et qu’il faut des moyens, aussi bien financiers que temporels et intellectuels pour le réaliser... Aucun bénéfice économique n’est envisagé, le projet étant open source et gratuit. 6 6.1 Planification Répartition des taches XXX XXX Codeurs Guillaume XXX Taches XX Client FTP Serveur FTP X Interface Cryptage X Fonctions avancées X Multithreads X Site Web X 6.2 Echéancier Nicolas Aaron X Johann X X X X X X X X X X X X X Soutenances `` ``` ``` Cryptage Multithread Fonctions avancées Site Web Client Taches Serveur ``` ``` 1 2 Implémentation Log, PASV, Resume... X Comptes X Mode graphique e nc a en ut o S Etude Mode Texte Mode texte e nc a en ut o S 3 Implémentation des fonctions avancées X Limite de vitesse, comptes... X e nc a en ut o S 4 X Mise en commun et assemblement des différents éléments e nc a en ut o S 7 Conclusion Nous avons tout pour réaliser un bon projet cette année : – – – – Nous sommes redoublants, nous avons donc une expérience en C (sous Unix pour certains) dans le groupe nous nous connaissons tous depuis plus de 2 ans Et nous avons une idée du projet qui nous motive tous. Nous avons l’intention d’utiliser ces avantages au mieux, pour créer un produit utile que nous pourrons utiliser par la suite, mais aussi un produit complet, pratique et surtout fini.