dossier technique - profetice.org · pour un groupe d'usagers des dates de fin de validité de...

67
Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'Angers Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009) Dossier technique ___________________________________________ ___________________________________________ DOSSIER TECHNIQUE DOSSIER TECHNIQUE ___________________________________________ ___________________________________________ Titre du projet : Mise en place d'un portail captif avec ALCASAR Nom de l'étudiant : HA Nom de l'entreprise : Lycée Sacré-Cœur Période de stage : du 24 février au 12 juin 2009 N° du jury : 1 Dang-Khoa HA – R2I Promo '09 Dossier technique Page 1 sur 67

Upload: nguyendien

Post on 11-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

______________________________________________________________________________________

DOSSIER TECHNIQUEDOSSIER TECHNIQUE______________________________________________________________________________________

Titre du projet : Mise en place d'un portail captif avec ALCASARNom de l'étudiant : HANom de l'entreprise : Lycée Sacré-CœurPériode de stage : du 24 février au 12 juin 2009N° du jury : 1

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 1 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Sommaire

INTRODUCTION...................................................................................................................................................................4

1 PROJET ALCASAR.............................................................................................................................................................51.1 DESCRIPTION GÉNÉRALE DU PRODUIT...........................................................................................................................................5

1.1.1 Mission...........................................................................................................................................................................51.1.2 Constituants foncionnels et matériels............................................................................................................................51.1.3 Explication globale du fonctionnement.........................................................................................................................5

1.2 PERFORMANCES ET LIMITES........................................................................................................................................................51.2.1 Caractéristiques opérationnelles du produit.................................................................................................................51.2.2 Limites d'utilisation.......................................................................................................................................................71.2.3 Extensions possibles......................................................................................................................................................8

1.3 ÉLÉMENTS TECHNIQUES..............................................................................................................................................................81.3.1 Installation de Linux Mandriva 2009............................................................................................................................81.3.2 Installation d'ALCASAR v1.7 rc3................................................................................................................................141.3.3 Utilisation....................................................................................................................................................................151.3.4 Tests et réglages...........................................................................................................................................................191.3.5 Schéma fonctionnel......................................................................................................................................................201.3.6 Plan..............................................................................................................................................................................20

2 PROJET REMOTE VLC LIGHT....................................................................................................................................212.1 DESCRIPTION GÉNÉRALE DU PRODUIT.........................................................................................................................................21

2.1.1 Mission.........................................................................................................................................................................212.1.2 Constituants fonctionnels et matériels.........................................................................................................................212.1.3 Explication globale du fonctionnement.......................................................................................................................21

2.2 PERFORMANCES ET LIMITES...........................................................................................................................................................222.2.1 Caractéristiques opérationnelles du produit...............................................................................................................222.2.2 Limites d'utilisation.....................................................................................................................................................222.2.3 Extensions possibles....................................................................................................................................................22

2.3 ÉLÉMENTS TECHNIQUES............................................................................................................................................................222.3.1 Installation et utilisation de Client_VLC.....................................................................................................................222.3.2 Installation et utilisation de Remote_VLC_Light........................................................................................................232.3.3 Fonctionnement...........................................................................................................................................................252.3.4 Tests et réglages...........................................................................................................................................................262.3.5 Schéma fonctionnel......................................................................................................................................................262.3.6 Fichiers de configuration et scripts.............................................................................................................................26

3 PROJET CONSOLE SYNCHRO PARC.........................................................................................................................283.1 DESCRIPTION GÉNÉRALE DU PRODUIT.........................................................................................................................................28

3.1.1 Mission.........................................................................................................................................................................283.1.2 Constituants fonctionnels et matériels.........................................................................................................................283.1.3 Explication globale du fonctionnement.......................................................................................................................28

3.2 PERFORMANCES ET LIMITES......................................................................................................................................................293.2.1 Caractéristiques opérationnelles du produit...............................................................................................................293.2.2 Limites d'utilisation.....................................................................................................................................................293.2.3 Extensions possibles....................................................................................................................................................29

3.3 ÉLÉMENTS TECHNIQUES............................................................................................................................................................303.3.1 Synchro Parc XP..........................................................................................................................................................303.3.2 Console de restauration à distance Synchro Parc.......................................................................................................313.3.3 Tests et réglages...........................................................................................................................................................353.3.4 Schéma de synthèse......................................................................................................................................................353.3.5 Fichiers de configuration et scripts.............................................................................................................................36

4 ANNEXES............................................................................................................................................................................374.1 ANNEXE 1 : CODE DU LOGICIEL « VLC_CLIENT »....................................................................................................................374.2 ANNEXE 2 : FICHIER « REMOTE_VLC_LIGHT.INI ».................................................................................................................38

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 2 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4.3 ANNEXE 3 : APERÇU DU FICHIER « ORANGE_TV.M3U ».............................................................................................................384.4 ANNEXE 4 : FICHIER « CHAINES.TXT »......................................................................................................................................394.5 ANNEXE 5 : APERÇU DU FICHIER « CH_ADR.TXT »....................................................................................................................394.6 ANNEXE 6 : CODE DU LOGICIEL « REMOTE_VLC_LIGHT ».......................................................................................................404.7 ANNEXE 7 : CODE DU LOGICIEL « CLIENT_SPARC »...............................................................................................................504.8 ANNEXE 8 : CODE DU LOGICIEL « CONSOLE_SPARC ».............................................................................................................524.9 ANNEXE 9 : CODE DU LOGICIEL « PREPA_CONSOLE »................................................................................................................594.10 ANNEXE 10 : CODE DU LOGICIEL « MODULE_IMPORT »...........................................................................................................614.11 ANNEXE 11 : CODE DU LOGICIEL « INSTALL »..........................................................................................................................624.12 ANNEXE 12 : FICHIER « CONFIG_SPARC.INI ».....................................................................................................................634.13 ANNEXE 13 : FICHIER « JESUISLA.TXT »..................................................................................................................................634.14 ANNEXE 14 : FICHIER « TOUTESLESSALLES.TXT »..................................................................................................................634.15 ANNEXE 15 : FICHIER « POSTESARESTAURER.TXT »................................................................................................................634.16 ANNEXE 16: FICHIER « PCDEMARRE.TXT ».............................................................................................................................634.17 ANNEXE 17 : APERÇU DU FICHIER «TOUTES_LES_ADRESSES.TXT»..............................................................................................644.18 ANNEXE 18 : APERÇU DU FICHIER «FICHIER_TYPE.TXT»..........................................................................................................644.19 ANNEXE 19 : FICHIER « WAKE_ON_LINE.TXT ».....................................................................................................................644.20 ANNEXE 20 : CODE DU LOGICIEL « CRYPTAGE »......................................................................................................................654.21 ANNEXE 21 : FICHIER « CLE_REG.TXT »................................................................................................................................67

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 3 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

I n t r o d u c t i o n

Durant la période de stage, plusieurs projets ont été réalisés. Le dossier technique présenté ci-après a pour but de fournir à l’entreprise d’accueil les informations nécessaires à la compréhension du fonctionnement en vue de l’utilisation, de la maintenance et des modifications ultérieures des produits.

Le dossier sera décomposé en une partie distincte pour chaque projet. En fin de dossier se trouvent les annexes.

Il est à noter que ces programmes sont appelés à être utilisés dans d'autres établissements (collèges et lycées du Maine et Loire), certaines remarques de ce dossier sont donc liées à cette réalité.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 4 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

1 P r o j e t A L C A S A R

1 . 1 D e s c r i p t i o n g é n é r a l e d u p r o d u i t

1.1.1 Mission

L’objectif de ce projet était d’installer un portail captif dans le CEFOC. Pour cela, on utilise ALCASAR (Application Libre pour le Contrôle d’Accès Sécurisé et Authentifié au Réseau). ALCASAR est une solution logicielle libre et gratuite qui protège, authentifie, contrôle et impute les accès des usagers d'un réseau de consultation Internet. En France, ALCASAR permet aux responsables d'un réseau de consultation de décliner à leurs niveaux les exigences que la loi impose aux opérateurs. Il constitue un portail captif authentifiant et sécurisé.

Le projet ALCASAR a été initié fin 2007. Il est indépendant et libre (licence GPLV3). Il est suivi actuellement par : Richard REY, Franck BOUIJOUX, Pascal LEVANT et Stéphane WEBER.

1.1.2 Constituants foncionnels et matériels

Pour installer la solution ALCASAR, nous disposions de :

➢ un serveur dédié pour installer Linux Mandriva 2009 ainsi qu’ALCASAR avec 1Go de RAM et au moins 5Go d’espace disque

➢ l’archive alcasar-1.7-rc3.tag.gz qui contient les fichiers nécessaires au bon fonctionnement d’ALCASAR

➢ Linux Mandriva 2009

➢ une borne WiFi de marque SiteCom

➢ une clé USB

1.1.3 Explication globale du fonctionnement

Concrètement, un utilisateur lambda voulant se connecter au réseau via son ordinateur portable et possédant un compte créé par l’administrateur, activera son la fonction WiFi de sa machine. Ensuite, il lancera un navigateur internet (Mozilla Firefox ou Internet Explorer par exemple). Une page se lance automatiquement, demandant un nom d’utilisateur et un mot de passe. Une fois ces données saisies, l’utilisateur peut naviguer sur internet. Une autre fenêtre est à sa disposition pour déconnecter sa session. Les sessions sont paramétrables par l’administrateur réseau : durée d’une session, durée journalière, durée hebdomadaire, nombre de sessions simultanées, etc. A aucun moment, l’utilisateur n’a à configurer sa machine (adresse IP, masque, clé WEP ou WPA, etc.)

1 . 2 P e r f o r m a n c e s e t l i m i t e s

1.2.1 Caractéristiques opérationnelles du produit

➢ Traçer, imputer et contrôler les connexionsL'objectif principal du portail Alcasar est de répondre aux exigences des politiques d'accès et d'utilisation d'Internet et notamment aux obligations de traçabilité, d'imputabilite et de non-répudiation des connexions.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 5 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Ces exigences consistent à produire, au niveau du portail, une trace précise des activités de chaque usager. Ces traces doivent pouvoir être exploitées dans le cadre d'une enquête judiciaire. Alcasar produit ces traces sous forme de fichiers pouvant être aisément archivés sur supports externes.

Afin d'être en mesure de corréler les journaux d'événements d'Alcasar avec ceux des différents systèmes présents sur le réseau, un serveur de temps a été intégré à la solution.

Le contrôle des connexions implémenté dans Alcasar permet, par exemple, de définir pour un usager ou pour un groupe d'usagers des dates de fin de validité de compte, des créneaux de connexion hebdomadaire ainsi que des durées maximales de connexion affectées à une session, une journée ou un mois.

➢ Proteger de la vie privéeDans le cadre de la cybersurveillance, les mesures suivantes ont été prises afin de protéger la vie privée des usagers. Ces mesures sont de nature à ne pas rendre obligatoire une déclaration CNIL en cas de déploiement du portail sur le territoire français :

• protection contre le vol de sessions : les usagers peuvent être déconnectés après un laps de temps paramétrable afin de limiter les conséquences des « oublis » de déconnexion ;

• protection contre le vol d'identifiants : les trames d'authentification des usagers sont systématiquement chiffrées ;

• protection des activités nominatives : la consultation par toute personne (dont l'administrateur) des activités Internet nominatives est rendue très difficile. En effet, les preuves d'imputabilité sont volontairement « éclatées » dans plusieurs fichiers (fichiers journaux) dont les domaines sont séparés (journal des connexions au portail d'un côté et journaux des activités Internet de l'autre). L'imputation des activités n'est ainsi rendue possible qu'après un travail d'agrégat sur ces journaux (travail réservé aux autorités judiciaires). De plus, l'interface graphique de gestion ne présente aucune donnée nominative liée aux activités réalisées sur Internet ;

• protection contre la modification des preuves : le chiffrement automatique des fichiers journaux peut être activé (en option). Cela rend impossible la modification, la dissimulation ou la suppression des preuves. Cette fonction concourt au principe de non-répudiation des connexions.

➢ Sécuriser …… le réseau de consultationAlcasar intègre un pare-feu spécifiquement paramétré afin de protéger les équipements du réseau de consultation des menaces externes directes. En outre, ce pare-feu permet de camoufler le réseau de consultation et d'anonymiser les connexions.

Les mises à jour automatiques de sécurité des équipements de consultation (antivirus et patch) sont rendues possibles à travers la déclaration d'une liste de sites pouvant être joints directement sans authentification préalable.

… le portailLa sécurité du portail a été élaborée comme pour un système bastion devant résister à différents types de menaces :

• utilisation et sécurisation d'un système d'exploitation minimaliste (Mandriva Linux LSB) ;

• protection du portail vis-à-vis d'une attaque interne (durcissement et anticontournement) ;

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 6 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

• les logiciels utilisés sont reconnus par la communauté comme des valeurs sûres et éprouvées ;

• concernant l'accès à l'interface de gestion : chiffrement des trames, authentification et comptabilité des accès, séparation entre les fonctions d'archivage et les fonctions de gestion (deux profils d'administrateurs).

… les usagersAfin de protéger les usagers, il a été décidé d'inclure nativement dans le portail un dispositif permettant de filtrer (bloquer) l'accès aux sites dont le contenu peut être répréhensible. Ce dispositif est entièrement paramétrable (activation, désactivation, ajout ou retrait de site, etc.).

➢ UniversalitéAlcasar est compatible avec tous les types d'équipements de consultation (PC fixes, PC portables, PDA, smartphones, etc.), tous les types de systèmes d'exploitation (Windows, Linux, Palm-OS, Blackberry, Symbian OS, etc.) et tous les types de réseaux (LAN filaire, LAN WIFI, LAN CPL, PAN bluetooth, etc.).

Le portail se comporte comme un sas d'accès pour l'ensemble des services Internet. Ainsi, il n'apporte pas de restriction par rapport aux protocoles exploités. En d'autres termes, une fois l'authentification de l'usager réalisée, tous les protocoles pouvant être exploités par une station de consultation sont autorisés et tracés : consultation WEB, transfert de fichiers ftp ou d'égal à égal (P2P), messagerie, messagerie instantanée (chat), discussion (news), jeux en réseau, multimédia (radio, tv, musique), etc.

