dossier technique

Commentaires

Transcription

dossier technique
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
___________________________________________
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
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
Sommaire
INTRODUCTION...................................................................................................................................................................4
1
PROJET ALCASAR.............................................................................................................................................................5
1.1
DESCRIPTION GÉNÉRALE DU PRODUIT...........................................................................................................................................5
1.1.1
Mission...........................................................................................................................................................................5
1.1.2
Constituants foncionnels et matériels............................................................................................................................5
1.1.3
Explication globale du fonctionnement.........................................................................................................................5
1.2
PERFORMANCES ET LIMITES........................................................................................................................................................5
1.2.1
Caractéristiques opérationnelles du produit.................................................................................................................5
1.2.2
Limites d'utilisation.......................................................................................................................................................7
1.2.3
Extensions possibles......................................................................................................................................................8
1.3
ÉLÉMENTS TECHNIQUES..............................................................................................................................................................8
1.3.1
Installation de Linux Mandriva 2009............................................................................................................................8
1.3.2
Installation d'ALCASAR v1.7 rc3................................................................................................................................14
1.3.3
Utilisation....................................................................................................................................................................15
1.3.4
Tests et réglages...........................................................................................................................................................19
1.3.5
Schéma fonctionnel......................................................................................................................................................20
1.3.6
Plan..............................................................................................................................................................................20
2
PROJET REMOTE VLC LIGHT....................................................................................................................................21
2.1
DESCRIPTION GÉNÉRALE DU PRODUIT.........................................................................................................................................21
2.1.1
Mission.........................................................................................................................................................................21
2.1.2
Constituants fonctionnels et matériels.........................................................................................................................21
2.1.3
Explication globale du fonctionnement.......................................................................................................................21
2.2 PERFORMANCES ET LIMITES...........................................................................................................................................................22
2.2.1
Caractéristiques opérationnelles du produit...............................................................................................................22
2.2.2
Limites d'utilisation.....................................................................................................................................................22
2.2.3
Extensions possibles....................................................................................................................................................22
2.3
ÉLÉMENTS TECHNIQUES............................................................................................................................................................22
2.3.1
Installation et utilisation de Client_VLC.....................................................................................................................22
2.3.2
Installation et utilisation de Remote_VLC_Light........................................................................................................23
2.3.3
Fonctionnement...........................................................................................................................................................25
2.3.4
Tests et réglages...........................................................................................................................................................26
2.3.5
Schéma fonctionnel......................................................................................................................................................26
2.3.6
Fichiers de configuration et scripts.............................................................................................................................26
3
PROJET CONSOLE SYNCHRO PARC.........................................................................................................................28
3.1
DESCRIPTION GÉNÉRALE DU PRODUIT.........................................................................................................................................28
3.1.1
Mission.........................................................................................................................................................................28
3.1.2
Constituants fonctionnels et matériels.........................................................................................................................28
3.1.3
Explication globale du fonctionnement.......................................................................................................................28
3.2
PERFORMANCES ET LIMITES......................................................................................................................................................29
3.2.1
Caractéristiques opérationnelles du produit...............................................................................................................29
3.2.2
Limites d'utilisation.....................................................................................................................................................29
3.2.3
Extensions possibles....................................................................................................................................................29
3.3
ÉLÉMENTS TECHNIQUES............................................................................................................................................................30
3.3.1
Synchro Parc XP..........................................................................................................................................................30
3.3.2
Console de restauration à distance Synchro Parc.......................................................................................................31
3.3.3
Tests et réglages...........................................................................................................................................................35
3.3.4
Schéma de synthèse......................................................................................................................................................35
3.3.5
Fichiers de configuration et scripts.............................................................................................................................36
4
ANNEXES............................................................................................................................................................................37
4.1
4.2
ANNEXE 1 : CODE DU LOGICIEL « VLC_CLIENT »....................................................................................................................37
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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
4.20
4.21
ANNEXE 3 : APERÇU DU FICHIER « ORANGE_TV.M3U ».............................................................................................................38
ANNEXE 4 : FICHIER « CHAINES.TXT »......................................................................................................................................39
ANNEXE 5 : APERÇU DU FICHIER « CH_ADR.TXT »....................................................................................................................39
ANNEXE 6 : CODE DU LOGICIEL « REMOTE_VLC_LIGHT ».......................................................................................................40
ANNEXE 7 : CODE DU LOGICIEL « CLIENT_SPARC »...............................................................................................................50
ANNEXE 8 : CODE DU LOGICIEL « CONSOLE_SPARC ».............................................................................................................52
ANNEXE 9 : CODE DU LOGICIEL « PREPA_CONSOLE »................................................................................................................59
ANNEXE 10 : CODE DU LOGICIEL « MODULE_IMPORT »...........................................................................................................61
ANNEXE 11 : CODE DU LOGICIEL « INSTALL »..........................................................................................................................62
ANNEXE 12 : FICHIER « CONFIG_SPARC.INI ».....................................................................................................................63
ANNEXE 13 : FICHIER « JESUISLA.TXT »..................................................................................................................................63
ANNEXE 14 : FICHIER « TOUTESLESSALLES.TXT »..................................................................................................................63
ANNEXE 15 : FICHIER « POSTESARESTAURER.TXT »................................................................................................................63
ANNEXE 16: FICHIER « PCDEMARRE.TXT ».............................................................................................................................63
ANNEXE 17 : APERÇU DU FICHIER «TOUTES_LES_ADRESSES.TXT»..............................................................................................64
ANNEXE 18 : APERÇU DU FICHIER «FICHIER_TYPE.TXT»..........................................................................................................64
ANNEXE 19 : FICHIER « WAKE_ON_LINE.TXT ».....................................................................................................................64
ANNEXE 20 : CODE DU LOGICIEL « CRYPTAGE »......................................................................................................................65
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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
Introduction
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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
1
Projet ALCASAR
1.1
Description générale du produit
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
Performances et limites
1.2.1
➢
Caractéristiques opérationnelles du produit
Traçer, imputer et contrôler les connexions
L'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'Angers
Stage 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ée
Dans 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 consultation
Alcasar 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 portail
La 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'Angers
Stage 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 usagers
Afin 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égration
La 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'Angers
Stage 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éments techniques
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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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é utilisateur
Les é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'Angers
Stage 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é administrateur
La 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
2
Projet Remote VLC Light
2.1
Description générale du produit
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
Dang-Khoa HA – R2I Promo '09
Figure 19 : sortie vidéo sur VLC
Dossier technique
Page 21 sur 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
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
Performances et limites
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éments techniques
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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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 mms
Ce 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
3
Projet Console Synchro Parc
3.1
Description générale du produit
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'Angers
Stage 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
Performances et limites
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'Angers
Stage 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éments techniques
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'Angers
Stage 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é client
Pour 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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
→ Côté administrateur
Nous 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage 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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4
Annexes
4.1
Annexe 1 : Code du logiciel « VLC_Client »
#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)
Exit
Else
EndIf
EndFunc ;==>VLC_EXIST
Dang-Khoa HA – R2I Promo '09
Dossier technique
Page 37 sur 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
; ###########################################################################################################
; ########################## 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
Annexe 2 : Fichier « Remote_VLC_Light.ini »
Fichier de configuration de Remote_VLC_Light :
[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"
4.3
Annexe 3 : Aperçu du fichier « Orange_TV.m3u »
Liste des flux mms (streaming TV) fournie par Orange :
#EXTM3U
#EXTINF:1,2424 Video
mms://onlinetv-fr-streamer-prod.otv.cvf.fr/VODBarker-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...
#EXTINF:3,France 3
mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France3-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...
#EXTINF:5,France 5
mms://onlinetv-fr-streamer-prod.otv.cvf.fr/France5- 700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...
#EXTINF:7,Arte
mms://onlinetv-fr-streamer-prod.otv.cvf.fr/Arte-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...
#EXTINF:8,Direct 8
mms://onlinetv-fr-streamer-prod.otv.cvf.fr/Direct8-700/KEYMTI0MDgxNTk2ODAwMCpWSURFT0MtMTA...
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
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
4.4
Annexe 4 : Fichier « Chaines.txt »
Liste de toutes les chaînes, créée en retravaillant la liste « Orange_TV.m3u » :
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|
Remarque : Tout ce « bloc » tient en fait sur une seule et unique ligne
4.5
Annexe 5 : Aperçu du fichier « Ch_Adr.txt »
Liste qui fait correspondre une adresse à une chaîne, créée en retravaillant la liste « Orange_TV.m3u » :
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...
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
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
4.6
Annexe 6 : Code du logiciel « Remote_VLC_Light »
#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
#include
#include
#include
#include
#include
#include
<ComboConstants.au3>
<EditConstants.au3>
<GuiComboBox.au3>
<GUIConstantsEx.au3>
<StaticConstants.au3>
<WindowsConstants.au3>
<file.au3>
; Variables
Dim $fichier_VOD, $fichier_MOD, $fichier_TV, $Select_VOD, $Select_CD, $Select_DVD, $Select_TV
Dim $lettre_CDROM_CD, $lettre_CDROM_DVD, $Label_CDROM_CD, $Label_CDROM_DVD
Dim $Extension
Dim $Combo_CD, $lettre_CDROM_SansAntislash_CD, $Combo_DVD
Dim $version_VLC
Dim $index_chaines
Dim $liste_orange
Dim $maChaineCh, $maChaineAdr
Dim $i, $j, $nbCh, $nbLignes
Dim $maLigne
Dim $index_corres
Dim $monInfo
Dim $Chaine
Dim $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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
Copy_Orange_TV()
Else
EndIf
list()
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,
$WS_CLIPSIBLINGS))
15,
400,
84,
84,
BitOR($SS_NOTIFY,
$WS_GROUP,
$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
BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
chaîne",
130,
428,
144,
400,
Else ; Version de Remote_VLC_Light sans TV à la demande
EndIf
$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)
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,
$ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))
172,
238,
100,
21,
BitOR($ES_WANTRETURN,
100,
21,
BitOR($ES_WANTRETURN,
$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,
$ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))
172,
335,
$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'Angers
Stage 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 $maListe
If $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 = 1
For $n = 1 To $nbCh Step 1
GUICtrlSetData($Select_TV, $uneChaine[$n])
GUISetState(@SW_SHOW)
Next
FileClose($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)
Else
EndIf
FileClose($Menu_Open)
$Label_lettre_DVD = GUICtrlCreateLabel("DVD", 135, 50, 44, 17)
$Label_lettre_CD = GUICtrlCreateLabel("CD", 135, 152, 19, 17)
$CDROM_SansAntislash = DriveGetDrive("CDROM")
; ***********************************************************************************************************
; 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'Angers
Stage 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_CLOSE
Exit
Case $SelectVOD
Select_Fichier_VOD()
GUICtrlSetState($Source_VOD, $GUI_enABLE)
Case $Combo_CD
If StringLen($Menu_Read) > 3 Then
GUICtrlSetState($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
Else
GUICtrlSetState($Source_CD, $GUI_enABLE)
EndIf
Case $Combo_DVD
If 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 <> "???" Then
EndIf
Else
GUICtrlSetState($Source_DVD, $GUI_enABLE)
EndIf
Case $SelectMOD
Select_Fichier_MOD()
GUICtrlSetState($Source_MOD, $GUI_enABLE)
Case $Select_TV
If $Select_TV <> "Sélectionnez une chaîne" Then
GUICtrlSetState($Source_TV, $GUI_enABLE)
EndIf
Case $Source_DVD
If 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'Angers
Stage 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)
Else
GUICtrlSetState($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 Then
Message($INFO, "Vous avez sélectionné le CD sur le CDROM
& ".Le Titre du CD est:" & $Label_CDROM_CD, $Temps, 110)
" & $lettre_CDROM_CD
Else
GUICtrlSetState($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_MOD
Message($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_TV
If $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
Next
Else
EndIf
Case $Annuler
Exit
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'Angers
Stage 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)
Else
EndIf
EndSwitch
WEnd
; ###########################################################################################################
; ######################################## 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'Angers
Stage 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=dis
play,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")
EndIf
EndFunc
;==>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=dis
play,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")
EndIf
EndFunc
;==>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] & "|")
Next
EndIf
FileClose($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'Angers
Stage 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=disp
lay,dst=std{access=udp,mux=ts,dst=" & $Add_UDP_Court & "}}")
ElseIf $Extension[2] = "avi" Then
Run($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" Then
Run($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" Then
Run($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" Then
Run($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" Then
Run($Chemin_VLC & " --ttl 8 -vvv " & $fichier_VOD & "
:sout=#duplicate{dst=display,dst=std{access=udp,mux=ts,url=" & $Add_UDP_Court & "}}")
EndIf
EndFunc
;==>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
Else
EndIf
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'Angers
Stage 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
Dim
Dim
Dim
Dim
Dim
$index_chaines
$liste_orange
$maChaineCh
$nbLignes
$i
$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 = 2
While $i <= $nbLignes
$maLigne = FileReadLine($liste_orange, $i)
$maChaineCh = StringSplit($maLigne, ",")
; On stocke cette liste dans $index_chaines, soit le document Chaines.txt
FileWrite($index_chaines, $maChaineCh[2] & "|")
$i = $i + 2
WEnd
FileClose($index_chaines) ; Fermeture des fichiers ouverts
FileClose($liste_orange)
EndFunc
;==>List
; ###########################################################################################################
;
; ######################## Créer fichier de correspondance "chaîne,adresse" ==> ChAdr.txt ###################
Func CorresChAdr()
Dim
Dim
Dim
Dim
Dim
Dim
$index_corres
$liste_orange
$maChaineAdr
$nbLignes
$j
$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 = 2
While $j <= $nbLignes
Dang-Khoa HA – R2I Promo '09
Dossier technique
Page 48 sur 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
$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.txt
FileWrite($index_corres, $maChaineAdr[2] & ",")
$j = $j + 1
$maLigne = FileReadLine($liste_orange, $j)
$maChaineAdr = StringSplit($maLigne, ",")
FileWrite($index_corres, $maChaineAdr[1] & @CR)
$j = $j + 1
WEnd
FileClose($index_chaines) ; Fermeture des fichiers ouverts
FileClose($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 pas
If $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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.7
Annexe 7 : Code du logiciel « Client_SPARC »
#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 = 0
While $i <= $nbLignes
$ligne = FileReadLine($File, $i)
If $Nom = $ligne Then ;si oui, on quitte la boucle
Exit
Else
$i = $i + 1
EndIf
WEnd
EndFunc
;==>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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
Else
Restauration()
EndIf
EndFunc
;==>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.txt
FileClose($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", $Login
RegWrite("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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.8
Annexe 8 : Code du logiciel « Console_SPARC »
#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
#include
#include
#include
#include
#include
#include
<ListBoxConstants.au3>
<GuiListBox.au3>
<File.au3>
<ComboConstants.au3>
<GUIConstantsEx.au3>
<StaticConstants.au3>
<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_perso
Dim $file ; fichier à ouvrir, ici $chemin\scan.txt
Dim $ligne, $line ; ligne lue dans un fichier
Dim $SalleDuPC ; nom de la salle lu dans le nom de pc
Dim $salles ; nom du fichier contenant la liste des salles
Dim $destination ; nom du fichier portant le nom de la salle et contenant les noms d'ordinateurs
Dim $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'Angers
Stage 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,
$CBS_SORT))
GUICtrlSetData($Combo, $maLigne)
48, 121,
25,
BitOR($CBS_DROPDOWNLIST,
$CBS_AUTOHSCROLL,
$WS_VSCROLL,
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 $Aide
ShellExecute($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'Angers
Stage 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 combobox
EndIf
Case $Select1 ; [>]
SelectionUn()
Case $SelectAll ; [>>]
SelectionTOUS()
Case $Deselect1 ; [<]
DeselectionUn()
Case $DeselectAll ; [<<]
DeselectionTOUS()
Case $Vider
DeselectionTOUS()
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 $Changer
If 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 $PCselect
GUICtrlSetState($Combo, $GUI_enABLE) ; et on réactive la combobox
Message("", "Les postes précédemment sélectionnés ne seront pas restaurés", 2700, 85)
Else
Message("", "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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
Else
EndIf
Exit
RESTAURATION()
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 combobox
FileOpen($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt", 0) ; On ouvre le fichier
correspondant à une salle
$nbLignes = _FileCountLines($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt")
$i = 1
For $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)
Next
EndFunc
FileClose($chemin & "\" & $salleChoisie & "\" & $salleChoisie & ".txt")
;==>Lister
; ###########################################################################################################
; ##################################### Actions sur le bouton RESTAURER #####################################
Func RESTAURATION()
Dim $PostesARestaurer
Dim $PCaRestaurer ; Déclaration d'une variable locale
Dim $cdc
$PostesARestaurer = FileOpen($chemin & "\PostesARestaurer.txt", 2)
$cpt = _GUICtrlListBox_GetCount($ListBoxOut) ; On compte le nombre d'éléments dans la liste de droite
For $b = 0 To $cpt - 1 ; Pour chaque élément,
$cdc = $cdc & _GUICtrlListBox_GetText($ListBoxOut, $b) & "|" ; On le stocke dans une variable
Next ; et on boucle
FileWrite($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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
Next
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 suivante
EndIf
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é.")
EndIf
If 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
Dim
Dim
Dim
$selection
$tabtmp
$tableauPostes
$index
If _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
Dim
Dim
Dim
$deselection
$tabtmp2
$tableauPostes2
$index2
If _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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
GUICtrlSetData($ListBoxIn, $deselection)
EndFunc
EndIf
;==>DeselectionUn
; ###########################################################################################################
; ##################################### Sélection de tous les PC ############################################
Func SelectionTOUS()
$nbPC = _GUICtrlListBox_GetCount($ListBoxIn) ; On compte le nombre d'éléments dans la liste de gauche
For $k = 0 To $nbPC ; Pour chaque élément,
$var = _GUICtrlListBox_GetText($ListBoxIn, $k) ; On le stocke dans une variable
GUICtrlSetData($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 variable
GUICtrlSetData($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
'PostesARestaurer.txt'.")
d'ouvrir
le
fichier
$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 $cmd
Dim $PC
Dim $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'Angers
Stage 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 expression
If $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
correspondante
FileWrite($PCdemarre, $PC & @CRLF) ; on écrit le nom du poste allumé en WOL dans
$PCdémarré
Next
EndIf
Next
FileClose($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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.9
Annexe 9 : Code du logiciel « Prepa_Console »
#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
Dim
Dim
Dim
Dim
Dim
Dim
$groupes[1], $groupe_perso
$file ; fichier à ouvrir, ici $chemin\scan.txt
$ligne, $line ; ligne lue dans un fichier
$SalleDuPC ; nom de la salle lu dans le nom de pc
$salles ; nom du fichier contenant la liste des salles
$destination ; nom du fichier portant le nom de la salle et contenant les noms d'ordinateurs
$ordi ; nom de l'ordinateur
If Not FileExists($chemin & "\jesuisla.txt") Then $test = _FileCreate($chemin & "\jesuisla.txt")
If
Not
FileExists($chemin
"\ToutesLesSalles.txt")
&
"\ToutesLesSalles.txt")
Then
$test
=
_FileCreate($chemin
&
; ########################## 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
Else
While 1
$line = FileReadLine($file) ; On lit chaque ligne
de "jesuisla.txt"
If @error = -1 Then ExitLoop
If 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)
EndIf
WEnd
EndIf
$lesSalles = FileOpen($chemin & "\ToutesLesSalles.txt", 2) ; On renseigne le fichier des salles
For $i = 1 To (UBound($groupes) - 1)
FileWrite($lesSalles, $groupes[$i] & "|") ; écrire le nom d'une salle dans le tableau
FileOpen($chemin & $groupes[$i], 2) ; créer un fichier au nom de la salle
Next
FileClose($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
Dang-Khoa HA – R2I Promo '09
&
"\ToutesLesSalles.txt",
0)
Dossier technique
;
On
ouvre
la
liste
des
salles
créée
dans
Page 59 sur 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
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 salle
DirCreate($chemin & "\" & $uneSalle[$n]) ; On crée un dossier portant ce nom
$n = $n + 1
If $uneSalle[$n] = "" Then ExitLoop
WEnd
FileClose($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 = 1
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 poste
FileDelete($chemin & "\" & $salle & "\" & $salle & ".txt") ; On supprime le fichier, au cas où il
existe déjà
Next
FileClose($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 poste
If Not FileExists($chemin & "\" & $salle & "\" & $salle & ".txt") Then ; si le fichier n'existe pas,
_FileCreate($chemin & "\" & $salle & "\" & $salle & ".txt") ; on le crée
EndIf
FileOpen($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
Next
FileClose($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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.10
Annexe 10 : Code du logiciel « Module_Import »
#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 = 1
While $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 correspondante
FileWrite($Fichier_Type, $PC & "," & $MAC & @CRLF) ; On écrit dans "Fichier_Type.txt"
$i = $i + 1
: nom_PC,@MAC
WEnd
FileClose($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 = 1
While $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'Angers
Stage 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
WEnd
FileClose($Wake_On_Line)
EndFunc
;==>Prep_Fichier_WakeOnLine
; ===========================================================================================================
4.11
Annexe 11 : Code du logiciel « Install »
#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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.12
Annexe 12 : Fichier « Config_SPARC.ini »
Fichier de configuration de la console Synchro Parc :
[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\"
4.13
Annexe 13 : Fichier « jesuisla.txt »
Liste des postes pouvant être restaurés :
PC11S322
PC01S322
PC01S321
PC03S321
4.14
Annexe 14 : Fichier « ToutesLesSalles.txt »
Liste de toutes les salles où des postes sont en attente de restauration :
S322|S321|S129|S127|S118|S111|S101|S222|S201|S130
4.15
Annexe 15 : Fichier « PostesARestaurer.txt »
Liste des postes qu'on veut restaurer (à ne pas confondre avec le fichier « jesuisla.txt »):
PC01S323|PC02S323|PC04S323|PC05S323|PC07S323|PC11S323|
4.16
Annexe 16: Fichier « PCdemarre.txt »
Liste des postes ayant été démarrés en Wake On Lan (fichier de log) :
PC01S321
PC02S321
PC03S321
PC05S321
PC08S321
PC22S321
Dang-Khoa HA – R2I Promo '09
Dossier technique
Page 63 sur 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
4.17
Annexe 17 : Aperçu du fichier
«Toutes_les_adresses.txt»
Fichier qui fait correspondre à une adresse IP, un nom de poste et une adresse MAC, généré à l'aide de
Angry IP Scan :
172.20.0.1,0 ms,PC13S508,00-16-EC-91-35-A2
172.20.0.8,0 ms,PC01SCDI,00-15-F2-EC-9C-7B
172.20.0.11,0 ms,PC08SCDI,00-15-F2-EC-9C-1F
172.20.0.15,0 ms,PC07SCDI,00-15-F2-EC-9E-25
172.20.0.18,0 ms,PC15S508,00-16-EC-91-92-F0
172.20.0.19,0 ms,N/A,N/A
172.20.0.25,0 ms,PC06SCDI,00-15-F2-EC-9C-E6
172.20.0.31,0 ms,PC16S508,00-16-EC-91-34-DD
172.20.0.36,0 ms,PC04S319,00-15-F2-EC-9C-9B
172.20.0.40,0 ms,PC14S129,00-15-F2-EC-9C-77
172.20.0.42,0 ms,PC10S508,00-16-EC-91-36-62
4.18
Annexe 18 : Aperçu du fichier «Fichier_Type.txt»
Fichier qui fait correspondre à un nom de poste une adresse MAC, créé en retravaillant le fichier
« Toutes_les_adresses.txt » :
PC13S508,00-16-EC-91-35-A2
PC01SCDI,00-15-F2-EC-9C-7B
PC08SCDI,00-15-F2-EC-9C-1F
PC07SCDI,00-15-F2-EC-9E-25
PC15S508,00-16-EC-91-92-F0
N/A,N/A
PC06SCDI,00-15-F2-EC-9C-E6
PC16S508,00-16-EC-91-34-DD
PC04S319,00-15-F2-EC-9C-9B
PC14S129,00-15-F2-EC-9C-77
PC10S508,00-16-EC-91-36-62
4.19
Annexe 19 : Fichier « Wake_On_Line.txt »
Fichier qui fait correspondre à un nom de poste une commande de Wake On Lan, créé en retravaillant le
fichier « Fichier_Type.txt » :
PC01S321,WakeUpCmd.exe /mac:00-19-DB-44-20-80
PC05S319,WakeUpCmd.exe /mac:00-15-F2-EC-9C-85
PC02S321,WakeUpCmd.exe /mac:00-0C-29-82-FC-62
Dang-Khoa HA – R2I Promo '09
Dossier technique
Page 64 sur 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
4.20
A nne x e 2 0 : Co de du l o g i c i e l « Cry ptag 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
#include
#include
#include
#include
#include
<File.au3>
<EditConstants.au3>
<String.au3>
<GUIConstantsEx.au3>
<StaticConstants.au3>
<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
$2
$3
$4
=
=
=
=
GUICtrlCreateInput("",
GUICtrlCreateInput("",
GUICtrlCreateInput("",
GUICtrlCreateInput("",
16, 56, 161, 21)
16, 128, 161, 21)
320, 56, 161, 21, BitOR($ES_READONLY, $ES_NOHIDESEL, $ES_AUTOHSCROLL))
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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
$loginOUT = _StringEncrypt(1, $loginIN, $Passphrase, 3) ; On le crypte
GUICtrlSetData($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 crypte
GUICtrlSetData($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)
Next
For $i = 6 To 7 ; On modifie le reste
$line = FileReadLine($cle_tmp, $i)
$new_line = StringReplace($line, "\", "\\")
FileWrite($cle, $new_line & @CRLF)
Next
FileClose($cle_tmp)
FileClose($cle)
FileDelete($chemin & "\cle_tmp.reg") ; On supprime le fichier temporaire
FileCopy($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 $Vider
GUICtrlSetData($1,
GUICtrlSetData($2,
GUICtrlSetData($3,
GUICtrlSetData($4,
"")
"")
"")
"")
EndSwitch
WEnd
; ###########################################################################################################
; ########################################## 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'Angers
Stage au lycée Sacré Cœur d'Angers (Février à Juin 2009)
Dossier technique
4.21
Annexe 21 : Fichier « Cle_reg.txt »
Fichier à fusionner dans la base de registres :
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\\"
Dang-Khoa HA – R2I Promo '09
Dossier technique
Page 67 sur 67

Documents pareils