Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
ISAIP18, rue du 8 Mai 194549000 St BarthĂ©lĂ©my dâAnjou
Dossier de ConceptionDĂ©veloppement dâune application de personnalisation de systĂšme
dâexploitation : âOS A La Carteâ1 FĂ©vrier 2007
Mohammed BADISS, JĂ©rĂŽme CHARLOT
2eme annĂ©e CPIPromotion 2005 â 2007
Sous la responsabilité de :M Alexandre LEPRIEULT ;
Projet âOS A La Carteâ Dossier de Conception
Table des matiĂšres
1 Traçabilité 4
2 Introduction 42.1 But du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Documents de référence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Rappels 43.1 Objectifs du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.2 ProcĂ©dĂ© de fabrication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.3 Les FonctionnalitĂ©s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.4 DĂ©coupage de lâapplication en modules . . . . . . . . . . . . . . . . . . . . . . . . . . 73.5 RĂŽle de chaque module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Architecture dynamique du logiciel 94.1 ModÚle Physique de Données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 Tùche de préparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2.1 Traitements effectués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.2.2 Enchaßnements et flots de données . . . . . . . . . . . . . . . . . . . . . . . . . 104.2.3 Modules utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 Tùche de mise à jour des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.3.1 Traitements effectués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.3.2 Enchaßnements et flots de données . . . . . . . . . . . . . . . . . . . . . . . . . 104.3.3 Modules utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5 Conception des modules 125.1 Module âFeedâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.1.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.1.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 12
5.2 Conception du module âFeedâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.2.1 ProcĂ©dure de vĂ©rification des informations fournies en paramĂštre. . . . . . . . . 135.2.2 Traitement des dĂ©pots et alimentation de la base de donnĂ©es. . . . . . . . . . . . 145.2.3 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155.2.4 DĂ©pendances du modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Module âWatch and Notifyâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.3.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.3.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 175.3.3 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4 Module âPackage Profilesâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.4.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.4.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 18
5.5 Conception du module âPackage Profileâ . . . . . . . . . . . . . . . . . . . . . . . . . 195.5.1 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.5.2 DĂ©pendances du modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.6 Module âPackage Wrapperâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.6.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.6.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 20
BADISS â CHARLOT - 1 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.6.3 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.6.4 DĂ©pendances du modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.7 Module âPreseedâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.7.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.7.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 21
5.8 Conception du module âPreseedâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.8.1 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.8.2 DĂ©pendances du modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.9 Module âRemasterâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.9.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.9.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 23
5.10 Conception du script âPrĂ©paration Remasterâ . . . . . . . . . . . . . . . . . . . . . . . 235.11 Conception du module âRemasterâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.11.1 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.11.2 DĂ©pendances du modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.12 Module âSelectâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.12.1 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.12.2 Relations dâutilisation avec dâautres modules . . . . . . . . . . . . . . . . . . . 27
5.13 Conception de lâinterface Homme â Machine . . . . . . . . . . . . . . . . . . . . . . . 275.14 ProcĂ©dure de vĂ©rification de la sĂ©lection de lâutilisateur . . . . . . . . . . . . . . . . . . 285.15 Utilisation de fonctions PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.15.1 DĂ©finitions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
BADISS â CHARLOT - 2 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Table des figures
1 SchĂ©ma â DĂ©roulement du procĂ©dĂ© de fabrication. . . . . . . . . . . . . . . . . . . . . . 52 SchĂ©ma â Choix possibles de lâutilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . 63 SchĂ©ma â DĂ©coupage de lâapplication OS A La Carte en modules. . . . . . . . . . . . . 74 SchĂ©ma â ModĂšle Physique de DonnĂ©es pour lâapplication OS A La Carte. . . . . . . . . 95 SchĂ©ma â Conception du module âFeedâ. . . . . . . . . . . . . . . . . . . . . . . . . . 136 SchĂ©ma â Exemple dâun fichier dĂ©pot contenant une liste de paquets. . . . . . . . . . . . 157 Tableau â Liste des variables et leur type du module âFeedâ . . . . . . . . . . . . . . . . 168 Tableau â Liste des variables et leur type du module âWatch and Notifyâ . . . . . . . . . 189 SchĂ©ma â Conception du module âPackage Profileâ. . . . . . . . . . . . . . . . . . . . . 1910 SchĂ©ma â Conception du module âPreseedâ. . . . . . . . . . . . . . . . . . . . . . . . . 2211 SchĂ©ma â Conception du script âPrĂ©paration Remasterâ. . . . . . . . . . . . . . . . . . 2312 SchĂ©ma â Conception du module âRemasterâ. . . . . . . . . . . . . . . . . . . . . . . . 2413 IHM â Interface non dĂ©taillĂ©e de sĂ©lection de configuration de lâutilisateur . . . . . . . . 2614 IHM â Interface dĂ©taillĂ©e de sĂ©lection de configuration de lâutilisateur . . . . . . . . . . 27
BADISS â CHARLOT - 3 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
1 Traçabilité
Version Date Commentaires1.00 05/01/07 PremiĂšre version1.20 21/01/07 Ajout des schĂ©mas de conception1.30 03/02/07 Ajout de la partie Rappel1.40 03/02/07 RedĂ©finition des modules âSelectâ et âFeedâ2.00 04/02/07 Correction orthographe
2 Introduction
2.1 But du document
Ce dossier prĂ©sente la phase de conception du logiciel dâun point de vue mĂ©thodologique. Il dĂ©pendtrĂšs peu de lâapplication elle-mĂȘme.
2.2 Documentation
2.2.1 Documents de référence
Les documents de référence sont le dossier de Cahier des Charges et la dossier de SpecificationsFonctionnelles.
3 Rappels
Il est nĂ©cessaire dâeffectuer quelques rappels, pour rappeler les parties importantes du dĂ©roulementdu projet.
3.1 Objectifs du projet
Notre projet nommĂ© âOS A La Carteâ a pour but de personnaliser un systĂšme dâexploitation depuisune page Internet, plus particuliĂšrement de gĂ©nĂ©rer une image du DVD dâinstallation dâune distribution Linux.
Cette image au format ISO est destinĂ©e a ĂȘtre gravĂ©e sur un DVD. Une fois gravĂ©e, lâutilisateur in-sĂšre le DVD dans son lecteur de DVD puis amorce le processus dâinstallation. Lâutilisateur installe alorsce systĂšme dâexploitation sur sa machine.
Notre travail repose donc entiÚrement sur la modification selon les demandes et les besoins du clientde la distribution Linux nommée Ubuntu.
Cette personnalisation sâĂ©ffectue Ă la base du systĂšme dâexploitation, tout dâabord au niveau desprogrammes qui sont courramment utilisĂ©s et mais Ă©galement au niveau de lâinstallation dâapplicationsadditionnelles.
BADISS â CHARLOT - 4 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
3.2 Procédé de fabrication
FIG. 1 â SchĂ©ma â DĂ©roulement du procĂ©dĂ© de fabrication.
Le procédé de fabrication se déroule en trois phases, qui sont les suivantes :
1. La premiĂšre phase est la sĂ©lection de la configuration depuis notre interface Web. Cette opĂ©rationest la seule effectuĂ©e par lâutilisateur. Le temps de rĂ©ponse lâinterface web dĂ©pend principalementde la bande passante du client, et de notre serveur. Mais avec les connexions actuelles, la techno-logie ADSL Ă©tant largement rĂ©pendue, ce temps est nĂ©gligeable (Ă peine quelques secondes).
2. Une fois la phase de personnalisation terminĂ©e. La phase de gĂ©nĂ©ration du DVD dâinstallation,rĂ©alisĂ©e par notre application, peut exiger environ 3 minutes sur le serveur dĂ©diĂ© (un Pentium 4 ouĂ©quivalent).
3. Finalement, la phase de tĂ©lĂ©chargement de lâimage du DVD est la plus exigeante au niveau temps,car comme la premiĂšre phase, elle dĂ©pend de la bande passante que dispose le client mais surtoutcelle que nous allouons pour le serveur de tĂ©lĂ©chargement.
BADISS â CHARLOT - 5 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
3.3 Les Fonctionnalités
Voici un schĂ©ma qui rĂ©presente lâĂ©tendue des choix pour lesquels lâutilisateur peut personnaliser sonsystĂšme dâexploitation :
FIG. 2 â SchĂ©ma â Choix possibles de lâutilisateur.
BADISS â CHARLOT - 6 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Lâutilisateur personnalise le DVD dâinstallation Ă trois niveaux diffĂ©rents.
Les trois niveaux sont :
1. FonctionnalitĂ©s au niveau du DVD dâinstallation.
2. Modifications des paquets les plus importants.
3. Choix des profiles dâapplications.
Ces diffĂ©rents niveaux sont abstraits et transparents pour lâutilisateur, ils correspondent Ă un dĂ©cou-page en modules de lâapplication. Ce dĂ©coupage est dĂ©taillĂ© dans la partie âDĂ©coupage de lâapplicationen modulesâ.
3.4 DĂ©coupage de lâapplication en modules
FIG. 3 â SchĂ©ma â DĂ©coupage de lâapplication OS A La Carte en modules.
3.5 RĂŽle de chaque module
â âFeedâ prendra en compte le suivi des mises Ă jour proposĂ©es par les dĂ©pots officiels dâUbuntu(RĂ©ponse Ă la contrainte de sĂ©curitĂ©) ;
â âWatch and Notifyâ aura pour rĂŽle dâafficher les changements des dĂ©pots ;â âPackage Profilesâ sâoccupera de la gestion des profiles dâapplications ;â âPackage Wrapperâ gĂ©rera les paquets, Ă savoir leur ouverture, leur modification, et finallement
leur reconstruction ;â âPreseedâ concernera le paramĂ©trage du CD dâinstallation ;â âRemasterâ aura pour tĂąche la crĂ©ation de lâimage ISO en prenant en compte les modules âPa-
ckage Profileâ, âPackage Wrapperâ et âPreseedâ ;
BADISS â CHARLOT - 7 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
â âSelectâ sera lâinterface ou lâutilisateur sĂ©lectionnera ses choix ;â âScheduleâ gĂ©rera les utilisateurs, avec une file dâattente, la sauvegarde des sĂ©lections des utilisa-
teurs (Module Non Prioritaire).
BADISS â CHARLOT - 8 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
4 Architecture dynamique du logiciel
4.1 ModÚle Physique de Données
FIG. 4 â SchĂ©ma â ModĂšle Physique de DonnĂ©es pour lâapplication OS A La Carte.
BADISS â CHARLOT - 9 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Le ModÚle Physique de Données est un modÚle qui tient compte du moteur de base données pourgérer les données. Ainsi avec le MPD nous savons quels sont les types de chaque attribut et égalementles clés étrangÚres.
4.2 Tùche de préparation
4.2.1 Traitements effectués
Cette tĂąche est effectuĂ©e par lâadministrateur, elle est exceptionnelle car rĂ©alisĂ©e quâune seule foislors de lâinstallation de lâapplication.Elle consiste Ă prĂ©parer les rĂ©pertoires et autres fichiers qui seront utilisĂ©s par la suite par le programmede gĂ©nĂ©ration de lâimage DVD.
Câest Ă©galement durant cette Ă©tape que nous allons utiliser la cryptographie avec lâaide des clĂ©spublique et privĂ©e. En effet lorsque le processus dâinstallation est en cours dâexĂ©cution, il va vĂ©rifier queles programmes prĂ©sents sur le DVD dâinstallation nâont pas Ă©tĂ© modifiĂ©s pour installer des applicationsdites âcompromisesâ (contenant des trojans, backdoor, bombes logiques, ...).
Ainsi il est nĂ©cessaire de signer lâimage DVD et de joindre la clĂ© publique dans lâimage. Cette Ă©tapeest rĂ©alisĂ©e pendant la tĂąche de prĂ©paration.
4.2.2 Enchaßnements et flots de données
Une fois tout le traitement rĂ©alisĂ©, lâadministrateur regroupe les fichiers sous forme dâarchives. Ceseront ces archives qui seront utilisĂ©es comme rĂ©fĂ©rences pour construire lâimage du DVD dâinstallation.
4.2.3 Modules utilisés
Les modules qui seront utilisĂ©s sont âFeedâ et âRemasterâ.
4.3 TĂąche de mise Ă jour des paquets
4.3.1 Traitements effectués
Notre image du DVD se base sur Ubuntu âEdgy Eftâ qui est sortie au mois dâoctobre 2006, or depuisce temps il y a eu des mises Ă jour qui ont Ă©tĂ© diffusĂ©es sur les dĂ©pĂŽts.
Tous les laps de temps rĂ©guliers, par exemple toutes les 6 heures ou 12 heures, nous rĂ©actualiseronsle contenu de dĂ©pĂŽts âSĂ©curitĂ©â et mettrons Ă jour notre archive de rĂ©fĂ©rence.
4.3.2 Enchaßnements et flots de données
Le module âFeedâ rĂ©actualisera les nouveaux paquets disponibles et une requĂȘte sur la base de don-nĂ©es fera ressortir les paquets qui seront prĂ©sent sur lâimage DVD.Il nous restera donc a mettre Ă jour les paquets sĂ©lectionnĂ©s et la liste qui les rĂ©fĂ©rence tous.
BADISS â CHARLOT - 10 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
4.3.3 Modules utilisés
Les modules qui seront en relation avec cette tĂąche seront âRemasterâ, âWatch and Notifyâ et âFeedâ
BADISS â CHARLOT - 11 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5 Conception des modules
5.1 Module âFeedâ
5.1.1 Objectifs du module
Ce module prendra en compte le suivi des mises Ă jour proposĂ©es par les dĂ©pots officiels dâUbuntu(RĂ©ponse Ă la contrainte de sĂ©curitĂ©).
Ce module sera développé en langage procédurale Python.
5.1.2 Relations dâutilisation avec dâautres modules
Ce module bien quâĂ©tant trĂšs fortement liĂ© au module âWatch & Notifyâ nâest pas en relation avecdâautres modules.Cependant ce module sera en relation avec la base de donnĂ©es.
BADISS â CHARLOT - 12 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.2 Conception du module âFeedâ
FIG. 5 â SchĂ©ma â Conception du module âFeedâ.
Le modules âFeedâ fonctionne indĂ©pendamment des autres modules et va rechercher des informa-tions dans la base de donnĂ©es et en ajouter et/ou en mettre Ă jour.
5.2.1 Procédure de vérification des informations fournies en paramÚtre.
Tout dâabord le programme âFeedâ pour fonctionner a besoin de 3 paramĂštres qui sont les suivants :
â lâarchitecture (par exemple : i386, ppc ou amd64) ;â le nom du dĂ©pĂŽt (par exemple : edgy, edgy-updates, edgy-security ou edgy-backports) ;â les composants de chaque dĂ©pĂŽts (par exemple : main, restricted, multiverse, universe).
Pour effectuer la vĂ©rification, tout dâabord nous comptons le nombre dâarguments avec le modulesys.argv il faut que ce tableau ait une longueur de 4 Ă©lĂ©ments (le nom du programme et les 3 arguments).
Ensuite, nous essayons de vérifier que les informations fournies sont exactes, pour cela nous allonsvérifier que le fichier correspondant au composant du dépot existe.
BADISS â CHARLOT - 13 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Nous allons pour cela, utiliser le module Python httplib et les fonctions suivantes :
â httplib.HTTPConnection() : qui instancie un objet de type connexion HTTP ;â request() : qui Ă©met une requĂȘte de type âGETâ avec les paramĂštres fournis ;â getresponse() : qui permet de savoir lâĂ©tat de la requĂȘte HTTP * ;â close() : qui permet de fermer la connexion HTTP.
* Note : Le résultat est celui défini par la norme HTTP, le code de retour normal est 200, tous lesautres codes sont des erreurs (par exemple 404 pour fichier non trouvé).
Ainsi si la fonction getresponse() retourne un code diffĂ©rent de 200, alors câest que lâutilisateur sesera trompĂ© Ă saisir les paramaĂštres, ce qui aura pour consĂ©quence dâinterrompre le programme avec unesortie dâerreur Ă lâaide de la fonction sys.exit("erreur saisie de paramĂštre").
Une fois que nous nous sommes assurés que les paramÚtres transmis sont valides, nous pouvons pas-ser au traitement des paquets contenu dans les dépots.
5.2.2 Traitement des dépots et alimentation de la base de données.
Nous allons Ă nouveau utiliser le module Python httplib pour tĂ©lĂ©charger localement le fichier quiliste lâensemble des paquets pour un composant dâun dĂ©pot donnĂ©.
Pour cela on utilise les fonctions suivantes :
â httplib.HTTPConnection() : qui instancie un objet de type connexion HTTP ;â request() : qui Ă©met une requĂȘte de type âGETâ avec les paramĂštres fournis ;â getresponse() : qui permet de savoir lâĂ©tat de la requĂȘte HTTP * ;â urllib2.Request() : qui permet de rĂ©cupĂ©rer une copie local dâun fichier accessible sur un serveur
web ;â request.add_header() : permet de spĂ©cifier le type de fichier que nous tĂ©lĂ©chargerons (le MIME
TYPE), il sâagit ici dâune archive compressĂ©e au format GZIP (nous mettrons comme para-mĂštres : âAccept-encodingâ, âgzipâ) ;
â close() : qui permet de fermer la connexion HTTP.
Ainsi, à ce stade, nous avons récupéré une copie du fichier qui contient la liste des paquets qui estcompressé au format GZIP.
Pour traiter cette archive, nous allons utiliser le module Python gzip, et les fonctions suivantes :
â DĂ©claration du fichier en fichier compressĂ© StringIO.StringIO(compresseddata) ;â gzip.GzipFile(fileobj=compressedata), permet de gĂ©rĂ© les fichiers compressĂ©s au format gzip ;â open() permet dâouvrir le fichier compressĂ© ;â read() permet de lire le contenu du fichier.Ensuite, nous lisons le fichier de contenu du dĂ©pĂŽt (la liste de ses paquets), on le âparseâ, on analyse
chaque ligne, un paquet est définit par le mot clé Package et toutes les lignes qui suivent sont des infor-mations relatives à ce paquet.
BADISS â CHARLOT - 14 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Package: apache2Priority: optionalSection: webInstalled-Size: 80Maintainer: Ubuntu Core Developers <[email protected]>Original-Maintainer: Debian Apache Maintainers <[email protected]>Architecture: i386Version: 2.0.55-4ubuntu4Depends: apache2-mpm-worker (= 2.0.55-4ubuntu4) | apache2-mpm-prefork (= 2.0.55-4ubuntu4)| apache2-mpm-perchild (= 2.0.55-4ubuntu4)Filename: pool/main/a/apache2/apache2_2.0.55-4ubuntu4_i386.debSize: 35976MD5sum: b41e510af15a616746930c7ba86362c2SHA1: be0399c61f2b3e3a27a0b1f2f558bc7218b7f7bcSHA256: 2d1659ecb4512b257c933a2c9842f8a416641f939000f7d105ef9fa30c167a3bDescription: next generation, scalable, extendable web serverApache v2 is the next generation of the omnipresent Apache web server. Thisversion - a total rewrite - introduces many new improvements, such asthreading, a new API, IPv6 support, request/response filtering, and more.Bugs: mailto:[email protected]: UbuntuTask: lamp-server
Package: apache2-mpm-preforkPriority: optionalSection: netInstalled-Size: 468...
FIG. 6 â SchĂ©ma â Exemple dâun fichier dĂ©pot contenant une liste de paquets.
Avant de crĂ©er un nouvel enregistrement dans la base de donnĂ©es, on vĂ©rifie que cet enregistrementnâexiste pas dĂ©jĂ avec les fonctions du module Mysqldb :
â db.cursor() : dĂ©finit un curseur pour manipuler les donnĂ©es de la base de donnĂ©es ;â cursor.execute() : permet dâexĂ©cuter une requĂȘte au niveau de la base de donnĂ©es et notamment
la table âPackageâ ;â cursor.fetchall() : permet de rĂ©cuperer le rĂ©sultat de la requĂȘte sous forme dâun tableau en Python.
Une fois que le script Python âFeedâ a terminĂ© son exĂ©cution, on se retrouve avec une liste de paquetsdans la base de donnĂ©es qui correspond au contenu des dĂ©pots dâUbuntu disponibles sur Internet.
5.2.3 DĂ©finitions de types
Ce module est composé des types suivants :
BADISS â CHARLOT - 15 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Nom variable Type de donnéesPackage_id int(5)
PackageName varchar(50)DistroName varchar(20)
DistroVersion varchar(6)Official tinyint(1)Priority varchar(10)Section varchar(20)
InstalledSize int(15)Maintener varchar(50)
Architecture varchar(9)Source varchar(45)Version varchar(45)
Replaces varchar(50)Provides varchar(75)Depends textConflicts varchar(75)Suggests textFilename varchar(250)
Size int(15)MD5sum varchar(32)
SHA1 varchar(60)SHA256 varchar(60)
Description textBugs varchar(75)
Origin varchar(20)Task varchar(125)
Component varchar(20)Repository varchar(20)LastUpdate datetime
CD tinyint(1)PackageProfileSelection tinyint(1)
FIG. 7 â Tableau â Liste des variables et leur type du module âFeedâ
5.2.4 DĂ©pendances du modules
Pour fonctionner ce module a besoin des dĂ©pendances suivantes :â urllib2â httplibâ StringIOâ gzipâ sysgzipâ MySQLdbâ time
BADISS â CHARLOT - 16 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.3 Module âWatch and Notifyâ
5.3.1 Objectifs du module
Ce module aura pour rĂŽle dâafficher le rĂ©sultat du module âFeedâ sous forme dâune page web. Ainsiil ne concerne pas directement la personnalisation du DVD dâinstallation.
5.3.2 Relations dâutilisation avec dâautres modules
Ce module sera en relation avec la base de données.
5.3.3 DĂ©finitions de types
Ainsi ce module partagera les mĂȘmes variables que le module âFeedâ qui sont les suivantes :
BADISS â CHARLOT - 17 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Nom variable Type de donnéesPackage_id int(5)
PackageName varchar(50)DistroName varchar(20)
DistroVersion varchar(6)Official tinyint(1)Priority varchar(10)Section varchar(20)
InstalledSize int(15)Maintener varchar(50)
Architecture varchar(9)Source varchar(45)Version varchar(45)
Replaces varchar(50)Provides varchar(75)Depends textConflicts varchar(75)Suggests textFilename varchar(250)
Size int(15)MD5sum varchar(32)
SHA1 varchar(60)SHA256 varchar(60)
Description textBugs varchar(75)
Origin varchar(20)Task varchar(125)
Component varchar(20)Repository varchar(20)LastUpdate datetime
CD tinyint(1)PackageProfileSelection tinyint(1)
FIG. 8 â Tableau â Liste des variables et leur type du module âWatch and Notifyâ
5.4 Module âPackage Profilesâ
5.4.1 Objectifs du module
Ce module sâoccupera de la gestion des profiles dâapplications. Il aura pour rĂŽle de copier les paquetsadditionnels sĂ©lectionnĂ©s par lâutilisateur.
5.4.2 Relations dâutilisation avec dâautres modules
Ce module sera en relation avec la base de données.
BADISS â CHARLOT - 18 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.5 Conception du module âPackage Profileâ
FIG. 9 â SchĂ©ma â Conception du module âPackage Profileâ.
5.5.1 DĂ©finitions de types
Ce paragraphe donne la liste des dĂ©finitions de type. Dans le cas dâune conception orientĂ©e objetscette dĂ©finition de type peut ĂȘtre unique et reprĂ©senter les attributs de lâobjet associĂ© au module.
Nom variable Type de donnéesIdPackageModification int(8)
Option varchar(250)Type tinyint
DefaultValue varchar(30)FileType varchar(10)FilePath varchar(100)
FileName varchar(35)
5.5.2 DĂ©pendances du modules
Pour fonctionner ce module a besoin des dĂ©pendances suivantes :â MySQLdb
BADISS â CHARLOT - 19 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.6 Module âPackage Wrapperâ
5.6.1 Objectifs du module
Ce module gérera les paquets, à savoir leur ouverture, leur modification, et finallement leur recons-truction.
5.6.2 Relations dâutilisation avec dâautres modules
Ce module sera en relation avec la base de données.
5.6.3 DĂ©finitions de types
Ce paragraphe donne la liste des dĂ©finitions de type. Dans le cas dâune conception orientĂ©e objetscette dĂ©finition de type peut ĂȘtre unique et reprĂ©senter les attributs de lâobjet associĂ© au module.
5.6.4 DĂ©pendances du modules
Pour fonctionner ce module a besoin des dĂ©pendances suivantes :â MySQLdb
BADISS â CHARLOT - 20 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.7 Module âPreseedâ
5.7.1 Objectifs du module
Ce module concerne le paramĂ©trage du DVD dâinstallation avec la rĂ©alisation du fichier de configu-ration.
5.7.2 Relations dâutilisation avec dâautres modules
Ce module sera en relation avec la base de données.
BADISS â CHARLOT - 21 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.8 Conception du module âPreseedâ
FIG. 10 â SchĂ©ma â Conception du module âPreseedâ.
5.8.1 DĂ©finitions de types
Ce paragraphe donne la liste des dĂ©finitions de type. Dans le cas dâune conception orientĂ©e objetscette dĂ©finition de type peut ĂȘtre unique et reprĂ©senter les attributs de lâobjet associĂ© au module.
Nom variable Type de donnéespreseed_lang varchar(20)
preseed_network tinyint(1)preseed_hostname varchar(20)
preseed_domainname varchar(20)preseed_timezone varchar(45)
preseed_user varchar(30)preseed_password varchar(30)
5.8.2 DĂ©pendances du modules
Pour fonctionner ce module a besoin des dĂ©pendances suivantes :â MySQLdb
BADISS â CHARLOT - 22 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.9 Module âRemasterâ
5.9.1 Objectifs du module
Ce module aura pour tĂąche la crĂ©ation de lâimage ISO en prenant en compte les modules âPackageProfileâ, âPackage Wrapperâ et âPreseedâ.
5.9.2 Relations dâutilisation avec dâautres modules
Ce module sera en relation avec les modules âPackage Profileâ, âPackage Wrapperâ et âPreseedâmais Ă©galement avec la base de donnĂ©es.
Pour fonctionner le module âRemasterâ nĂ©cessite que certains fichiers soient prĂ©parer, pour cela nousavons crĂ©Ă© un script qui sâappele PrĂ©paration Remaster qui a Ă©tĂ© concu, comme ceci :
5.10 Conception du script âPrĂ©paration Remasterâ
FIG. 11 â SchĂ©ma â Conception du script âPrĂ©paration Remasterâ.
BADISS â CHARLOT - 23 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.11 Conception du module âRemasterâ
FIG. 12 â SchĂ©ma â Conception du module âRemasterâ.
5.11.1 DĂ©finitions de types
Ce paragraphe donne la liste des dĂ©finitions de type. Dans le cas dâune conception orientĂ©e objetscette dĂ©finition de type peut ĂȘtre unique et reprĂ©senter les attributs de lâobjet associĂ© au module.
Nom variable Type de donnéesIDSelection int(8)
IsoName varchar(75)IsoFileName varchar(100)CreationDate datetime
GenerationDate datetime
BADISS â CHARLOT - 24 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.11.2 DĂ©pendances du modules
Pour fonctionner ce module a besoin des dĂ©pendances suivantes :â StringIOâ gzipâ sysgzipâ MySQLdb
BADISS â CHARLOT - 25 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.12 Module âSelectâ
5.12.1 Objectifs du module
Ce module est le point dâentrĂ©e de notre logiciel. En effet, câest dans cette interface que lâutilisateureffectue la sĂ©lection et les diffĂ©rents choix de sa configuration.
Cette partie fait rĂ©fĂ©rence Ă la spĂ©cification dâinterface Homme â Machine dĂ©finie dans le dossier despĂ©cifications. Ainsi, pour que lâutilisateur ne se perde pas dans tous les paramĂštres, nous allons afficherune page web simple.
On retrouve la division en 3 parties : la configuration du systĂšme de base (au niveau du Preseed), laconfiguration dĂ©taillĂ©e de paquets et enfin la sĂ©lection de profiles dâapplications.
FIG. 13 â IHM â Interface non dĂ©taillĂ©e de sĂ©lection de configuration de lâutilisateur .
BADISS â CHARLOT - 26 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
5.12.2 Relations dâutilisation avec dâautres modules
AprĂšs les vĂ©rifications nĂ©cessaires, ce module sera en relation avec la base de donnĂ©es et plus parti-culiĂšrement la table âSelectionâ.
5.13 Conception de lâinterface Homme â Machine
Pour concevoir cette spécification, nous utiliserons les technologies Javascript et CSS.
FIG. 14 â IHM â Interface dĂ©taillĂ©e de sĂ©lection de configuration de lâutilisateur .
Toutes les zones de choix de configuration masquĂ©es, reprĂ©sentĂ©es en verte sur lâIHM, seront dĂ©limi-tĂ©es par des balises HTML de type </span>...</span>, par dĂ©faut, elles seront masquĂ©es, nous utiliseronsdonc les attributs suivants : style="visibility :hidden ;display :none".
BADISS â CHARLOT - 27 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Nous gĂ©rerons les Ă©vĂ©nements, Ă lâaide du Javascript. DĂšs que lâutilisateur cliquera sur le titre dupaquet Ă modifier par exemple âPersonnalisation du navigateur internetâ ou encore âPersonnalisation delâĂ©diteur de texteâ une fonction Javascript sera appelĂ©e.
LâĂ©vĂ©nement dĂ©clenchĂ© appellera la fonction Javascript âtoggleVisibilitĂ©â qui aura pour but dâafficherla zone si elle est masquĂ©e ou alors de la cacher si elle est affichĂ©e.
Pour afficher la zone, nous positionnerons les variables Visibility Ă âvisibleâ et Display Ă âinlineâ dela zone selectionnĂ©e et au contraire pour masquer la zone nous positionnerons les variables Visibility Ă âhiddenâ et Display Ă ânoneâ.
5.14 ProcĂ©dure de vĂ©rification de la sĂ©lection de lâutilisateur
Pour transmettre les informations du formulaire nous utilisons la mĂ©thode POST. La vĂ©rification vasâeffectuer dans la page PHP appelĂ©e insert.php.
Pour récuperer la valeur des informations transmises, nous allons utiliser la fonction PHP $HTTP_POST_VARS.
Les types suivants seront considĂ©rĂ©s comme obligatoires lors de lâenregistrement dâune nouvellesĂ©lection dans la base de donnĂ©es et la page insert.php va donc vĂ©rifier quâils sont correctement rensei-gnĂ©s :
â IDSelection ;â preseed_lang ;â preseed_network ;â preseed_hostname ;â preseed_domainname ;â preseed_timezone ;â preseed_user ;â preseed_password ;â IsoName ;â IsoFileName.
5.15 Utilisation de fonctions PHP
Pour se connecter à la base de données et y réaliser toutes les opérations nécessaires, comme dessélections ou des insertions, nous utiliserons les fonctions PHP/MySQL suivantes :
â mysql_connect() : permet de se connecter Ă un serveur de base de donnĂ©es ;â mysql_select_db() : permet de se connecter Ă une base de donnĂ©es ;â mysql_query() : envoie une requĂȘte de sĂ©lection et dâajout au SGBDR ;â mysql_fetch_row() : rĂ©alise le traitement de chaque enregistrements du rĂ©sultat dâune requĂȘte ;â mysql_fetch_array() : rĂ©cupĂšre les informations sous forme de tableau PHP (array).
BADISS â CHARLOT - 28 - 1 FĂ©vrier 2007
Projet âOS A La Carteâ Dossier de Conception
Dans le but de lancer la procĂ©dure de gĂ©nĂ©ration de lâimage ISO, nous exĂ©cuterons alors le scriptde gĂ©nĂ©ration avec la fonction popen(), qui a pour but de lancer une commande au niveau non plus duserveur web mais du systĂšme dâexploitation.
La fonction popen() sera donc appelĂ©e avec en paramĂštre le script Python en charge de la gĂ©nĂ©ra-tion et lâidentifiant de lâutilisateur dans le but de rĂ©cupĂ©rer les informations enregistrĂ©es dans la base dedonnĂ©es.
5.15.1 DĂ©finitions de types
Les variables que nous utilisons pour ce module sont définies de la maniÚre suivante :
Nom variable Type de donnéesIDSelection varchar(12)preseed_lang varchar(20)
preseed_network tinyint(1)preseed_hostname varchar(20)
preseed_domainname varchar(20)preseed_timezone varchar(45)
preseed_user varchar(30)preseed_password varchar(30)
IsoName varchar(200)IsoFileName varchar(200)
BADISS â CHARLOT - 29 - 1 FĂ©vrier 2007