C'est à l'OSSI/RSSI, responsable du réseau de consultation de définir la configuration des équipements (logiciels installés, droit d'accès, etc.).

➢ Indépendance et intégrationLa solution respecte les standards. Elle ne dépend ni d'une technologie propriétaire ni d'un prestataire particulier. Le système d'exploitation et les logiciels exploités sont protégés par des licences libres ; les développements réalisés spécifiquement pour Alcasar se trouvent eux-mêmes sous licence libre.

Dans les organismes, l'accès au réseau Internet est géré par un FAI qui fournit et administre ses équipements (Modem xDSL + Routeur + commutateur). Cette architecture peut évoluer en fonction des marchés et des contextes géographiques. La solution proposée est donc totalement indépendante des équipements fournis par les FAI.

Les usagers peuvent utiliser n'importe quel équipement du réseau de consultation.

Les équipements de consultation peuvent être mis à jour de manière automatique sans authentification préalable (patch de sécurité, antivirus, etc.).

1.2.2 Limites d'utilisation

ALCASAR étant une solution libre, le seul « support technique » reste la communauté ayant créé et développant la solution.

En outre, à ce jour (version v1.7-rc3), un inconvénient peut être souligné : il n'y a pas possibilité de lier les comptes LDAP à ALCASAR. Cependant, on peut voir cet inconvénient comme un avantage … en effet, les étudiants souhaitant se connecter en WiFi doivent d'abord faire une demande de compte, ce qui crée une certaine sécurité. Il n'y pas pas de compte « passe-partout » mais un compte par personne.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 7 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

1.2.3 Extensions possibles

Dans le futur, on peut penser à installer la solution ALCASAR dans des établissement plus grands que le CEFOC. On pourra alors installer plus de bornes WiFi (et donc mettre en place du roaming).

On peut donc également penser à intégrer la synchronisation des comptes ALCASAR avec l'AD ou le LDAP.

Enfin, on peut penser à associer l'authentification des usagers avec le contrôle d'accès au média avec le 802.1x mais cela implique la mise en place d'un serveur d'authentification de type RADIUS ou TACACS par exemple.

1 . 3 É l é m e n t s t e c h n i q u e s

1.3.1 Installation de Linux Mandriva 2009

Avant de détailler l’installation de la solution, voici un schéma du réseau à obtenir :

Figure 1 : schéma du réseau ALCASAR

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 8 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Voici la procédure d’installation de Linux Mandriva 2009, système d’exploitation sur lequel on va ensuite installer ALCASAR :

Affichage à l'écran Action(s) à réaliser

Après avoir inséré le CD de Mandriva 2009 et avoir lancé la machine, choisir « Install Mandriva Linux 2009 »

En appuyant sur F2, on peut choisir la langue d’installation

On choisit le français.

On coche la case « Accepter » pour accepter le contrat de licence, puis on clique sur « Suivant ».

On choisit « Installation » puis on clique sur « Suivant ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 9 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

On choisit le type de clavier (français).

On sélectionne « Partitionnement de disque personnalisé » afin d’adapter le partitionnement aux besoins spécifiques d’ALCASAR.

On crée 5 partitions :

/ : 1Go

swap : 1Go

/tmp : 1Go

/home : 1Go

/var : tout le reste

A la fin de la manipulation, le disque devrait ressembler à ceci :

On décoche toutes les cases éventuellement cochées, ALCASAR ne nécessitant que l’installation du CD1.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 10 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

On sélectionne « Aucun » puis on clique sur « Suivant ».

On coche uniquement la case « LSB » (Linux Standard Base). ALCASAR ne nécessite que les fonctions de base de Linux.

L’installation continue avec la copie des paquetages sur le disque dur.

On attend environ 5 minutes.

On donne un mot de passe pour le « root ».

Puis on crée un compte « sysadmin » auquel on donne un mot de passe également.

On choisit d’installer le programme d’amorçage (grub) sur le « MBR » (Master Boot Record).

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 11 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Dans la section « Réseau et Internet », à l’item « Réseau », on clique sur « Configurer » pour configurer les cartes réseau.

On sélectionne « Ethernet » puis on clique sur « Suivant ».

On choisit la 1ère interface (celle qui est connectée directement à internet. La seconde interface (connectée au réseau de consultation ALCASAR) sera configurée plus tard.

On sélectionne « Configuration manuelle », puis on clique sur « Suivant ».

Ici, on entre les données suivantes :

Adresse IP : 192.168.0.10

Masque de sous-réseau : 255.255.255.0

Passerelle : 192.168.0.1

Serveur DNS 1 : 192.168.0.1

Puis on clique sur « Suivant ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 12 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

On sélectionne « Lancer la connexion au démarrage » puis on clique sur « Suivant ».

On active la connexion (cocher « Oui »), puis on clique sur « Suivant ».

La configuration est terminée.

On clique sur « Terminer ».

Maintenant que l’interface est configurée, on clique sur « Suivant ».

On coche « Non » pour les mises à jour, puis on clique sur « Suivant ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 13 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

L’installation est maintenant terminée.

On n’oublie pas de retirer le CD pour ne pas booter dessus, puis on clique sur « Redémarrage ».

1.3.2 Installation d'ALCASAR v1.7 rc3

ALCASAR a été conçu pour pouvoir être intégré dans un seul système (un seul PC). Il est bâtit autour d'une quinzaine d'éléments constituant ainsi un portail captif authentifiant complet, sécurisé et géré graphiquement. Ce portail est positionné en coupure entre les deux réseaux à cloisonner.

Nous allons maintenant voir comment installer ALCASAR sur le serveur Linux.

Affichage de l'écran Action(s) à réaliser

On se connecte en tant que « root ».

Avec la commande « watch mii-tool » on peut voir l’état des interfaces et des connexions.

On branche le câble côté Internet dans l’interface eth0.

Et on vérifie la connexion.

On crée un répertoire servant à accueillir la clé USB avec la commande « mkdir –p /mnt/usb »

On affiche le journal des informations système avec la commande « tailf /var/log/messages » afin de connaître le nom associé de la clé USB.

On récupère donc ce nom, ici « sda1 » puis on quitte le journal en envoyant la commande <CTRL + C>.

On monte à présent la clé USB dans laquelle on a téléchargé les archives ALCASAR. On tape « mount /dev/sda1 /mnt/usb/ ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 14 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

On copie les archives d’ALCASAR dans le répertoire /root :

« cp /mnt/usb/alcasar* . »

Puis, on démonte la clé avec la commande « umount /mnt/usb ».

On décompresse les fichiers de l’archive ALCASAR :

« tar –zxvf alcasar-1.7-rc3 »

On va dans le répertoire d’ALCASAR.

Et on lance le script d’installation.

On attend la fin des tests de paramètres réseau.

On entre le nom de l’établissement : LSC49

On attend la fin de l’installation de tous les logiciels récupérés sur internet.

On laisse le plan d’adressage proposé par défaut.

On définit le nom de l’administrateur d’ALCASAR.

On définit le nom de l’utilisateur autorisé à générer et à récupérer les fichiers de sauvegarde.

L’installation est presque terminée, un redémarrage est nécessaire. On appuie sur <Entrée>.

L’installation d’ALCASAR est terminée. Nous allons maintenant voir comment l’utiliser.

1.3.3 Utilisation

→ Côté utilisateurLes équipements de consultation peuvent être de tous types (MAC, PC, PDA, smartphone, iPhone, etc.). Les systèmes d'exploitation peuvent être de tous types (Microsoft, Linux, Palm-OS, etc.). Les applications Internet peuvent être de tous types (Firefox, Internet Explorer, Thunderbird, Outlook, ftp, etc.).

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 15 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Au lancement d'un navigateur WEB (que ce soit sur un ordinateur [Figure 2], sur un PDA [Figure 3] ou sur un smartphone [Figure 4] par exemple), une page d'authentification lui est présentée :

Figure 2 : sur PC Figure 3 : sur PALM Figure 4 : sur iPhone

Une fois l'authentification effectuée, le navigateur affiche la première page de consultation [Figure 5] ainsi qu'une fenêtre supplémentaire permettant à l'usager de se déconnecter [Figure 6]. En fonction de la configuration des postes de consultation, toutes les applications et tous les protocoles réseau sont alors disponibles pour l'usager (ftp, courrier électronique, discussion, P2P, etc.).

Pour se déconnecter, l'usager utilise la fenêtre de déconnexion dédiée [Figure 6 et 7].

Figure 5 : authentification en cours

Figure 6 : fenêtre de déconnexion Figure 7 : message de déconnexion

→ Côté administrateurLa gestion d’ALCASAR est possible à partir d’une machine située dans le réseau de consultation (ce que nous avons appelé « Réseau WiFi étudiant » dans la [Figure 1] (page 7). Pour accéder à l’interface de gestion graphique, on tape dans la barre d’adresse du navigateur l’adresse https://192.168.182.1/ (dans notre cas).

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 16 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Voici la page affichée :

Figure 8 : plateforme de gestion d'ALCASAR

A noter que cette page est visible par tous. En revanche, pour accéder aux différents items du menu de gauche, il faudra se logguer avec les identifiants et mot de passe d’un des deux comptes configurés lors de l’installation.

Figure 9 : connexion de l'administrateur

A noter que cette page est visible par tous. En revanche, pour accéder aux différents items du menu de gauche, il faudra se logguer avec les identifiants et mot de passe d’un des deux comptes configurés lors de l’installation.

Cette plateforme de gestion permet :

de gérer les usagers : création et suppression d'usagers ou de groupe d'usagers, modification de leurs caractéristiques (date d'expiration, périodes de connexions hebdomadaires autorisées, durées limites de connexion par session, par journée et par mois, etc.) :

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 17 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Figure 10 : gestion des utilisateurs

de consulter les statistiques d'exploitation du réseau de consultation et de la bande passante :

Figure 11 : statistiques

de consulter les événements du pare feu :

Figure 12 : journal des événements du pare feu

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 18 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

de récupérer pour archivage les différents fichiers journaux devant être présentés en cas d'enquête judiciaire. Ces fichiers contiennent les traces de toutes les connexions, de tous les protocoles et de toutes les adresses consultées. Elles constituent ainsi les preuves de l'activité du réseau de consultation. Ces fichiers peuvent être chiffrés :

Figure 13 : sauvegarde des logs

d'activer, de désactiver [Figure 14], de modifier ou de mettre à jour les listes des sites filtrés (blacklists) [Figure 15] et des sites de confiance [Figure 16] :

Figure 14 : activation du filtrage Figure 15 : MàJ de la blacklist

Figure 16 : whitelist

L’administrateur peuvent intervenir sur le portail directement ou à distance via un tunnel chiffré SSH (VPN).

1.3.4 Tests et réglages

Après une période de tests, on peut récupérer les fichiers log du serveur. Ainsi, on peut étudier les connexions et le trafic sur le réseau.

Les testeurs ont été mis à contribution afin de naviguer sur le réseau comme ils l'auraient fait chez eux. Le but est de voir si les blacklists sont bien efficaces. On peut également voir grâce à ces fichiers de log si certains sites sont très visités alors qu'ils ne devraient pas l'être, auquel cas on la rajouterait à la blacklist.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 19 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

1.3.5 Schéma fonctionnel

Pour rappel, voici le schéma du réseau que l'on a configuré :

Figure 1 (rappel)

1.3.6 Plan

Ci-après, le plan du CEFOC [Figure 17]. Dans la salle 3 se trouvent le serveur ALCASAR ainsi que la borne Wifi, suffisante pour fournir un accès sans fil à tout le bâtiment.

Figure 17 : Plan du CEFOC

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 20 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

2 P r o j e t R e m o t e V L C L i g h t

2 . 1 D e s c r i p t i o n g é n é r a l e d u p r o d u i t

2.1.1 Mission

Remote VLC Light est un logiciel créé par M. Olivier Le Grand, administrateur réseau du lycée Sacré Cœur d'Angers, et Mickaël Loussouarn, un ancien stagiaire.

Cet utilitaire a pour but de simplifier l'utilisation du lecteur multimédia VLC pour le personnel enseignant du lycée. Il permet de diffuser en multicast des supports audio ou vidéo.

Le but de ce projet est de faire évoluer le logiciel en ajoutant une partie diffusion vidéo en temps réel des flux « télévision à la demande » proposés par Orange, FAI de l'établissement.

2.1.2 Constituants fonctionnels et matériels

Pour utiliser Remote VLC Light, on a besoin d'un poste serveur et d'autant de postes client que l'on désire. Remote VLC Light fonctionne sous Windows 2000 et Windows XP. Il est développé avec AutoIT. Des enceintes ou des casques audio peuvent être utilisés, car la vidéo et le son sont encodés.

2.1.3 Explication globale du fonctionnement

Pour expliquer le fonctionnement de Remote VLC Light, on peut prendre un exemple :

Un professeur souhaite montrer à ses élèves un reportage quelconque. Pour cela, il ouvre le logiciel Remote_VLC_Light [Figure 18] et choisit la vidéo en question (sauvegardée sur un lecteur réseau, ou, grâce à l'évolution du projet, directement à partir d'un flux réseau) ; les élèves ouvrent quant à eux un logiciel Client_VLC. A partir de ce moment, ils n'ont plus rien à faire, la vidéo est diffusée en multicast sur tous les postes [Figure 19].

Figure 18 : Remote_VLC_Light Figure 19 : sortie vidéo sur VLC

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 21 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Les postes client sont dans le même réseau que le poste maître (et dans la même salle). Les postes client possèdent tous le logiciel Client_VLC. Ce dernier lit le flux réseau à l'adresse udp://@239.255.0.1:1234 .

2 . 2 P e r f o r m a n c e s e t l i m i t e s

2.2.1 Caractéristiques opérationnelles du produit

A la situation initiale, les seules vidéos diffusables par le poste serveur étaient les vidéos enregistrées sur un disque réseau. Cela impliquait tout un travail en amont : trouver la vidéo sur Internet, la copier, la réencoder, l'enregistrer dans le répertoire prévu à cet effet.

Il faut savoir que les élèves n'ont pas accès à tous les sites, notamment les sites de type YouTube ou DailyMotion (protection du proxy). Il revenait donc au professeur de trouver la vidéo utile à son cours et à l'administrateur de ré-encoder la vidéo en question.

Avec l'outil de diffusion de la « TV à la demande », toutes ces étapes deviennent inutiles. En outre, Remote_VLC_Light est vraiment simple à appréhender pour des utilisateurs novices que peuvent être les enseignants, qui n'ont pas forcément tous des notions de client/serveur, de flux vidéo, etc.

2.2.2 Limites d'utilisation

S'il est vrai que la « TV à la demande » est un outil appréciable en terme de simplicité d'utilisation, il reste néanmoins qu'il s'agit de télé en direct, et la console ne possède pas les même fonctionnalités que les « box » que proposent les FAI pour les particuliers (enregistrement d'un programme, possibilité de mettre « en pause » un programme télévisé, etc.). Il faut donc que l'horaire de l'émission que le professeur souhaite montrer à ses élèves concorde à l'horaire de son cours … De ce fait, les anciennes fonctionnalités de Remote_VLC_Light sont toujours intéressantes.

Sur un autre plan, on a pu observer, lors des phases de test, des diffusions parfois saccadées de l'image. Mais cela n'est pas dû à l'encodage en direct (ou de tout autre dysfonctionnement du programme) mais directement des flux mms proposés par Orange.

2.2.3 Extensions possibles

Dans la continuité du problème que l'on vient d'évoquer, on pourrait penser à ajouter des fonctions plus poussées au menu « TV à la demande » comme la fonction « pause » par exemple. Pour ce qui est de l'enregistrement des émissions, ce n'est pas forcément la meilleure idée, puisque tous les professeurs ne possèdent pas forcément VLC chez eux, et de surcroît, ne savent pas forcément le configurer ...

2 . 3 É l é m e n t s t e c h n i q u e s

2.3.1 Installation et utilisation de Client_VLC

L'installation du Client_VLC se fait via un package MSI. La manipulation est simple et rapide. En ce qui concerne l'utilisation, elle n'est guère plus compliquée puisqu'ils n'ont qu'à lancer un exécutable.

Pour reprendre notre précédent exemple, lors d'un cours, le professeur souhaite montrer une vidéo ou faire écouter une bande son. Tous les élèves lancent l'application Client_VLC et n'ont rien d'autre à faire à part

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 22 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

attendre que de son côté, le professeur lance Remote_VLC_Light et choisisse le média qu'il souhaite diffuser. Nous allons voir justement plus en détail le fonctionnement de Remote_VLC_Light dans le point suivant (2.3.2).

2.3.2 Installation et utilisation de Remote_VLC_Light

L'installation de Remote_VLC_Light se fait également par un package MSI. Voici comment utiliser les 5 menus de Remote_VLC_Light :

➢ Lecture d'un DVD :On insère le DVD dans le lecteur, on sélectionne le bouton radio « DVD » et ce message apparaît :

Figure 20 : lecture d'un DVD

VLC se lance ensuite sur le poste serveur lorsqu'on appuie sur le bouton « Diffuser » [Figure 21] :

Figure 21 : bouton de diffusion

➢ Lecture d'un CD :On insère le CD dans le lecteur, on sélectionne le bouton radio « CD » et ce message apparaît, VLC se lance ensuite sur le poste serveur. VLC se lance ensuite sur le poste serveur lorsqu'on appuie sur le bouton DIFFUSER.

Figure 22 : lecture d'un CD

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 23 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

➢ Son à la demande :On clique sur le bouton « ... », et on choisit le son à diffuser, puis on clique sur « Ouvrir ». Ensuite, on coche le bouton radio et un message apparaît. VLC se lance ensuite sur le poste serveur lorsqu'on appuie sur le bouton « Diffuser ».

Figure 23 : lecture d'un son

➢ Vidéo à la demande :Même principe pour la vidéo.

Figure 24 : lecture d'une vidéo

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 24 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

➢ TV à la demande :On clique sur le menu déroulant, puis on choisit la chaîne qu'on veut diffuser. Une foi choisie, on clique sur le bouton radio, un message s'affiche. Enfin, on appuie sur le bouton « Diffuser ».

Figure 25 : diffusion d'une chaîne de télévision

2.3.3 Fonctionnement

Nous allons ici expliquer plus en détail la fonction « TV à la demande ».

Cette fonction se base sur le fichier « Orange_TV.m3u » que l'on peut voir dans l'Annexe 3, page 38. C'est un fichier dans lequel on peut trouver, entre autres informations, les noms de chaîne et les adresses des flux mms (MultiMédia Streaming) correspondants. Il faut donc en premier lieu épurer ce document afin de ne garder que les informations dont nous avons besoin.

On crée donc, avec AutoIT (fonctions mid, split, etc.), un fichier nommé « Chaines.txt » (Annexe 4, page 39) qui comporte une ligne avec le nom de chaque chaîne, séparé par un pipe (le caractère « | »). Ce premier fichier permet de créer dans l'interface graphique le menu déroulant.

Ensuite, on crée un autre fichier nommé « Ch_Adr.txt » (Annexe 5, page 39) dont chaque ligne est décomposée comme suit :

nom_de_la_chaîne, adresse mmsCe fichier permet d'associer une chaîne à une adresse. Concrètement, lorsqu'on a choisi une chaîne dans

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 25 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

l'interface graphique et qu'on clique sur le bouton radio [Figure 25], VLC va ouvrir un flux réseau dont l'adresse correspond à la chaîne dans le fichier « Ch_Adr.txt ».

2.3.4 Tests et réglages

Passée la phase de développement (où on teste le fonctionnement à proprement parler du logiciel), les phases de test concernent majoritairement des caractéristiques comme le format de la vidéo après encodage ou encore l'ergonomie du programme pour l'utilisateur lambda (verrouillage d'un bouton radio par exemple). On teste le logiciel en se mettant à la place de l'utilisateur, en faisant des manipulations hasardeuses et on règle le programme, on édite le code en fonction de cela.

2.3.5 Schéma fonctionnel

Figure 26 : schéma fonctionnel de VLC_Remote_Light

2.3.6 Fichiers de configuration et scripts

→ Code du logiciel « Client_VLC » : Voir Annexe 1, page 37

→ Fichier « Remote_VLC_Light.ini » : Voir Annexe 2, page 38

→ Aperçu du fichier « Orange_TV.m3u » : Voir Annexe 3, page 38

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 26 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

→ Fichier « Chaines.txt » : Voir Annexe 4, page 39

→ Aperçu du fichier « Ch_Adr.txt » : Voir Annexe 5, page 39

→ Code du logiciel « Remote_VLC_Light » : Voir Annexe 6, page 40

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 27 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

3 P r o j e t C o n s o l e S y n c h r o P a r c

3 . 1 D e s c r i p t i o n g é n é r a l e d u p r o d u i t

3.1.1 Mission

La Console de restauration à distance Synchro Parc a été créée dans le but d'éviter les déplacements « inutiles ». Dans la situation initiale (donc avant la création de la Console Synchro Parc), l'administrateur est obligé de se déplacer dans chaque salle et d'allumer chaque poste qu'il souhaite restaurer. Ce programme facilitera donc la vie de l'administrateur (gain de confort et de temps).

Ce projet se base sur le programme Synchro Parc XP, qui permet la restauration de postes. Nous allons voir ci-après (point 3.3.2) le fonctionnement de Synchro Parc XP.

3.1.2 Constituants fonctionnels et matériels

Pour fonctionner, le logiciel Synchro Parc nécessite :

➢ un réseau monté

➢ la Console Synchro Parc qui va permettre à l'administrateur de restaurer les postes à distance

➢ un exécutable, lancé en service, sur tous les postes clients, qui va détecter si oui ou non, le dit-poste peut être restauré

➢ sur tous les postes clients, du matériel compatible Wake On Lan (carte mère compatible, configuration du BIOS, configuration de l'alimentation, éventuellement configuration de la carte réseau selon les modèles, câble Wake On Lan si la carte n'est pas alimentée par le bus PCI)

On peut noter que ce logiciel est développé avec le langage AutoIT, donc pour les personnes qui souhaiteraient modifier le code pour l'utiliser, il faut disposer du logiciel AutoIT (logiciel gratuit).

3.1.3 Explication globale du fonctionnement

Le programme Console Synchro Parc permet à l'administrateur réseau, à partir de son bureau, d'allumer les postes d'une salle à distance grâce au protocole Wake On Lan. Il peut ensuite choisir les postes à restaurer.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 28 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Sur la [Figure 27] ci-dessous, on peut voir comment se présente la console :

Figure 27 : Console_SPARC

3 . 2 P e r f o r m a n c e s e t l i m i t e s

3.2.1 Caractéristiques opérationnelles du produit

Le produit permet à l'administrateur, depuis son bureau, de choisir autant de postes qu'il désire, dans autant de salles qu'il le souhaite, en vue d'une restauration. Néanmoins, on ne peut pas choisir deux postes dans deux salles différentes pour une restauration simultanée. Concrètement, on restaure salle par salle.

3.2.2 Limites d'utilisation

Cette console, développée autour du réseau du lycée Sacré Cœur est utilisable uniquement au sein du lycée, pour le moment. En effet, le code se base sur l'architecture du réseau. Dans d'autres établissements, les noms de postes ne sont certainement pas les mêmes, les salles ne sont pas organisées de la même façon. Il est possible également que dans d'autres réseaux, les postes ne soient pas dotés de matériel compatible Wake On Lan (dans ce cas, l'utilisation de la console Synchro Parc n'est pas forcément judicieuse …). Néanmoins, en fournissant le code commenté du programme, il est possible pour tout administrateur d'adapter le programme à son réseau et de ce fait, d'utiliser tout de même la Console Synchro Parc.

3.2.3 Extensions possibles

L'interface, bien que déjà modifiée en cours de développement (voir [Figure 28] : version antérieure de la Console Synchro Parc) pourrait être encore améliorée. On peut penser par exemple à une interface plus « vivante », par exemple avec, selon la salle choisie, un plan de la salle avec en vert les postes allumés et en noir les postes éteints. Dans la version actuelle, on ne sait pas quels postes sont éteints ou non ; on les allume systématiquement.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 29 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Sans aller forcément jusqu'au plan de chaque salle, on peut garder l'idée de la représentation des postes en vert ou noir.

Figure 28 : première version de Console_SPARC

3 . 3 É l é m e n t s t e c h n i q u e s

3.3.1 Synchro Parc XP

Synchro Parc XP est un logiciel créé par le CRDP (Centre Régional de Documentation Pédagogique) de Champagne-Ardennes. Il permet de sauvegarder un ensemble d'ordinateurs sur le disque dur d'un ordinateur du réseau. Chaque sauvegarde est composée d'un fichier (extension ASB) contenant la liste des fichiers sauvegardés et l'endroit (dans le répertoire DATAXP) où chaque fichier est sauvegardé. Avec cette technique, un même fichier appartenant à plusieurs ordinateurs n'est sauvegardé qu'une fois, d'où un gain de temps et de place.

Synchro Parc XP permet de restaurer les ordinateurs dans l'état exact où ils étaient lors de la sauvegarde. Toute modification faite depuis la sauvegarde est oubliée. Les fichiers qui ont été supprimés sont replacés, les fichiers qui ont été modifiés sont restaurés, les fichiers qui ont été ajoutés sont supprimés.

Synchro Parc XP permet également une restauration partielle bien utile si on vient de supprimer un fichier ou un répertoire par erreur et que l'on souhaite seulement restaurer ce fichier ou ce répertoire. Cette restauration partielle ne supprime pas de fichiers.

Remarque : La comparaison de deux fichiers se fait en comparant le nom, le répertoire, la taille et la date à la seconde près. Il est donc théoriquement possible que deux fichiers soient différents et considérés comme identiques par Synchro Parc XP, mais la probabilité est tellement faible qu'en pratique elle peut être considérée comme nulle. En effet, dès qu'un fichier est modifié, sa taille a de grandes chances de

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 30 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

changer et la date change pour indiquer le moment précis de l'enregistrement, d'autant plus que c'est l'heure UTC des fichiers qui est utilisée. (UTC : Universal Time Coordinated, heure absolue, indépendante du fuseau horaire et de l'heure d'été.) Synchro Parc XP peut être comparé à Norton Ghost au niveau des fonctionnalités. C'est une solution moins complète, certes, mais moins lourde, et surtout moins coûteuse, élément non négligeable pour un établissement scolaire. A titre informatif, le montant de la licence Synchro Parc XP s'élève à 245€ (Licence établissement – Prix Éducation Nationale) contre environ 2000€ pour 100 licences Norton Ghost (plus le logiciel à 79,99€). De plus, la licence Synchro Parc XP est valable pour toutes les machines du réseau alors qu'il faut une licence par poste avec Norton Ghost. Il y a au Sacré Cœur plus de 400 machines …

Voici un aperçu du logiciel Synchro Parc XP [Figure 29]:

Figure 29 : logiciel Synchro Parc XP

3.3.2 Console de restauration à distance Synchro Parc

→ Côté clientPour les postes clients, nous avons développé un utilitaire nommé « Client_SPARC » (voir le code dans l'Annexe 7, page 50) et qui est en fait lancé en tant que service sur les stations, grâce au programme « Install» (Annexe 11, page 62).

Le « Client_SPARC » cherche la présence du nom du poste client dans le fichier « jesuisla.txt ». Ensuite, on teste la présence sur le PC d'un fichier nommé « INIT_OK ». Ce fichier indique si le poste a déjà été initialisé une fois ou non, en d'autres termes, s'il a déjà été restauré. S'il n'est pas présent, on le crée, sinon on passe à l'étape de restauration à proprement parler.

La première étape de la restauration consiste à écrire le nom du poste dans le fichier « jesuisla.txt ». Ensuite, on lance le logiciel Synchro Parc XP pour ce poste, et la restauration s'effectue.

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 31 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

→ Côté administrateurNous allons voir maintenant comment fonctionne plus précisément la Console Synchro Parc, utilisable par l'administrateur. Le code de la Console est visible dans l'Annexe 8, page 52. Avant le lancement de la Console, plusieurs étapes sont effectuées par le programme.

➢ Création du fichier « ToutesLesSalles.txt » (Annexe 14, page 63) :Le fichier « jesuisla.txt » comporte maintenant un certain nombre de noms de postes, tous écrits dans la syntaxe suivante : PC--S--- (chaque tiret représentant un chiffre).

Le fichier « ToutesLesSalles.txt » est créé en analysant chaque nom complet de poste (et plus précisément la partie S---, correspondant donc au nom de la salle). Ce fichier comporte donc des noms de salle sans doublons et permet de créer la liste déroulante de la Console Synchro Parc [Figure 27].

➢ Création d'un dossier par salle :Après lecture du fichier « ToutesLesSalles.txt », on crée un fichier pour chaque salle détectée. Si le dossier existe déjà, pas d'action.

➢ Classer les ordinateur dans le bon dossier :Ici, on relit la fichier « jesuisla.txt », et cette fois-ci, on ne se contente pas d'analyse seulement le nom de la salle. Au contraire, on analyse chaque poste.

On crée, dans chaque dossier portant un nom de salle, un fichier portant le même nom. Par exemple, pour la salle S321, on aura un dossier « S321 » qui contiendra un fichier « S321.txt » dans lequel seront inscrits tous les noms de postes de cette salle, après analyse du fichier « jesuisla.txt ».

C'est avec ce dossier que, lorsque l'administrateur choisit une salle dans la liste déroulante, s'affichent les postes pouvant être restaurés dans la liste de gauche [Figure 27].

➢ Lancement de la Console Synchro Parc :Une fois ces actions effectuées, la Console se lance. Il est à noter que ces actions se font extrêmement rapidement et concrètement, lorsque l'administrateur double clique sur l'icône de la Console Synchro Parc, celle-ci se lance quasiment instantanément.

L'administrateur choisit une salle, les postes disponibles s'affichent dans la liste de gauche. Il sélectionne les postes qu'il désire, grâce aux quatre boutons du milieu qui servent respectivement à : sélectionner un ou plusieurs postes, sélectionner tous les postes, déselectionner un ou plusieurs postes et déselectionner tous les postes. Ici, on ne sélectionne que des postes de la même salle. Pour éviter toute confusion, une fois la salle choisie, la liste déroulante est bloquée. Il faut cliquer sur le bouton « Changer de Salle « (voir [Figure 27]) pour justement changer de salle, les sélections précédemment faites n'étant pas sauvegardées.

Toute la sélection est « graphique », c'est-à-dire que tant que l'administrateur n'a pas cliqué sur le bouton « RESTAURER MAINTENANT », aucun fichier n'est modifié.

Une fois la sélection faite, l'administrateur clique sur ce bouton de restauration. Une confirmation est demandée.

A ce moment là, tous les postes sélectionnés et affichés dans le colonne de droite sont inscrits dans le fichier « PostesARestaurer.txt » (Annexe 15, page 63). Ils sont en revanche effacés du fichier « jesuisla.txt ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 32 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

➢ Wake On Lan :Vient l'étape de Wake On Lan. Avant toute chose, il faut savoir qu'on possède un fichier nommé « Wake_on_line.txt » (Annexe 19, page 64). Celui-ci est généré grâce, en partie grâce au logiciel « Angry IP Scan », qui effectue un scan réseau d'une plage d'adresse IP donnée [Figure 30] et retourne, pour chaque adresse IP de cette plage, un nom complet de poste et une adresse MAC. Le fichier « Wake_on_line.txt » est en fait remanié de façon à ne laisser que le nom du poste et la commande de Wake On Lan correspondante.

Figure 30 : Angry IP Scan en mode graphique

Sur la [Figure 30], on utilise Angry IP Scan en mode graphique. Mais dans notre Console, nous le lancons en ligne de commandes, ceci afin d'automatiser le processus de création du fichier « Toutes_les_adresses.txt ».

La Console vient donc allumer tous les postes éteints. En fait, elle lance une commande de Wake On Lan sur tous les postes sélectionnés, sachant que si on lance une telle commande sur un poste déjà allumé, il n'y a pas de conséquence néfaste, il n'y a en fait, rien qui se passe. Les postes sont allumés sous le compte « Sparc » qui est un compte créé pour la restauration. Le reste de la manipulation, c'est Synchro Parc XP qui s'en occupe.

➢ Fonction de cryptage :Pour utiliser Synchro Parc XP, et lors d'un démarrage Wake On Lan, le PC doit se connecter avec un compte SPARC (situation dans le lycée Sacré Cœur). Pour ne par laisser apparaître le login et le mot de passe de ce compte, on va crypter les informations.

Pour cela, on utilise le Module de Cryptage (Configuration / Génération de login/mot de passe) [Figure 31].

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 33 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Figure 31 : menu « Configuration » de Console_SPARC

Concrètement, du côté administrateur, on va choisir un login, un mot de passe [Figure 32], et une « passphrase » est codée en dur dans le programme. Le login et le mot de passe sont cryptés en tenant compte de cette « passphrase ». Ces données cryptées sont inscrites dans un fichier « cle.reg » (Annexe 21, page 67). Ce fichier .reg sera fusionné au moment de lancer « Install.exe » (Annexe 11, page 62). De cette façon, on n'écrit pas les données dans le fichier « Config_SPARC.ini », et l'utilisateur du réseau ne peut pas voir ces identifiants., ceci pour la sécurité.

Figure 32 : module de cryptage de Console_SPARC

Voilà la base de registres, une fois que la clé a été fusionnée :

Figure 33 : base de registres

Ainsi, même si on récupère les chaînes (login / mot de passe) en crypté, on ne peut pas les décrypter, à moins de connaître justement cette « passphrase ».

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 34 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Du côté du client, on va lire dans la base de registres les login et mot de passe en crypté, que l'on stocke, que l'on décrypte, puis qu'on utilise pour se connecter.

3.3.3 Tests et réglages

Comme nous l'avons vu précédemment, les tests et les réglages de la Console Synchro Parc sont valides dans le lycée Sacré Cœur. Pour l'utiliser dans un autre établissement, il faut d'une part disposer de la solution Synchro Parc XP, et d'autre part, modifier le code du logiciel pour qu'il corresponde aux spécificités de l'établissement (nombre de PC par salle, format de nom de poste, etc.)

3.3.4 Schéma de synthèse

Voici un schéma [Figure 34] qui récapitule les dépendances entre les fichiers :

Figure 34 : schéma de synthèse

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 35 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

3.3.5 Fichiers de configuration et scripts

→ Code du logiciel « Client_SPARC » : Voir Annexe 7, page 50

→ Code du logiciel « Console_SPARC » : Voir Annexe 8, page 52

→ Code du logiciel « Prepa_Console » : Voir Annexe 9, page 59

→ Code du logiciel « Module_Import » : Voir Annexe 10, page 61

→ Code du logiciel « Install » : Voir Annexe 11, page 62

→ Fichier « Config_SPARC.ini » : Voir Annexe 12, page 63

→ Fichier « jesuisla.txt » : Voir Annexe 13, page 63

→ Fichier « ToutesLesSalles.txt » : Voir Annexe 14, page 63

→ Fichier « PostesARestaurer.txt » : Voir Annexe 15, page 63

→ Fichier « PCdemarre.txt » : Voir Annexe 16, page 63

→ Fichier « Toutes_les_adresses.txt » : Voir Annexe 17, page 64

→ Aperçu du fichier « Fichier_Type.txt » : Voir Annexe 18, page 64

→ Aperçu du fichier « Wake_On_Line.txt » : Voir Annexe 19, page 64

→ Code du logiciel « Cryptage » : Voir Annexe 20, page 65

→ Fichier « cle.reg » : Voir Annexe 21, page 67

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 36 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 A n n e x e s

4 . 1 A n n e x e 1 : C o d e d u l o g i c i e l « V L C _ C l i e n t »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_Icon=vlc.ico

#AutoIt3Wrapper_Outfile=Client_VLC.exe

#AutoIt3Wrapper_Res_Description=Client Remote_VLC 1.3

#AutoIt3Wrapper_Res_Fileversion=1.0.0.18

#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y

#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND

#AutoIt3Wrapper_Res_Language=1036

#AutoIt3Wrapper_Run_Tidy=y

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

Const $INI = "Remote_VLC_Light.ini" ; On indique le chemin su fichier .ini

$Chemin_VLC = IniRead($INI, "MAIN", "Chemin_VLC", "") ; On indique l'emplacement de lecteur multimédia VLC

$TailleEcran = IniRead($INI, "Client", "TailleEcran", "") ; On indique la taille de l'écran

$IP_UDP = IniRead($INI, "Main", "IP_UDP", "") ; On indique l'adresse IP_UDP qui permettra de diffuser une vidéo ou un son

$Add_UDP = "udp://@" & $IP_UDP & ":1234" ; On ajoute le numéro de port 1234 à la fin de l'adresse

$INFO = "Information"$Temps = 3000

VLC_EXIST() ; Appel de la fonction VLC_EXIST

$PID = ProcessExists("vlc.exe") ; Retourne le PID ou 0 si le processus n'est pas trouvé

If $PID Then ProcessClose($PID) ; Si le processus est trouvé, on ferme le processus

Sleep("1000")Run($Chemin_VLC & " " & $TailleEcran & " " & $Add_UDP) ; On lance VLC

Exit

; ########################################################################################################### ; ######################################## F O N C T I O N S ################################################ ; ###########################################################################################################

; ######################## Fonction pour contrôler la présence du logiciel VLC ##############################

Func VLC_EXIST()If Not FileExists($Chemin_VLC) Then

Message($INFO, "Le logiciel VLC n'a pas été trouvé sur la machine, peut être l'avez vous installé dans un emplacement différent de celui par défaut ? Vous pouvez modifier son emplacement dans Remote_VLC_Light.ini (Chemin_VLC) ", 10000, 190)

ExitElseEndIf

EndFunc ;==>VLC_EXIST

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 37 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

; ###########################################################################################################

; ########################## Fonction pour afficher un message d'information ################################

Func Message($INFO, $Message, $Temps, $TailleMessage)SplashTextOn($INFO, $Message, 260, $TailleMessage, -1, -1, 3)Sleep($Temps)SplashOff()

EndFunc ;==>Message

; ###########################################################################################################

4 . 2 A n n e x e 2 : F i c h i e r « R e m o t e _ V L C _ L i g h t . i n i »

Fichier de configuration de Remote_VLC_Light :

4 . 3 A n n e x e 3 : A p e r ç u d u f i c h i e r « O r a n g e _ T V . m 3 u »

Liste des flux mms (streaming TV) fournie par Orange :

Remarque : Les lignes sont coupées pour faciliter la lecture et la compréhension

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 38 sur 67

[Main]Titre="VLC REMOTE MULTICAST - Olegrand 2007 / Mikael LOUSSOUARN/ Dang-Khoa HA"Version="1.5.4"Chemin_VLC="C:\Program Files\VideoLAN\VLC\vlc.exe"IP_UDP = "239.255.0.1"Source_Fichier_m3u = "C:\"[Client]TailleEcran="--fullscreen";TailleEcran=""[TV]TV = "OUI"

#EXTM3U#EXTINF:1,2424 Videomms://onlinetv-fr-streamer-prod.otv.cvf.fr/VODBarker-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...#EXTINF:3,France 3mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France3-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...#EXTINF:5,France 5mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France5- 700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...#EXTINF:7,Artemms://onlinetv-fr-streamer-prod.otv.cvf.fr/Arte-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...#EXTINF:8,Direct 8mms://onlinetv-fr-streamer-prod.otv.cvf.fr/Direct8-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 4 A n n e x e 4 : F i c h i e r « C h a i n e s . t x t »

Liste de toutes les chaînes, créée en retravaillant la liste « Orange_TV.m3u » :

Remarque : Tout ce « bloc » tient en fait sur une seule et unique ligne

4 . 5 A n n e x e 5 : A p e r ç u d u f i c h i e r « C h _ A d r . t x t »

Liste qui fait correspondre une adresse à une chaîne, créée en retravaillant la liste « Orange_TV.m3u » :

Remarque : Les lignes sont coupées pour faciliter la lecture et la compréhension

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 39 sur 67

2424 Video|France 2|France 3|Orange Sports|France 5|Fashion TV|Arte|Direct 8|France 24|Nolife|NT1|AB Moteurs|Public Senat|France 4|BFM TV|iTele|Trace TV|Demain|TV5 Monde|France O|Orange Cinema Series|Orange Cine Max|Orange Cine Happy|Orange Cine Choc|Orange Cine Novo|Orange Cine Geants|Astro Center TV|Poker Channel|TV8 Mont Blanc|Telif|Liberty TV|Art Channel|BBC World Info|DW TV|Aljazeera|Guysen TV|Channel One Russia|CCTV F|InfoSport|ITele WebTV|CAP 24|IDF1|NRJ Paris|Video Click|MCM Top|NRJ Hits|NRJ Dance|NRJ Groove|NRJ Pop Rock|Deluxe Music|France 24 en|Euronews fr|Euronews en|Sky News|ITN|Bloomberg en|Russia Today en|KTO|

2424 Video,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/VODBarker-700/KEYMTI0MDgxNTk2ODAwMC...France 2,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France2-700/KEYMTI0MDgxNTk2ODAwMC...France 3,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France3-700/KEYMTI0MDgxNTk2ODAwMC...Orange Sports,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/OrangeSports-700/KEYMTI0MDgxNTk2O...France 5,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France5-700/KEYMTI0MDgxNTk2ODAwMC...Arte,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/Arte-700/KEYMTI0MDgxNTk2ODAwMC...Direct 8,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/Direct8-700/KEYMTI0MDgxNTk2ODAwMC...France 24,mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France24-700/KEYMTI0MDgxNTk2ODAwMC...

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 6 A n n e x e 6 : C o d e d u l o g i c i e l « R e m o t e _ V L C _ L i g h t »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=vlc.ico#AutoIt3Wrapper_Outfile=Remote_VLC_Light.exe#AutoIt3Wrapper_Res_Description=Maitre REMOTE_VLC 1.5.0#AutoIt3Wrapper_Res_Fileversion=1.0.0.38#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND&Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Au3Check_Stop_OnWarning=y#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ComboConstants.au3>#include <EditConstants.au3>#include <GuiComboBox.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>#include <file.au3> ; Variables

Dim $fichier_VOD, $fichier_MOD, $fichier_TV, $Select_VOD, $Select_CD, $Select_DVD, $Select_TVDim $lettre_CDROM_CD, $lettre_CDROM_DVD, $Label_CDROM_CD, $Label_CDROM_DVDDim $ExtensionDim $Combo_CD, $lettre_CDROM_SansAntislash_CD, $Combo_DVDDim $version_VLCDim $index_chainesDim $liste_orangeDim $maChaineCh, $maChaineAdrDim $i, $j, $nbCh, $nbLignesDim $maLigneDim $index_corresDim $monInfoDim $ChaineDim $Source_TV$file_in_MOD = ""$file_in_VOD = ""$file_in_TV = ""$Debug = 0

Const $INI = "Remote_VLC_Light.ini"$Chemin_VLC = IniRead($INI, "MAIN", "Chemin_VLC", "") ; Emplacement de VLC (dans le fichier .ini)$IP_UDP = IniRead($INI, "MAIN", "IP_UDP", "") ; Adresse UDP (dans le fichier.ini)$INFO = "Information"$Temps = 3000$TV = IniRead($INI, "TV", "TV", "")$version = IniRead($INI, "MAIN", "Version", "") ; Version du logiciel (dans le fichier.ini)$Source_Fichier_m3u = IniRead($INI, "MAIN", "Source_Fichier_m3u", "") ; emplacement du fichier .m3u (dans le fichier.ini)

; Création des logos

$Logo_DVD = @TempDir & "\dvd.jpg"FileInstall("C:\PROJET\VLC\dvd.jpg", @TempDir & "\dvd.jpg", 1)

$Logo_CD = @TempDir & "\cd.jpg"FileInstall("C:\PROJET\VLC\cd.jpg", @TempDir & "\cd.jpg", 1)

$Logo_MOD = @TempDir & "\sod.jpg"FileInstall("C:\PROJET\VLC\sod.jpg", @TempDir & "\sod.jpg", 1)

$Logo_VOD = @TempDir & "\vod.jpg"FileInstall("C:\PROJET\VLC\vod.jpg", @TempDir & "\vod.jpg", 1)

$Logo_TV = @TempDir & "\tv.jpg"FileInstall("C:\PROJET\VLC\tv.jpg", @TempDir & "\tv.jpg", 1)

If $TV = "OUI" Then ; Activation ou non de la fonction TV à la demande

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 40 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Copy_Orange_TV()Else

EndIflist()CorresChAdr() If $TV = "OUI" Then ; Version de Remote_VLC_Light avec TV à la demande

$GUI = GUICreate("REMOTE VLC Light " & $version & " Olegrand2008", 292, 535, 193, 296)$Annuler = GUICtrlCreateButton("Exit", 22, 490, 76, 31, 0)$Diffuser = GUICtrlCreateButton("Diffuser", 190, 490, 75, 31, 0)$TV_JPG = GUICtrlCreatePic($Logo_TV, 15, 400, 84, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))$Source_TV = GUICtrlCreateRadio("Télé à la demande", 112, 432, 17, 17)GUICtrlSetState($Source_TV, $GUI_DISABLE)GUICtrlSetTip($TV_JPG, "TELE à la demande")$Select_TV = GUICtrlCreateCombo("Sélectionnez une chaîne", 130, 428, 144, 400, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))

Else ; Version de Remote_VLC_Light sans TV à la demande$GUI = GUICreate("REMOTE VLC Light " & $version & " Olegrand2008", 291, 475, 193, 115)$Annuler = GUICtrlCreateButton("Exit", 24, 432, 81, 33, 0)$Diffuser = GUICtrlCreateButton("Diffuser", 184, 432, 81, 33, 0)

EndIf GUISetCursor(0)GUISetBkColor(0xFFFFFF)GUISetIcon("vlc.ico"); Création des icônes et des boutons EXIT et DIFFUSER

$DVD_JPG = GUICtrlCreatePic($Logo_DVD, 16, 16, 84, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))$CD_JPG = GUICtrlCreatePic($Logo_CD, 16, 112, 84, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))$MOD_JPG = GUICtrlCreatePic($Logo_MOD, 16, 208, 84, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))$VOD_JPG = GUICtrlCreatePic($Logo_VOD, 16, 304, 84, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))

; Création champ parcourir MOD + bouton radio$SelectMOD = GUICtrlCreateButton("...", 128, 235, 41, 25, 0)$edit_choice_in_MOD = GUICtrlCreateEdit($file_in_MOD, 172, 238, 100, 21, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))$Source_MOD = GUICtrlCreateRadio("Musique à la demande", 112, 240, 17, 17)GUICtrlSetState($Source_MOD, $GUI_DISABLE) ; Création champ parcourir VOD + bouton radio

$SelectVOD = GUICtrlCreateButton("...", 128, 331, 41, 25, 0)$edit_choice_in_VOD = GUICtrlCreateEdit($file_in_VOD, 172, 335, 100, 21, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))$Source_VOD = GUICtrlCreateRadio("Vidéo à la demande", 112, 336, 17, 17)GUICtrlSetState($Source_VOD, $GUI_DISABLE) ; Création bouton radio DVD

$Source_DVD = GUICtrlCreateRadio("DVD", 112, 48, 17, 17) ; Création bouton radio CD

$Source_CD = GUICtrlCreateRadio("CD", 112, 152, 17, 17);GUICtrlSetState($Source_CD, $GUI_DISABLE)

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 41 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

; Création combobox + bouton radio TV

$maListe = FileOpen("Chaines.txt", 0) ; On stocke la liste des chaînes dans une variable $maListeIf $maListe = -1 Then MsgBox(0, "Erreur", "Impossible de trouver le fichier 'Chaines.txt'.") ; Message en cas d'erreur

$lesChaines = FileReadLine($maListe, 1) If @error = -1 Then MsgBox(0, "Erreur", "Impossible de lire le fichier 'Chaines.txt") ; Message en cas d'erreur

$uneChaine = StringSplit($lesChaines, "|") ; On splite la chaîne à chaque | pour avoir une seule chaîne $index_corres = FileOpen("Ch_Adr.txt", 0)$nbCh = ($nbLignes - 1) / 2$n = 1For $n = 1 To $nbCh Step 1

GUICtrlSetData($Select_TV, $uneChaine[$n])GUISetState(@SW_SHOW)

NextFileClose($maListe) FindCD()Version_VLC()

; Trouver la lettre du CDROM

; -----------------------------------------------------------------------------------------------------------

$Menu_Open = FileOpen(@TempDir & "\cdrom.txt", 0)$Menu_Read = FileRead($Menu_Open) If StringLen($Menu_Read) > 3 Then

FileClose($Menu_Open)$Combo_DVD = GUICtrlCreateCombo("???", 184, 45, 80, 100, $CBS_DROPDOWNLIST)GUICtrlSetData($Combo_DVD, $Menu_Read, "")$Combo_CD = GUICtrlCreateCombo("???", 184, 152, 80, 100, $CBS_DROPDOWNLIST)GUICtrlSetData($Combo_CD, $Menu_Read, "")$Label_lettre_DVD = GUICtrlCreateLabel("DVD", 135, 50, 44, 17)$Label_lettre_CD = GUICtrlCreateLabel("CD", 135, 152, 19, 17)

ElseFileClose($Menu_Open)$Label_lettre_DVD = GUICtrlCreateLabel("DVD", 135, 50, 44, 17)$Label_lettre_CD = GUICtrlCreateLabel("CD", 135, 152, 19, 17)$CDROM_SansAntislash = DriveGetDrive("CDROM")

EndIf; ***********************************************************************************************************

; Infobulles

GUISetState()GUICtrlSetTip($DVD_JPG, "DVD à la demande")GUICtrlSetTip($CD_JPG, "CD (musique) à la demande")GUICtrlSetTip($MOD_JPG, "MUSIQUE (mp3,wma,ogg,etc...) à la demande")GUICtrlSetTip($VOD_JPG, "VIDEO (divx,mpg1,mpg2,xvid, etc...) à la demande")GUICtrlSetTip($SelectMOD, "Sélectionnez une musique sur votre disque dur")GUICtrlSetTip($SelectVOD, "Sélectionnez une vidéo sur votre disque dur") $Add_UDP = "udp://@" & $IP_UDP & ":1234"$Add_UDP_Court = StringTrimLeft($Add_UDP, 7)

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 42 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

#EndRegion ### END Koda GUI section ###

; Début de la boucle pour voir si l'utilisateur a cliqué quelque part ...; -----------------------------------------------------------------------------------------------------------

While 1$nMsg = GUIGetMsg()Switch $nMsg

Case $GUI_EVENT_CLOSEExit

Case $SelectVOD

Select_Fichier_VOD()GUICtrlSetState($Source_VOD, $GUI_enABLE)

Case $Combo_CD

If StringLen($Menu_Read) > 3 ThenGUICtrlSetState($Source_CD, $GUI_DISABLE)$lettre_CDROM_SansAntislash_CD = GUICtrlRead($Combo_CD)$lettre_CDROM_CD = $lettre_CDROM_SansAntislash_CD & "\"LabelCD()If $lettre_CDROM_SansAntislash_CD <> "???" Then

GUICtrlSetState($Source_CD, $GUI_enABLE)EndIf

ElseGUICtrlSetState($Source_CD, $GUI_enABLE)

EndIf

Case $Combo_DVDIf StringLen($Menu_Read) > 3 Then

GUICtrlSetState($Source_DVD, $GUI_DISABLE)$lettre_CDROM_SansAntislash_DVD = GUICtrlRead($Combo_DVD)$lettre_CDROM_DVD = $lettre_CDROM_SansAntislash_DVD & "\"LabelDVD()If $lettre_CDROM_SansAntislash_DVD <> "???" ThenEndIf

ElseGUICtrlSetState($Source_DVD, $GUI_enABLE)

EndIf

Case $SelectMODSelect_Fichier_MOD()GUICtrlSetState($Source_MOD, $GUI_enABLE)

Case $Select_TV

If $Select_TV <> "Sélectionnez une chaîne" ThenGUICtrlSetState($Source_TV, $GUI_enABLE)

EndIf

Case $Source_DVDIf StringLen($Menu_Read) > 3 Then

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 43 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Message($INFO, "Vous avez sélectionné le DVD sur le CDROM " & $lettre_CDROM_DVD & ". Le Titre du DVD est:" & $Label_CDROM_DVD, $Temps, 110)

ElseGUICtrlSetState($Source_DVD, $GUI_enABLE)$lettre_CDROM_DVD = $CDROM_SansAntislash[1] & "\"LabelDVD()Message($INFO, "Vous avez sélectionné le DVD sur le CDROM " & $lettre_CDROM_DVD & ". Le Titre du DVD est:" & $Label_CDROM_DVD, $Temps, 110)

EndIf Case $Source_CD

If StringLen($Menu_Read) > 3 ThenMessage($INFO, "Vous avez sélectionné le CD sur le CDROM " & $lettre_CDROM_CD & ".Le Titre du CD est:" & $Label_CDROM_CD, $Temps, 110)

ElseGUICtrlSetState($Source_CD, $GUI_enABLE)$lettre_CDROM_CD = $CDROM_SansAntislash[1] & "\"LabelCD()Message($INFO, "Vous avez sélectionné le DVD sur le CDROM " & $lettre_CDROM_CD & ". Le Titre du DVD est:" & $Label_CDROM_CD, $Temps, 110)

EndIf

Case $Source_MODMessage($INFO, "Vous avez sélectionné la musique à la demande", $Temps, 60)

Case $Source_VOD

Message($INFO, "Vous avez sélectionné la vidéo à la demande", $Temps, 60)

Case $Source_TVIf $TV = "OUI" Then

GUICtrlSetState($Select_TV, $GUI_DISABLE)Message($INFO, "Vous avez sélectionné la télé à la demande", $Temps, 60)$chaineChoisie = GUICtrlRead($Select_TV)For $i = 1 To $nbCh Step 1

$maLigne = FileReadLine($index_corres, $i)$monInfo = StringSplit($maLigne, ",")If $chaineChoisie = $monInfo[1] Then

$Chaine = $monInfo[2] EndIf

NextElseEndIf

Case $AnnulerExit

Case $Diffuser

VLC_EXIST()VLC_Unique()GUICtrlSetState($Select_TV, $GUI_enABLE)If $version_VLC < "0.8.7" Then

SelectSource_086()

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 44 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

GUICtrlSetState($Source_TV, $GUI_UNCHECKED)ElseIf $version_VLC > "0.8.7" Then

SelectSource_091()GUICtrlSetState($Source_TV, $GUI_UNCHECKED)

ElseEndIf

EndSwitchWEnd

; ########################################################################################################### ; ######################################## F O N C T I O N S ################################################ ; ###########################################################################################################

; #################################### Fonction sélection Vidéo #############################################

Func Select_Fichier_VOD()$fichier_VOD = FileOpenDialog("Fichier à ouvrir", @MyDocumentsDir, "AVI (*.avi; *.dv; *.vob; *.mpg; *.flv; *.mov)", 3)If @error = 1 Then $fichier_VOD = ""

GUICtrlSetData($edit_choice_in_VOD, $fichier_VOD)$fichier_VOD = StringReplace($fichier_VOD, "\", "/")$fichier_VOD = StringReplace($fichier_VOD, " ", "%20")

EndFunc ;==>Select_Fichier_VOD; ###########################################################################################################

; ###################################### Fonction sélection Musique #########################################

Func Select_Fichier_MOD()$fichier_MOD = FileOpenDialog("Fichier à ouvrir", @MyDocumentsDir, "MP3 (*.mp3;*.wav;*.ogg)", 3)If @error = 1 Then $fichier_MOD = ""GUICtrlSetData($edit_choice_in_MOD, $fichier_MOD)$fichier_MOD = StringReplace($fichier_MOD, "\", "/")

fichier_MOD = StringReplace($fichier_MOD, " ", "%20")EndFunc ;==>Select_Fichier_MOD; ###########################################################################################################

; ################################### Fonction affichage de message #########################################

Func Message($INFO, $Message, $Temps, $TailleMessage)SplashTextOn($INFO, $Message, 260, $TailleMessage, -1, -1, 3)Sleep($Temps)SplashOff()

EndFunc ;==>Message; ###########################################################################################################

; ######################################### Pour VLC version 0.8.6 ##########################################

Func SelectSource_086()If $Source_VOD And BitAND(GUICtrlRead($Source_VOD), $GUI_CHECKED) = $GUI_CHECKED Then

FormatVideo()ElseIf $Source_MOD And BitAND(GUICtrlRead($Source_MOD), $GUI_CHECKED) = $GUI_CHECKED Then

Run($Chemin_VLC & " --ttl 8 -vvv " & $fichier_MOD & ":sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}") ElseIf $Source_DVD And BitAND(GUICtrlRead($Source_DVD), $GUI_CHECKED) = $GUI_CHECKED Then

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 45 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

Run($Chemin_VLC & " --ttl 8 -vvv dvdsimple://" & $lettre_CDROM_DVD & " :sout=#duplicate{dst=display,dst=std{access=udp,dst=" & $Add_UDP_Court & "}}:sout-keep") ElseIf $Source_CD And BitAND(GUICtrlRead($Source_CD), $GUI_CHECKED) = $GUI_CHECKED Then Run($Chemin_VLC & " --ttl 8 -vvv --extraintf http cdda://" & $lettre_CDROM_CD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}") ElseIf $Source_TV And BitAND(GUICtrlRead($Source_TV), $GUI_CHECKED) = $GUI_CHECKED Then Run($Chemin_VLC & " --ttl 8 -vvv --extraintf http " & $Chaine & "

:sout=#transcode{vcodec=DIV3,vb=2048,scale=1,acodec=mp3,ab=128,channels=2}:duplicate{dst=display,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")

EndIfEndFunc ;==>SelectSource_086; ###########################################################################################################

; ######################################### Pour VLC version 0.9.1 ##########################################

Func SelectSource_091()If $Source_VOD And BitAND(GUICtrlRead($Source_VOD), $GUI_CHECKED) = $GUI_CHECKED Then

FormatVideo()ElseIf $Source_MOD And BitAND(GUICtrlRead($Source_MOD), $GUI_CHECKED) = $GUI_CHECKED Then

Run($Chemin_VLC & " --ttl 8 -vvv " & $fichier_MOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")ElseIf $Source_DVD And BitAND(GUICtrlRead($Source_DVD), $GUI_CHECKED) = $GUI_CHECKED Then

Run($Chemin_VLC & " --ttl 8 -vvv dvd://" & $lettre_CDROM_DVD & " :sout=#duplicate{dst=display,dst=std{access=udp,dst=" & $Add_UDP_Court & "}}:sout-keep")ElseIf $Source_CD And BitAND(GUICtrlRead($Source_CD), $GUI_CHECKED) = $GUI_CHECKED Then

Run($Chemin_VLC & " --ttl 8 -vvv --extraintf http cdda://" & $lettre_CDROM_CD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")ElseIf $Source_TV And BitAND(GUICtrlRead($Source_TV), $GUI_CHECKED) = $GUI_CHECKED Then

Run($Chemin_VLC & " --ttl 8 -vvv --extraintf http " & $Chaine & " :sout=#transcode{vcodec=DIV3,vb=2048,scale=1,acodec=mp3,ab=128,channels=2}:duplicate{dst=display,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")

EndIfEndFunc ;==>SelectSource_091; ###########################################################################################################

; ########################################## Fonction CD/DVD ################################################

Func FindCD()$var = DriveGetDrive("CDROM")$File = FileOpen(@TempDir & "\cdrom.txt", 2)If Not @error Then

For $i = 1 To $var[0]$CDROM = FileWrite($File, $var[$i] & "|")

NextEndIfFileClose($File)

EndFunc ;==>FindCD; ###########################################################################################################

; ######################################### Fonction lettre DVD ############################################

Func LabelDVD()$Label_CDROM_DVD = DriveGetLabel($lettre_CDROM_DVD)

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 46 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

EndFunc ;==>LabelDVD; ###########################################################################################################

; ############################################ Fonction lettre CD ###########################################

Func LabelCD()$Label_CDROM_CD = DriveGetLabel($lettre_CDROM_CD)

EndFunc ;==>LabelCD; ###########################################################################################################

; #################################### Fonction encodage en temps réel ######################################

Func FormatVideo()$Extension = StringRight($fichier_VOD, 5)$Extension = StringSplit($Extension, ".")If $Extension[2] = "flv" Then

Run($Chemin_VLC & " " & $fichier_VOD & " :sout=#transcode{vcodec=mp4v,vb=800,scale=1,acodec=mp3,ab=128,channels=2}:duplicate{dst=display,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")

ElseIf $Extension[2] = "avi" ThenRun($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")

ElseIf $Extension[2] = "mpg" ThenRun($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")

ElseIf $Extension[2] = "vob" ThenRun($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")

ElseIf $Extension[2] = "mov" ThenRun($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")

ElseIf $Extension[2] = "dv" ThenRun($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & " :sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")

EndIfEndFunc ;==>FormatVideo; ###########################################################################################################

; ################################## Fonction "VLC est-il installé ?"########################################

Func VLC_EXIST()If Not FileExists($Chemin_VLC) Then

Message($INFO, "Le logiciel VLC n'a pas été trouvé sur la machine, peut être l'avez vous installé dans un emplacement différent de celui par défaut ? Vous pouvez modifier son emplacement dans Remote_VLC_Light.ini (Chemin_VLC) ", 10000, 190)Exit

ElseEndIf

EndFunc ;==>VLC_EXIST; ###########################################################################################################

; ################################## Fonction "Version de VLC ?"#############################################

Func Version_VLC()

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 47 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

$version_VLC = FileGetVersion($Chemin_VLC)EndFunc ;==>Version_VLC; ###########################################################################################################

; ########################### Lister les chaînes selon le fichier orange Chaines.txt#######################

Func List()Dim $index_chainesDim $liste_orangeDim $maChaineChDim $nbLignesDim $iDim $maLigne

; Test de présence

$index_chaines = FileOpen("Chaines.txt", 2)If $index_chaines = -1 Then MsgBox(0, "Erreur", "Impossible de trouver le fichier 'Chaines.txt'.")$liste_orange = FileOpen("Orange_TV.m3u", 0)If $liste_orange = -1 Then MsgBox(0, "Erreur", "Impossible de trouver le fichier 'Orange_TV.m3u'."); Nombre total de lignes de $liste_orange

$nbLignes = _FileCountLines("Orange_TV.m3u")

; Boucle pour lister LES NOMS DE CHAINE de $liste_orange

$i = 2While $i <= $nbLignes

$maLigne = FileReadLine($liste_orange, $i)$maChaineCh = StringSplit($maLigne, ",") ; On stocke cette liste dans $index_chaines, soit le document Chaines.txtFileWrite($index_chaines, $maChaineCh[2] & "|")$i = $i + 2

WEndFileClose($index_chaines) ; Fermeture des fichiers ouvertsFileClose($liste_orange)

EndFunc ;==>List; ###########################################################################################################

;

; ######################## Créer fichier de correspondance "chaîne,adresse" ==> ChAdr.txt ###################

Func CorresChAdr()Dim $index_corresDim $liste_orangeDim $maChaineAdrDim $nbLignesDim $jDim $maLigne

$index_corres = FileOpen("Ch_Adr.txt", 2)$liste_orange = FileOpen("Orange_TV.m3u", 0)

; Nombre total de lignes de $liste_orange

$nbLignes = _FileCountLines("Orange_TV.m3u")

; Boucle pour lister LES NOMS DE CHAINE de $liste_orange

$j = 2While $j <= $nbLignes

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 48 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

$maLigne = FileReadLine($liste_orange, $j) ; On lit une ligne et on la stocke dans $maLigne $maChaineAdr = StringSplit($maLigne, ",") ; On la splite à chaque virgule; On stocke cette liste dans $index_corres, soit le document Ch_Adr.txtFileWrite($index_corres, $maChaineAdr[2] & ",")$j = $j + 1$maLigne = FileReadLine($liste_orange, $j)$maChaineAdr = StringSplit($maLigne, ",")FileWrite($index_corres, $maChaineAdr[1] & @CR)$j = $j + 1

WEndFileClose($index_chaines) ; Fermeture des fichiers ouvertsFileClose($liste_orange)FileClose($index_corres)

EndFunc ;==>CorresChAdr; ###########################################################################################################

; ###########################################################################################################

Func VLC_Unique()$PID = ProcessExists("vlc.exe") ; Retourne le numéro PID, ou 0 si le processus n'existe pasIf $PID Then ProcessClose($PID) ; S'il existe, on le ferme

EndFunc ;==>VLC_Unique; ###########################################################################################################

; ###########################################################################################################

Func Copy_Orange_TV()FileCopy($Source_Fichier_m3u & "Orange_TV.m3u", @WorkingDir, 1) ; On copie le fichier .m3u dans le répertoire de travail

Message($INFO, "Mise à jour des paramètres en cours...", 2000, 60)EndFunc ;==>Copy_Orange_TV; ###########################################################################################################

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 49 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 7 A n n e x e 7 : C o d e d u l o g i c i e l « C l i e n t _ S P A R C »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=Synchronization_xp.ico#AutoIt3Wrapper_Outfile=Client_SPARC.exe#AutoIt3Wrapper_Res_Description=Client de restauration Synchroparc XP#AutoIt3Wrapper_Res_Fileversion=1.0.0.1#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND & Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Run_Tidy=y#AutoIt3Wrapper_Run_Obfuscator=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <String.au3>#include <file.au3>$chemin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC", "Chemin")$Titre = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC", "Titre")$Chemin_SynchroParcXP = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC", "Chemin_SynchroParcXP")$Passphrase = "toto"$Login = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC", "Login") ; On lit le login crypté dans la Base de registres$Login = _StringEncrypt(0, $Login, $Passphrase, 3) ; On le décrypte et on le stocke dans $Login$Password = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC", "Password") ; On lit le mot de passé crypté dans la Base de registres$Password = _StringEncrypt(0, $Password, $Passphrase, 3) ; On le décrypte et on le stocke dans $Password$Nom = @ComputerName$Salle = StringMid($Nom, 5); Ouverture OK ?

If $File = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir ce fichier.") Suisjela()FileClose($File)Init() ; ###########################################################################################################; ########################################### F O N C T I O N S #############################################; ###########################################################################################################

; #################################### Test de présence dans jesuisla.txt ###################################

Func Suisjela() ; nom du pc dans jesuisla.txt ?$nbLignes = _FileCountLines($chemin & "\jesuisla.txt")$i = 0While $i <= $nbLignes

$ligne = FileReadLine($File, $i)If $Nom = $ligne Then ;si oui, on quitte la boucle

Exit Else

$i = $i + 1EndIf

WEndEndFunc ;==>Suisjela; ###########################################################################################################

; ######################################## Initialisation ###################################################

Func Init()If Not FileExists(@WorkingDir & "\INIT_OK") Then

_FileCreate(@WorkingDir & "\INIT_OK")Maintenantjysuis()Exit 0

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 50 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

ElseRestauration()

EndIfEndFunc ;==>Init; ###########################################################################################################

; ############################################### Restauration ##############################################

Func Restauration()Maintenantjysuis()Login_Auto()If FileExists($Chemin_SynchroParcXP & $Salle & "\SynchroParcXP.exe") Then

Run($Chemin_SynchroParcXP & $Salle & "\SynchroParcXP.exe /R /Y /P")Else

Run($Chemin_SynchroParcXP & "\SynchroParcXP.exe /R /Y /P")EndIf

EndFunc ;==>Restauration; ###########################################################################################################

; ################################## Inscription du PC dans jesuisla.txt ####################################

Func Maintenantjysuis()$File = FileOpen($chemin & "\jesuisla.txt", 1)FileWrite($File, $Nom & @CRLF) ; on écrit le nom du pc dans jesuisla.txtFileClose($File)

EndFunc ;==>Maintenantjysuis; ###########################################################################################################

; ################################### Connexion au compte sparc #############################################

Func Login_Auto()RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", "REG_SZ", "1")RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", "REG_SZ", $LoginRegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", "REG_SZ", $Password)Shutdown(6)

EndFunc ;==>Login_Auto; ###########################################################################################################

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 51 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 8 A n n e x e 8 : C o d e d u l o g i c i e l « C o n s o l e _ S P A R C » #Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=Synchronization_xp.ico#AutoIt3Wrapper_Outfile=Console_SPARC.exe#AutoIt3Wrapper_Res_Description=Console SynchroParcXP#AutoIt3Wrapper_Res_Fileversion=1.0.0.25#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND & Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ListBoxConstants.au3>#include <GuiListBox.au3>#include <File.au3>#include <ComboConstants.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>Const $INI = "Config_SPARC.ini" ; On indique le répertoire de travail$chemin = IniRead($INI, "Main", "chemin", ""); Définition du chemin de travail$Titre = IniRead($INI, "Main", "Titre", "")$IPdebut = IniRead($INI, "Main", "IPdebut", "")$IPfin = IniRead($INI, "Main", "IPfin", "")$Image = @WorkingDir & "\Logo.jpg"FileInstall("C:\SPARC\Logo.jpg", @WorkingDir & "\Logo.jpg", 1)$Module_Import = @WorkingDir & "\Module_Import.exe"FileInstall("C:\SPARC\Module_Import.exe", @WorkingDir & "\Module_Import.exe", 1)$Prepa_Console = @WorkingDir & "\Prepa_Console.exe"FileInstall("C:\SPARC\Prepa_Console.exe", @WorkingDir & "\Prepa_Console.exe", 1)$Cryptage = @WorkingDir & "\Cryptage.exe"FileInstall("C:\SPARC\Cryptage.exe", @WorkingDir & "\Cryptage.exe", 1)$fichier_aide = @WorkingDir & "\Aide_SPARC.pdf"FileInstall("C:\SPARC\Aide_SPARC.pdf", @WorkingDir & "\Aide_SPARC.pdf", 1)If Not FileExists($chemin & "\PostesARestaurer.txt") Then $test = _FileCreate($chemin & "\PostesARestaurer.txt")If Not FileExists($chemin & "\PCdemarre.txt") Then $test = _FileCreate($chemin & "\PCdemarre.txt")If Not FileExists($chemin & "\jesuisla.txt") Then $test = _FileCreate($chemin & "\jesuisla.txt")If Not FileExists($chemin & "\ToutesLesSalles.txt") Then $test = _FileCreate($chemin & "\ToutesLesSalles.txt")If Not FileExists($chemin & "\Aide_SPARC.pdf") Then $test = _FileCreate($chemin & "\Aide_SPARC.pdf"); VARIABLES Dim $groupes[1], $groupe_persoDim $file ; fichier à ouvrir, ici $chemin\scan.txtDim $ligne, $line ; ligne lue dans un fichierDim $SalleDuPC ; nom de la salle lu dans le nom de pcDim $salles ; nom du fichier contenant la liste des sallesDim $destination ; nom du fichier portant le nom de la salle et contenant les noms d'ordinateursDim $ordi ; nom de l'ordinateur ; Appel du programme qui prépare les fichiers/dossiers nécessaires au fonctionnement de la Console

RunWait($Prepa_Console, @WorkingDir)#Region ### START Koda GUI section ### Form=C:\PROJET\SPARC\Form1.kxf

$Form = GUICreate($Titre & " " & FileGetVersion("Console_SPARC.exe"), 412, 460, 252, 149)GUISetIcon("Synchronization_xp.ico")GUISetBkColor(0xFFFFFF)$Configuration = GUICtrlCreateMenu("Configuration")$config_INI = GUICtrlCreateMenuItem("Editer le fichier de configuration", $Configuration)$Cryptage = GUICtrlCreateMenuItem("Génération de login/mot de passe", $Configuration)$Import = GUICtrlCreateMenuItem("Importer les adresses MAC", $Configuration)$Options = GUICtrlCreateMenu("Options")$Rapport = GUICtrlCreateMenuItem("Rapport de restauration", $Options)$fichier_jesuisla = GUICtrlCreateMenuItem('Afficher le fichier "jesuisla.txt"', $Options)$Aide = GUICtrlCreateMenuItem("Aide", $Options)$Apropos = GUICtrlCreateMenu("?")$Version = GUICtrlCreateMenuItem("Version", $Apropos)

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 52 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

$Pic = GUICtrlCreatePic($Image, 258, -3, 107, 107, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))$Label1 = GUICtrlCreateLabel("Sélection d'un salle :", 24, 25, 140, 17)GUICtrlSetFont($Label1, 9, 800, 0, "Trebuchet MS")$Label2 = GUICtrlCreateLabel("Postes pouvant être" & @CRLF & "restaurés :", 24, 94, 180, 42)GUICtrlSetFont($Label2, 9, 800, 0, "Trebuchet MS")$Label3 = GUICtrlCreateLabel("Postes sélectionnés :", 248, 112, 140, 17)GUICtrlSetFont($Label3, 9, 800, 0, "Trebuchet MS")$ListBoxIn = GUICtrlCreateList("", 24, 136, 137, 201, BitOR($LBS_SORT, $LBS_EXTENDEDSEL))$ListBoxOut = GUICtrlCreateList("", 248, 136, 137, 201, BitOR($LBS_SORT, $LBS_EXTENDEDSEL))$Select1 = GUICtrlCreateButton(">", 188, 159, 30, 25, 0)GUICtrlSetFont($Select1, 12, 800, 0, "Arial")$SelectAll = GUICtrlCreateButton(">>", 188, 200, 31, 25, 0)GUICtrlSetFont($SelectAll, 12, 800, 0, "Arial")$Deselect1 = GUICtrlCreateButton("<", 189, 241, 31, 25, 0)GUICtrlSetFont($Deselect1, 12, 800, 0, "Arial")$DeselectAll = GUICtrlCreateButton("<<", 189, 282, 32, 25, 0)GUICtrlSetFont($DeselectAll, 12, 800, 0, "Arial")$Vider = GUICtrlCreateButton("&Vider la liste", 248, 345, 135, 17, 0)GUICtrlSetFont(-1, 8, 800, 0, "Trebuchet MS")$Changer = GUICtrlCreateButton("&Changer de salle", 25, 345, 135, 17, 0)GUICtrlSetFont(-1, 8, 800, 0, "Trebuchet MS")$Restaurer = GUICtrlCreateButton("&RESTAURER MAINTENANT", 120, 385, 171, 33, 0)GUICtrlSetFont(-1, 9, 800, 2, "Trebuchet MS") $lesSalles = FileOpen($chemin & "\" & "ToutesLesSalles.txt", 0)$maLigne = FileReadLine($lesSalles, 1)$Combo = GUICtrlCreateCombo("", 24, 48, 121, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL, $CBS_SORT))GUICtrlSetData($Combo, $maLigne) GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###

; Infobulles GUICtrlSetTip($Select1, "Permet de sélectionner une ou plusieurs stations")GUICtrlSetTip($SelectAll, "Permet de sélectionner toutes les stations")GUICtrlSetTip($Deselect1, "Permet de désélectionner une ou pluesieurs stations")GUICtrlSetTip($DeselectAll, "Permet de désélectionner toutes les stations")GUICtrlSetTip($Restaurer, "Permet de restaurer les stations sélectionnées")GUICtrlSetTip($Combo, "Sélection d'une salle")GUICtrlSetTip($Vider, "Vide la liste des stations sélectionnées")GUICtrlSetTip($Changer, "Permet de sélectionner une autre salle")

While 1$nMsg = GUIGetMsg()Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $AideShellExecute($chemin & "\Aide_SPARC.pdf")

Case $fichier_jesuisla

Message("", "Liste des PC pouvant être restaurés", 2000, 70)Run("notepad.exe " & $chemin & "\" & "jesuisla.txt")

Case $Rapport ; Affiche la liste des PC démarrés

Message("", "Liste des PC restaurés", 2000, 50)Run("notepad.exe " & $chemin & "\" & "PCdemarre.txt")

Case $Import ; Importation des adresses MAC générées par IPscan

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 53 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

SplashTextOn("info", "Importation des adresses MAC générées par IPscan en cours." & @CRLF & "Scan de la plage :" & @CRLF & $IPdebut & " -> " & $IPfin & @CRLF & @CRLF & "Veuillez patienter ...", 250, 160, -1, -1, 1)RunWait($Module_Import, @WorkingDir, @SW_MINIMIZE)SplashOff()

Case $config_INI

Message("", "Edition du fichier de configuration", 2000, 65)Run("notepad.exe " & $chemin & "\" & "Config_SPARC.ini")

Case $Cryptage

Run($chemin & "\Cryptage.exe")WinWaitActive("Module Cryptage")WinWaitClose("Module Cryptage")

Case $Version

Message("", "Version de la Console Synchroparc : " & FileGetVersion("Console_SPARC.exe") & @CRLF & "Version du module d'import des adresses MAC : " & FileGetVersion("Module_Import.exe") & @CRLF & "Version du module de cryptage : " & FileGetVersion("Cryptage.exe") & @CRLF & "Version du module de préparation de console : " & FileGetVersion("Prepa_Console.exe"), 9000, 190)

Case $Combo ; On lit ce que l'utilisateur a choisi dans la combobox (autrement dit, la salle choisie)

GUICtrlSetData($ListBoxIn, "") ; On vide la liste de gauche (au cas où il y aurait quelque chose dedans)Lister()If Not _GUICtrlListBox_GetListBoxInfo($ListBoxIn) = 0 Or Not _GUICtrlListBox_GetListBoxInfo($ListBoxOut) = 0 Then ; Si l'une des 2 listes n'est pas vide,

GUICtrlSetState($Combo, $GUI_DISABLE) ; on ne peut pas utiliser la comboboxEndIf

Case $Select1 ; [>]

SelectionUn()Case $SelectAll ; [>>]

SelectionTOUS()Case $Deselect1 ; [<]

DeselectionUn()Case $DeselectAll ; [<<]

DeselectionTOUS()

Case $ViderDeselectionTOUS()If _GUICtrlListBox_GetListBoxInfo($ListBoxIn) = 0 And _GUICtrlListBox_GetListBoxInfo($ListBoxOut) = 0 Then

GUICtrlSetState($Combo, $GUI_enABLE) ; On réactive la combobox si les 2 listes sont vides

EndIf

Case $ChangerIf Not _GUICtrlListBox_GetListBoxInfo($ListBoxIn) = 0 Or Not _GUICtrlListBox_GetListBoxInfo($ListBoxOut) = 0 Then

_GUICtrlListBox_ResetContent($ListBoxIn) ; On vide la liste de gauche_GUICtrlListBox_ResetContent($ListBoxOut) ; et celle de droite$PCselect = "" ; On "vide" la variable $PCselectGUICtrlSetState($Combo, $GUI_enABLE) ; et on réactive la comboboxMessage("", "Les postes précédemment sélectionnés ne seront pas restaurés", 2700, 85)

ElseMessage("", "Aucune salle n'est sélectionnée pour le moment", 2000, 65)

EndIf

Case $Restaurer$demande = MsgBox(4, "Console Synchro Parc", "Confirmez vous la commande de restauration ?")If $demande = 6 Then

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 54 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

RESTAURATION()ElseEndIfExit

EndSwitch

WEnd ; ###########################################################################################################; ####################################### F O N C T I O N S #################################################; ########################################################################################################### ; ################# Afficher les postes pouvant être restaurés dans la liste de gauche ######################

Func Lister(); on lit la salle choisie, et on affiche les postes qui peuvent être restaurés$salleChoisie = GUICtrlRead($Combo) ; $salleChoisie prend la valeur inscrite dans la comboboxFileOpen($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt", 0) ; On ouvre le fichier correspondant à une salle$nbLignes = _FileCountLines($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt")$i = 1For $i = 1 To $nbLignes ; Pour chaque ligne présente dans le fichier,

$PC = 0$ligne = FileReadLine($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt", $i)$PC = StringMid($ligne, 3, 2) ; On extrait le nom du poste$fichier = FileOpen($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt", 0)$contenu_fic = FileRead($fichier)GUICtrlSetData($ListBoxIn, $contenu_fic)

NextFileClose($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt")

EndFunc ;==>Lister; ###########################################################################################################

; ##################################### Actions sur le bouton RESTAURER #####################################

Func RESTAURATION()Dim $PostesARestaurerDim $PCaRestaurer ; Déclaration d'une variable localeDim $cdc$PostesARestaurer = FileOpen($chemin & "\PostesARestaurer.txt", 2)$cpt = _GUICtrlListBox_GetCount($ListBoxOut) ; On compte le nombre d'éléments dans la liste de droiteFor $b = 0 To $cpt - 1 ; Pour chaque élément,

$cdc = $cdc & _GUICtrlListBox_GetText($ListBoxOut, $b) & "|" ; On le stocke dans une variableNext ; et on boucleFileWrite($PostesARestaurer, $cdc)FileClose($PostesARestaurer)$PostesARestaurer = FileOpen($chemin & "\PostesARestaurer.txt", 0)$lignePC = FileReadLine($PostesARestaurer)$unPC = StringSplit($lignePC, "|")For $v = 1 To $unPC[0]

$PCaRestaurer = $unPC[$v];;;;;;;;;;;;;;;;;;;;;; NETTOYAGE DE JESUISLA.TXT ;;;;;;;;;;;;;;;;;;;;;;

$jesuisla = ($chemin & "\jesuisla.txt")$file = FileOpen($chemin & "\jesuisla.txt", 1)$cpt = _FileCountLines($chemin & "\jesuisla.txt")$TMP = ($chemin & "\tmp.txt") ; On crée un fichier temporaire, où seront stockés les noms de PC qu'on ne restaure pas$TMPfile = FileOpen($TMP, 2)$vide = ""For $i = $cpt To 1 Step -1 ; On lit de bas en haut pour éviter les sauts de lignes liés aux lignes vides ...

$line = FileReadLine($jesuisla, $i)If $line = ($PCaRestaurer) Then ; Si la ligne lue est égale à un nom de PC à restaurer, alors

_ReplaceStringInFile($chemin & "\jesuisla.txt", $PCaRestaurer, $vide) ; on supprime la ligne

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 55 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

ElseIf $line <> ($PCaRestaurer) Then ; Sinon, si la ligne est différente du PC à restaurer

FileWrite($TMP, $line & @CRLF) ; On inscrit le nom de ce PC dans "tmp.txt"ElseIf $line = ("") Then ; Si la ligne est vide, on passe à la ligne suivanteEndIf

Next

FileClose($file)FileClose($TMPfile)FileClose($jesuisla)FileClose($TMP); On supprime le fichier "jesuisla.txt" car il contient des espaces et des lignes vides :If FileDelete($chemin & "\jesuisla.txt") = 0 Then

MsgBox(1, "", "Le fichier " & $chemin & "\jesuisla.txt" & " n'a pas pu être supprimé.")EndIfIf FileMove($chemin & "\tmp.txt", $chemin & "\jesuisla.txt", 9) = 0 Then ; "tmp.txt" devient "jesuisla.txt"

MsgBox(1, "", "Le fichier " & $chemin & "\jesuisla.txt" & " n'a pas pu être remplacé")EndIf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Next FileClose($PostesARestaurer) WOL() ; Appel de la fonction "Wake On Lan"EndFunc ;==>RESTAURATION; ###########################################################################################################

; ######################################### Sélection d'un PC ###############################################

Func SelectionUn()Dim $selectionDim $tabtmpDim $tableauPostesDim $indexIf _GUICtrlListBox_GetSelCount($ListBoxIn) <> 0 Then

$tableauPostes = _GUICtrlListBox_GetSelItemsText($ListBoxIn)For $c = 1 To $tableauPostes[0] ; $tableauPostes[0] = nombre de lignes

$selection &= $tableauPostes[$c] & "|"$tabtmp = $tableauPostes[$c]$index = _GUICtrlListBox_FindString($ListBoxIn, $tabtmp) ; ... et il est supprimé de la colonne de droite_GUICtrlListBox_DeleteString($ListBoxIn, $index)Next

GUICtrlSetData($ListBoxOut, $selection)EndIf

EndFunc ;==>SelectionUn; ###########################################################################################################

; ###################################### Désélection d'un PC ################################################

Func DeselectionUn()Dim $deselectionDim $tabtmp2Dim $tableauPostes2Dim $index2If _GUICtrlListBox_GetSelCount($ListBoxOut) <> 0 Then

$tableauPostes2 = _GUICtrlListBox_GetSelItemsText($ListBoxOut)For $d = 1 To $tableauPostes2[0] ; $tableauPostes[0] = nombre de lignes

$deselection &= $tableauPostes2[$d] & "|"$tabtmp2 = $tableauPostes2[$d]$index2 = _GUICtrlListBox_FindString($ListBoxOut, $tabtmp2) ; ... et il est supprimé de la colonne de droite_GUICtrlListBox_DeleteString($ListBoxOut, $index2)

Next

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 56 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

GUICtrlSetData($ListBoxIn, $deselection)EndIf

EndFunc ;==>DeselectionUn; ###########################################################################################################

; ##################################### Sélection de tous les PC ############################################

Func SelectionTOUS()$nbPC = _GUICtrlListBox_GetCount($ListBoxIn) ; On compte le nombre d'éléments dans la liste de gaucheFor $k = 0 To $nbPC ; Pour chaque élément,

$var = _GUICtrlListBox_GetText($ListBoxIn, $k) ; On le stocke dans une variableGUICtrlSetData($ListBoxOut, $var) ; qu'on copie à droite

Next ; et on boucle_GUICtrlListBox_ResetContent($ListBoxIn) ; On vide la liste de gauche_GUICtrlListBox_DeleteString($ListBoxOut, 0) ; On supprime la ligne vide de la liste de droite

EndFunc ;==>SelectionTOUS; ###########################################################################################################

; ####################################### Désélection de tous les PC ########################################

Func DeselectionTOUS()$nbPC2 = _GUICtrlListBox_GetCount($ListBoxOut) ; On compte le nombre d'éléments dans la liste de droite

For $m = 0 To $nbPC2 ; Pour chaque élément,$var2 = _GUICtrlListBox_GetText($ListBoxOut, $m) ; On le stocke dans une variableGUICtrlSetData($ListBoxIn, $var2) ; qu'on copie à gauche

Next ; et on boucle_GUICtrlListBox_ResetContent($ListBoxOut) ; On vide la liste de droite_GUICtrlListBox_DeleteString($ListBoxIn, 0) ; On supprime la ligne vide de la liste de gauche

EndFunc ;==>DeselectionTOUS; ###########################################################################################################

; ############################################ Affichage message ############################################

Func Message($info, $MESSAGE, $Temps, $TailleMessage)SplashTextOn($info, $MESSAGE, 250, $TailleMessage, -1, -1, 1)Sleep($Temps)SplashOff()

EndFunc ;==>Message; ###########################################################################################################

; ################################## Wake On Lan avant restauration #########################################

Func WOL()$PostesARestaurer = FileOpen($chemin & "\PostesARestaurer.txt", 0)If $PostesARestaurer = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'PostesARestaurer.txt'.")$nbLignes3 = _FileCountLines($chemin & "\Wake_On_Line.txt")$Wake_On_Line = FileOpen($chemin & "\Wake_On_Line.txt", 0)If $Wake_On_Line = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier le 'Wake_On_Line.txt'.")$PCdemarre = FileOpen($chemin & "\PCdemarre.txt", 2)If $PCdemarre = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'PCdemarre.txt'.")Dim $cmdDim $PCDim $donnees$lignePC = FileRead($chemin & "\PostesARestaurer.txt") ; $lignePC = PC01S321|$unPC = StringSplit($lignePC, "|")$monPoste = $unPC[1]For $v = 1 To $unPC[0]

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 57 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

$monPoste = $unPC[$v]For $x = 1 To $nbLignes3

$ligne = FileReadLine($chemin & "\Wake_On_Line.txt", $x)$donnees = StringSplit($ligne, ",") ; On splite chaque ligne du fichier $Wake_On_Line pour obtenir :$PC = $donnees[1] ; un nom de PC : PC01S321$cmd = $donnees[2] ; la commande pour allumer ce PC par le réseau : C:\SPARC\WakeUpCmd.exe /mac:00-19-DB-44-20-80$cmd = String($cmd) ; Fonction inverse de "Eval" : retourne la représentation d'une chaîne de caractères d'une expressionIf $monPoste = $PC Then ; Si la ligne lue dans "PostesARestaurer.txt" est égale au nom de PC dans la ligne lue de "Wake_On_Line.txt",

Run($cmd, @WorkingDir, @SW_MINIMIZE) ; on lance la commande de Wake On Lan correspondanteFileWrite($PCdemarre, $PC & @CRLF) ; on écrit le nom du poste allumé en WOL dans $PCdémarré

EndIfNext

NextFileClose($PostesARestaurer)FileClose($Wake_On_Line) FileClose($PCdemarre)

EndFunc ;==>WOL; ###########################################################################################################

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 58 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 9 A n n e x e 9 : C o d e d u l o g i c i e l « P r e p a _ C o n s o l e »

#include <Array.au3>#include <File.au3>Const $INI = "Config_SPARC.ini" ; On indique le répertoire de travail$chemin = IniRead($INI, "Main", "chemin", ""); Définition du chemin de travail; VARIABLES

Dim $groupes[1], $groupe_persoDim $file ; fichier à ouvrir, ici $chemin\scan.txtDim $ligne, $line ; ligne lue dans un fichierDim $SalleDuPC ; nom de la salle lu dans le nom de pcDim $salles ; nom du fichier contenant la liste des sallesDim $destination ; nom du fichier portant le nom de la salle et contenant les noms d'ordinateursDim $ordi ; nom de l'ordinateurIf Not FileExists($chemin & "\jesuisla.txt") Then $test = _FileCreate($chemin & "\jesuisla.txt") If Not FileExists($chemin & "\ToutesLesSalles.txt") Then $test = _FileCreate($chemin & "\ToutesLesSalles.txt"); ########################## CREATION "TouteLesSalles.txt" SANS DOUBLONS ####################################

$file = FileOpen($chemin & "\jesuisla.txt", 0)$salles = FileOpen($chemin & "\ToutesLesSalles.txt", 2)If _FileCountLines($chemin & "\jesuisla.txt") < 1 Then ; Si "jesuisla.txt" est vide, on affiche un message pour dire qu'aucun poste ne nécessite de retauration

Message("", "Aucun poste ne nécessite de restauration actuellement.", 5000, 70)Exit

ElseWhile 1

$line = FileReadLine($file) ; On lit chaque ligne de "jesuisla.txt"If @error = -1 Then ExitLoopIf StringMid($line, 5, 1) = "S" Then ; Si le 5ème caractère de la chaîne est un "S", alors

$SalleDuPC = StringMid($line, 5) ; On récupère le nom de la salle$groupePropre = StringSplit($SalleDuPC, " ", 1) ; On enlève les éventuels commentaires situés après

$present = _ArraySearch($groupes, $groupePropre[1])If $present <= 0 Then _ArrayAdd($groupes, $groupePropre[1]) ; On vérifie que la salle n'existe pas déjà dans le fichier (pas de doublons)

EndIfWEnd

EndIf$lesSalles = FileOpen($chemin & "\ToutesLesSalles.txt", 2) ; On renseigne le fichier des sallesFor $i = 1 To (UBound($groupes) - 1)

FileWrite($lesSalles, $groupes[$i] & "|") ; écrire le nom d'une salle dans le tableauFileOpen($chemin & $groupes[$i], 2) ; créer un fichier au nom de la salle

NextFileClose($lesSalles)$lesSalles = FileOpen($chemin & "\ToutesLesSalles.txt", 1)FileWrite($lesSalles, $groupe_perso)FileClose($lesSalles)FileOpen($chemin & $groupe_perso, 1)FileClose($file)FileClose($lesSalles); ###########################################################################################################

; ############################### CREATION D'UN DOSSIER PAR SALLE ###########################################

$lesSalles = FileOpen($chemin & "\ToutesLesSalles.txt", 0) ; On ouvre la liste des salles créée dans

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 59 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

ToutesLesSalles.txt

$n = 1 ; Pour chaque nom de salle (dans ToutesLesSalles.txt, entre deux "|"), on crée un dossier portant le nom de cette salle

While 1$maLigne = FileReadLine($lesSalles, 1) ; On lit la ligne$uneSalle = StringSplit($maLigne, "|") ; On récupère le nom d'une salleDirCreate($chemin & "\" & $uneSalle[$n]) ; On crée un dossier portant ce nom$n = $n + 1If $uneSalle[$n] = "" Then ExitLoop

WEndFileClose($lesSalles); ###########################################################################################################

; ############################### Classer les ordinateurs par salle #########################################

$jesuisla = FileOpen($chemin & "\jesuisla.txt", 0)$count = _FileCountLines($chemin & "\jesuisla.txt") ; On compte le nombre de lignes de "jesuisla.txt"$a = 1For $a = 1 To $count

$ligne = FileReadLine($jesuisla, $a)If @error = -1 Then ExitLoop$salle = StringMid($ligne, 5) ; On récupère le nom de salle$ordi = StringMid($ligne, 1, 4) ; On récupère le nom de posteFileDelete($chemin & "\" & $salle & "\" & $salle & ".txt") ; On supprime le fichier, au cas où il existe déjà

NextFileClose($jesuisla) $jesuisla = FileOpen($chemin & "\jesuisla.txt", 0)$count = _FileCountLines($chemin & "\jesuisla.txt")For $a = 1 To $count

$ligne = FileReadLine($jesuisla, $a)If @error = -1 Then ExitLoop$salle = StringMid($ligne, 5) ; On récupère le nom de salle$ordi = StringMid($ligne, 1, 4) ; On récupère le nom de posteIf Not FileExists($chemin & "\" & $salle & "\" & $salle & ".txt") Then ; si le fichier n'existe pas,

_FileCreate($chemin & "\" & $salle & "\" & $salle & ".txt") ; on le créeEndIfFileOpen($chemin & "\" & $salle & "\" & $salle & ".txt", 1) ; On ouvre le fichier créé (ou déjà existant)FileWrite($chemin & "\" & $salle & "\" & $salle & ".txt", $ligne & "|") ; On y écrit le nom du PC

NextFileClose($jesuisla); ###########################################################################################################

; ###################################### Affichage message ##################################################

Func Message($info, $MESSAGE, $Temps, $TailleMessage) SplashTextOn($info, $MESSAGE, 250, $TailleMessage, -1, -1, 3) Sleep($Temps) SplashOff()EndFunc ;==>Message; ###########################################################################################################

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 60 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 1 0 A n n e x e 1 0 : C o d e d u l o g i c i e l « M o d u l e _ I m p o r t »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=Synchronization_xp.ico#AutoIt3Wrapper_Outfile=Module_Import.exe#AutoIt3Wrapper_Res_Description=Module d'import d'adresse MAC#AutoIt3Wrapper_Res_Fileversion=1.0.0.4#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND & Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <File.au3>Const $INI = "Config_SPARC.ini" ; On indique le répertoire de travail$chemin = IniRead($INI, "Main", "chemin", ""); Définition du chemin de travail$IPdebut = IniRead($INI, "Main", "IPdebut", "")$IPfin = IniRead($INI, "Main", "IPfin", "")$WakeUpCmd = @WorkingDir & "\WakeUpCmd.exe"FileInstall("C:\SPARC\WakeUpCmd.exe", @WorkingDir & "\WakeUpCmd.exe", 1)$ipscan = @WorkingDir & "\ipscan.exe"FileInstall("C:\SPARC\ipscan.exe", @WorkingDir & "\ipscan.exe", 1)

RunWait($ipscan & " -s -h " & $IPdebut & " " & $IPfin & " -f:csv " & $chemin & "\Toutes_les_adresses.txt")If Not FileExists($chemin & "\Fichier_Type.txt") Then $test = _FileCreate($chemin & "\Fichier_Type.txt")If Not FileExists($chemin & "\Wake_On_Line.txt") Then $test = _FileCreate($chemin & "\Wake_On_Line.txt")$file = FileOpen($chemin & "\Toutes_les_adresses.txt", 0)If $file = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'Toutes_les_adresses.txt'.")

$Countline = _FileCountLines($chemin & "\Toutes_les_adresses.txt") ; On compte les lignes$Fichier_Type = FileOpen($chemin & "\Fichier_Type.txt", 2)If $Fichier_Type = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'Fichier_Type.txt'.")$i = 1While $i <= $Countline ; Pour chaque ligne

$ligne = FileReadLine($file) ; On la lit$donnee = StringSplit($ligne, ",", 0) ; On la splite$PC = $donnee[3] ; On stocke le nom du PC en variable$MAC = $donnee[4] ; ainsi que l'adresse MAC correspondanteFileWrite($Fichier_Type, $PC & "," & $MAC & @CRLF) ; On écrit dans "Fichier_Type.txt" : nom_PC,@MAC$i = $i + 1

WEndFileClose($file)FileClose($Fichier_Type)Prep_Fichier_WakeOnLine()ProcessClose("Console_SPARC.exe")WinWaitClose ("Console_SPARC")If Not ProcessExists("Console_SPARC.exe") Then Run("Console_SPARC.exe", @WorkingDir) ; ===========================================================================================================

Func Prep_Fichier_WakeOnLine()$Fichier_Type = FileOpen($chemin & "\Fichier_Type.txt", 0)If $Fichier_Type = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'Fichier_Type.txt'.")$Countline2 = _FileCountLines($chemin & "\Fichier_Type.txt")$Wake_On_Line = FileOpen($chemin & "\Wake_On_Line.txt", 2)If $Wake_On_Line = -1 Then MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier 'Wake_On_Line.txt'")$i = 1While $i <= $Countline2

$ligne = FileReadLine($Fichier_Type)$donnee = StringSplit($ligne, ",", 0)$PC = $donnee[1]$MAC = $donnee[2]

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 61 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

FileWrite($Wake_On_Line, $PC & ",WakeUpCmd.exe /mac:" & $MAC & @CRLF)$i = $i + 1

WEndFileClose($Wake_On_Line)

EndFunc ;==>Prep_Fichier_WakeOnLine; ===========================================================================================================

4 . 1 1 A n n e x e 1 1 : C o d e d u l o g i c i e l « I n s t a l l »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=Synchronization_xp.ico#AutoIt3Wrapper_Outfile=Install.exe#AutoIt3Wrapper_Res_Fileversion=1.0.0.2#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND & Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

Const $INI = "C:\SPARC\Config_SPARC.ini"$chemin = IniRead($INI, "Main", "chemin", "") ; Définition du chemin de travail

Run('instsrv.exe "SPARC" "c:\SPARC\srvany.exe"') ; Commande qui installe le service

Run("regedit /s " & $chemin & "\cle.reg") ; Fusion de la clé avec la base de registres

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 62 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 1 2 A n n e x e 1 2 : F i c h i e r « C o n f i g _ S P A R C . i n i »

Fichier de configuration de la console Synchro Parc :

4 . 1 3 A n n e x e 1 3 : F i c h i e r « j e s u i s l a . t x t »

Liste des postes pouvant être restaurés :

4 . 1 4 A n n e x e 1 4 : F i c h i e r « T o u t e s L e s S a l l e s . t x t »

Liste de toutes les salles où des postes sont en attente de restauration :

4 . 1 5 A n n e x e 1 5 : F i c h i e r « P o s t e s A R e s t a u r e r . t x t »

Liste des postes qu'on veut restaurer (à ne pas confondre avec le fichier « jesuisla.txt »):

4 . 1 6 A n n e x e 1 6 : F i c h i e r « P C d e m a r r e . t x t »

Liste des postes ayant été démarrés en Wake On Lan (fichier de log) :

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 63 sur 67

[Main]Titre = "Console Synchroparc version :"chemin="\\peda\LOGICIEL\SPARC"IPdebut="172.20.0.1"IPfin="172.20.0.254"Chemin_SynchroParcXP="\\172.18.0.2\SPARC2K0\"

PC11S322PC01S322PC01S321PC03S321

PC01S323|PC02S323|PC04S323|PC05S323|PC07S323|PC11S323|

S322|S321|S129|S127|S118|S111|S101|S222|S201|S130

PC01S321PC02S321PC03S321PC05S321PC08S321PC22S321

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 1 7 A n n e x e 1 7 : A p e r ç u d u f i c h i e r « T o u t e s _ l e s _ a d r e s s e s . t x t »

Fichier qui fait correspondre à une adresse IP, un nom de poste et une adresse MAC, généré à l'aide de Angry IP Scan :

4 . 1 8 A n n e x e 1 8 : A p e r ç u d u f i c h i e r « F i c h i e r _ T y p e . t x t »

Fichier qui fait correspondre à un nom de poste une adresse MAC, créé en retravaillant le fichier « Toutes_les_adresses.txt » :

4 . 1 9 A n n e x e 1 9 : F i c h i e r « W a k e _ O n _ L i n e . t x t »

Fichier qui fait correspondre à un nom de poste une commande de Wake On Lan, créé en retravaillant le fichier « Fichier_Type.txt » :

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 64 sur 67

PC13S508,00-16-EC-91-35-A2PC01SCDI,00-15-F2-EC-9C-7BPC08SCDI,00-15-F2-EC-9C-1FPC07SCDI,00-15-F2-EC-9E-25PC15S508,00-16-EC-91-92-F0N/A,N/APC06SCDI,00-15-F2-EC-9C-E6PC16S508,00-16-EC-91-34-DDPC04S319,00-15-F2-EC-9C-9BPC14S129,00-15-F2-EC-9C-77PC10S508,00-16-EC-91-36-62

172.20.0.1,0 ms,PC13S508,00-16-EC-91-35-A2172.20.0.8,0 ms,PC01SCDI,00-15-F2-EC-9C-7B172.20.0.11,0 ms,PC08SCDI,00-15-F2-EC-9C-1F172.20.0.15,0 ms,PC07SCDI,00-15-F2-EC-9E-25172.20.0.18,0 ms,PC15S508,00-16-EC-91-92-F0172.20.0.19,0 ms,N/A,N/A172.20.0.25,0 ms,PC06SCDI,00-15-F2-EC-9C-E6172.20.0.31,0 ms,PC16S508,00-16-EC-91-34-DD172.20.0.36,0 ms,PC04S319,00-15-F2-EC-9C-9B172.20.0.40,0 ms,PC14S129,00-15-F2-EC-9C-77172.20.0.42,0 ms,PC10S508,00-16-EC-91-36-62

PC01S321,WakeUpCmd.exe /mac:00-19-DB-44-20-80PC05S319,WakeUpCmd.exe /mac:00-15-F2-EC-9C-85PC02S321,WakeUpCmd.exe /mac:00-0C-29-82-FC-62

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 2 0 A n n e x e 2 0 : C o d e d u l o g i c i e l « C r y p t a g e »

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=Synchronization_xp.ico#AutoIt3Wrapper_Outfile=Cryptage.exe#AutoIt3Wrapper_Res_Fileversion=1.0.0.8#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y#AutoIt3Wrapper_Res_LegalCopyright=Olivier LE GRAND & Dang-Khoa HA#AutoIt3Wrapper_Res_Language=1036#AutoIt3Wrapper_Run_Tidy=y#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <File.au3>#include <EditConstants.au3>#include <String.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>Const $INI = "Config_SPARC.ini"$chemin = IniRead($INI, "Main", "chemin", ""); Définition du chemin de travail$Titre = IniRead($INI, "Main", "Titre", "")$Chemin_SynchroParcXP = IniRead($INI, "Main", "Chemin_SynchroParcXP", "")$Image = @WorkingDir & "\Logo.jpg"FileInstall("C:\SPARC\Logo.jpg", @WorkingDir & "\Logo.jpg", 1)$Passphrase = "toto"#Region ### START Koda GUI section ### Form=C:\PROJET\SPARC\cryptage.kxf

$Form = GUICreate("Module Cryptage", 491, 180, 234, 214)GUISetBkColor(0xFFFFFF)$1 = GUICtrlCreateInput("", 16, 56, 161, 21)$2 = GUICtrlCreateInput("", 16, 128, 161, 21)$3 = GUICtrlCreateInput("", 320, 56, 161, 21, BitOR($ES_READONLY, $ES_NOHIDESEL, $ES_AUTOHSCROLL))$4 = GUICtrlCreateInput("", 320, 128, 161, 21, BitOR($ES_READONLY, $ES_NOHIDESEL, $ES_AUTOHSCROLL))$Lbl1 = GUICtrlCreateLabel("Login non crypté :", 16, 32, 130, 20)GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")$Lbl2 = GUICtrlCreateLabel("Mot de passe non crypté :", 16, 104, 170, 20)GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")$Lbl3 = GUICtrlCreateLabel("Login crypté :", 320, 32, 130, 20)GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")$Lbl4 = GUICtrlCreateLabel("Mot de passe crypté :", 320, 104, 130, 20)GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")$Conversion = GUICtrlCreateButton("GENERER", 192, 110, 113, 32, 0)GUICtrlSetFont(-1, 10, 800, 2, "Trebuchet MS")$Vider = GUICtrlCreateButton("Vider tous les champs", 192, 150, 113, 16, 0)GUICtrlSetFont(-1, 7, 800, 2, "Trebuchet MS")$Pic = GUICtrlCreatePic($Image, 198, 0, 100, 110, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###

While 1$nMsg = GUIGetMsg()Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $Conversion$loginIN = GUICtrlRead($1) ; On lit le login non crypté$mdpIN = GUICtrlRead($2) ; On lit le mot de passe non cryptéIf $loginIN = "" Or $mdpIN = "" Then ; Si un des deux champs est vide alors

Message("", "Veuillez remplir tous les champs", 1750, 45) ; on indique qu'il faut renseigner tous les champs

Else$loginIN = ""$loginIN = GUICtrlRead($1) ; On lit le login

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 65 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

$loginOUT = _StringEncrypt(1, $loginIN, $Passphrase, 3) ; On le crypteGUICtrlSetData($3, $loginOUT) ; et on l'affiche à droite$mdpIN = ""$mdpIN = GUICtrlRead($2) ; On lit le mot de passe$mdpOUT = _StringEncrypt(1, $mdpIN, $Passphrase, 3) ; On le crypteGUICtrlSetData($4, $mdpOUT) ; et on l'affiche à droite_FileCreate($chemin & "\cle_tmp.reg") ; on crée un fichier .reg temporaire$cle_tmp = FileOpen($chemin & "\cle_tmp.reg", 2); On y inscrit les infos :

FileWrite($chemin & "\cle_tmp.reg", "Windows Registry Editor Version 5.00" & @CRLF & "[HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC]" & @CRLF & '"Login"="' & $loginOUT & '"' & @CRLF & '"Password"="' & $mdpOUT & '"' & @CRLF)FileWrite($chemin & "\cle_tmp.reg", '"Titre"="' & $Titre & '"' & @CRLF & '"Chemin"="' & $chemin & '"' & @CRLF & '"Chemin_SynchroParcXP"="' & $Chemin_SynchroParcXP & '"')FileClose($cle_tmp)

; On crée puis édite un fichier cle.reg, en doublant les "\" :

_FileCreate($chemin & "\cle.reg")$cle = FileOpen($chemin & "\cle.reg", 2)$cle_tmp = FileOpen($chemin & "\cle_tmp.reg", 0)$cpt = _FileCountLines($chemin & "\cle_tmp.reg")For $i = 1 To 5 ; On recopie le début du fichier temporaire, qui ne nécéssite pas de changement

$line = FileReadLine($cle_tmp, $i)FileWrite($cle, $line & @CRLF)

NextFor $i = 6 To 7 ; On modifie le reste

$line = FileReadLine($cle_tmp, $i)$new_line = StringReplace($line, "\", "\\")FileWrite($cle, $new_line & @CRLF)

NextFileClose($cle_tmp)FileClose($cle)FileDelete($chemin & "\cle_tmp.reg") ; On supprime le fichier temporaireFileCopy($chemin & "\cle.reg", @LogonServer & "\NETLOGON", 1)Message("", "Génération du login/mot de passe réussie." & @CRLF & "L'application va se fermer.", 4000, 91)Exit 0

EndIf Case $ViderGUICtrlSetData($1, "")GUICtrlSetData($2, "")GUICtrlSetData($3, "")GUICtrlSetData($4, "")

EndSwitchWEnd; ###########################################################################################################

; ########################################## F O N C T I O N S ##############################################

; ###########################################################################################################

; ######################################## Affichage message ################################################

Func Message($info, $MESSAGE, $Temps, $TailleMessage) SplashTextOn($info, $MESSAGE, 250, $TailleMessage, -1, -1, 1) Sleep($Temps) SplashOff()EndFunc ;==>Message; ###########################################################################################################

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 66 sur 67

Licence Professionnelle Réseaux Informatiques et Industriels, IUT d'AngersStage au lycée Sacré Cœur d'Angers (Février à Juin 2009)

Dossier technique

4 . 2 1 A n n e x e 2 1 : F i c h i e r « C l e _ r e g . t x t »

Fichier à fusionner dans la base de registres :

Dang-Khoa HA – R2I Promo '09 Dossier technique Page 67 sur 67

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\OLG\SPARC]"Login"="48BD753842399D0C""Password"="48BD753842399D0C""Titre"="Console Synchroparc version :""Chemin"="\\\\peda\\LOGICIEL\\SPARC""Chemin_SynchroParcXP"="\\\\172.18.0.2\\SPARC2K0\\"