Protéger un dossier grâce à Applescript.
Par Contributeur - Publié le
Préparation
Que me faut-il ?
- un Mac,
- Applescript (livré avec tout les bons systèmes, MacOS par exemple :) ),
- un dossier dossier à protéger,
- un complément de pilotage
Le complément ne fonctionne pas sous OS X :'( et de ce fait le script non plus :''( .
Tout d'abord :
Vérifiez que vous vous avez bien placé le complément de pilotage téléchargé ci-dessus dans le dossier du même nom figurant dans votre dossier système.
Vérifiez que l'extension "Scripts de dossiers" figure bien dans celles chargées au démarrage , dans le cas contraire installez-la à l'aide de votre CD d'installation de MacOS.
Vous êtes prêt.
Principe de fonctionnement
Qu'allons nous faire exactement ?
Nous somme sur le point de réaliser 2 scripts qui protégeront un dossier. Mais visualisons leurs fonctionnement global :
Le premier, le plus important, sera une mini-application. Quand vous la lancerai, elle ouvrira une boîte de dialogue qui réclamera un mot de passe. Une fois celui-ci tapé, une vérification se déclenchera. Si le mot de passe est bon, le script (ou plus précisément le Finder pour les vertueux) rendra votre dossier visible (préalablement rendu invisible par vos soins). Puis il ouvrira la fenêtre du dossier que vous pourrai alors utiliser normalement. Si le mot de passe est faux le script beepera et affichera un dialogue de refus.
Au deuxième maintenant. Une fois que vous avez utilisé votre dossier à votre convenance, vous refermez sa fenêtre et... Il devient invisible de nouveau au bout de quelques secondes ! Car le deuxième script est compilé et est attaché à votre dossier. Ce script détecte la fermeture de la fenêtre et déclenche l'invisibilité.
La programmation
Je donne le listing ligne par ligne comme il doit apparaître dans l'éditeur de scripts (sauf pour les tabulations mais c'est sans importance) avec mes explications en italique en dessous (bien sûr il ne faut pas les recopier). Tout cela est entrecoupé par des marches a suivre. A la fin de cet article vous trouverez le listing complet.
Voici pour le premier script :
Premières lignes de code :
on run {}
tell application "Finder"
activate
Si vous ne comprenez pas la signification de ces lignes, je vous renvoie aux articles de M4E précédents.
Bon maintenant, que nous faut-il ?
Une boîte de dialogue où on peut entrer du texte et un bouton pour valider le texte. Pour cela, ouvrez le dictionnaire de "Compléments standard" se trouvant dans le dossier "Complément de pilotage".
![Protéger un dossier grâce à Applescript.](https://img-api.mac4ever.com/440/0/dialog.webp)
Dans ce dictionnaire ce trouve une commande qui sert à fabriquer des boîtes de dialogue, pile ce que l'on cherche.
Après avoir cliqué sur "display dialog" (en surbrillance bleue dans l'image) vous obtenez une explication de la commande et ses options.
Nous avons besoin des options :
- [default answer texte] -- la phrase par défaut à éditer
- [buttons liste] -- Une liste avec au maximum 3 bouton
- [default button nombre ou texte] -- le nom ou le nombre du bouton par défaut
- [with icon stop/note/caution] -- ... ou alors un de ces icons du système
Le texte à afficher est "Tapez votre mot de passe :" pour savoir quoi faire :). Le bouton se nommera "OK" et sera le boutton par défaut (celui qui est actionné quand on appuie sur entrée). Tout cela sera accompagné d'un icône rouge avec une main dedans, soit l'icône Stop du système.
Ligne de code :
display dialog "Entrez le mot de passe :" default answer "" buttons "OK" default button 1 with icon stop
Les guillemets de default answer restent vide du fait qu'on ne veut pas que dans la ligne il apparaisse du texte. Si il ne vous faut qu'un bouton la formule sera : buttons "bouton1" sinon elle sera de la forme : buttons {"bouton1","bouton2"} .
Ensuite il faut récupérer le texte entré dans la boîte de dialogue.
![Protéger un dossier grâce à Applescript.](https://img-api.mac4ever.com/440/0/reply.webp)
Pour cela dans la liste des commandes, en italique, se trouve une "Class" qui se nomme "dialog reply". Après avoir cliqué dessus, on peut y lire :
text returned texte -- texte entré(présent seulement si 'réponse par défaut' à été demandé)
Pour faire la vérification, nous allons utiliser la célèbre fonction if.
Lignes de code :
if the text returned of the result is "votre mot de passe" then
Ici on compare le texte entré avec "votre mot de passe" à l'aide de la commande is. Directement après, il faut placer les commandes à exécuter si le mot de passe est correct.
ATTENTION : Applescript ne fait pas ici la différence entre les majuscules et les minuscules. Pour lui "VOTRE Mot De Passe" est identique à "votre mot de passe".
Donc dans le cas où le mot de passe est exact, nous allons entrer la localisation du dossier dans une variable qui se nomme DossierProtege. Dans votre Mac la localisation est nommée alias. Pour trouver celle-ci il faut tout d'abord commencer par le nom du disque puis par les noms des dossiers petit à petit, ceux-ci séparé par des : (essayez donc de mettre des : dans un nom de dossier ou fichier).
Par ex :
![Protéger un dossier grâce à Applescript.](https://img-api.mac4ever.com/440/0/bureau.webp)
Ici la localisation sera :
"Mac DisqueDur:dossier quelconque:dossier pouet pouet:dossier à protéger:"
Ligne de code :
set DossierProtege to alias "Mac DisqueDur:dossier quelconque:dossier pouet pouet:dossier à protéger:"
la commande set sert en même temps à déclarer la variable et à lui attribuer une valeur.
Donc ensuite, il faut faire réapparaître votre dossier qui est invisible. Un petit tour dans le dictionnaire du complément de pilotage que je vous ait fait téléchargé : File Visibility.
![Protéger un dossier grâce à Applescript.](https://img-api.mac4ever.com/440/0/visibility.webp)
Pour faire apparaître un dossier ou un fichier, il s'agit de la commande :
- make file visible la spécification du fichier --le fichier à rendre visible
Ligne de code :
make file visible DossierProtege
Ici la spécification du fichier c'est l'alias du dossier que l'on veut protégé que nous avons placé dans la variable DossierProtege.
Reste plus qu'a ouvrir la fenêtre du dossier (=> la commande se trouve dans le dictionnaire du finder, allez chercher vous même).
Ligne de code :
open folder DossierProtege
Aucun commentaire :).
La boucle où le mot de passe est exact est donc finie. Maintenant dans le cas où il est inexact.
Lignes de code :
else
Else va avec if. Cela ouvre une boucle si la fonction testé avec if est fausse(false).
beep
Pas obligatoire, mais tellement amusant. Le Mac va faire beep :).
Pour signaler qu'il s'agit d'un mauvais mot de passe, le Mac va faire beep et nous allons afficher un message d'explication. Pour le message la commande sera l'indispensable display dialog situé dans le dictionnaire de ... Un beau cadeau tiré au sort avec ceux qui m'enverrons un mail avec les mots qu'il faut placer à la place des ... !
Lignes de code :
display dialog "Votre mot de passe est faux !" buttons "Mince" default button 1 with icon caution
Voilà le message avec un bouton qui se nomme "Mince" :).
end if
Fin de la boucle if
end tell
Fin de la boucle tell
end run
Fin d'exécution du script
La programmation de ce script s'achève ici. Cliquez sur le bouton Vérifier (en haut à droite). En cas d'erreur débrouillez vous avec le listing à la fin de l'article car normalement il ne peut s'agir que de faute de frappe. Si vous avez une erreur persistante, to make file invisible DossierProtege
C'est une forme rapide quand on n'a qu'une seule commande à faire exécuter par le finder.
end closing folder window for
C'est la fin :).
La programmation de ce script s'achève ici. Cliquez sur le bouton Vérifier (en haut à droite). En cas d'erreur débrouillez vous avec le listing à la fin de l'article car normalement il ne peut s'agir que de faute de frappe. Il faut l'enregistrer , donc dans le menu Fichier choisissez l'onglet Créer un exécutable...(pour la source vous repasserez :) ) et donnez lui un nom et le format Script Compilé, je vous conseille de l'enregistrer dans le dossier Scripts du Dossier Système. Vous pouvez quittez l'Editeur de Scripts.
Voilà pour ce deuxième script.
Mise en fonctionnement
Reste une petite manipulation à faire. Appuyez sur contrôle et cliquez sur le dossier à protéger pour afficher les menus contextuels. Choisissez l'onglet Associer un script de dossier. Puis choisissez le deuxième script réalisé.
Ouvrez votre dossier puis fermez-le. Miracle au bout de quelques secondes, il disparaît.
Voilà tout est prêt.
Pour le rendre visible à nouveau et accessible à toutes les applications utilisez le premier script.
Vous venez de réaliser un script.
Le listing
Voilà le listing du premier script :
on run {}
tell application "Finder"
activate
display dialog "Entrez le mot de passe :" default answer "" buttons "OK" default button 1 with icon stop
if the text returned of the result is "votre mot de passe" then
set DossierProtege to alias "Mac DD:Pouet pouet:par exemple"
make file visible DossierProtege
open folder DossierProtege
else
beep
display dialog "Votre mot de passe est faux !" buttons "Mince" default button 1 with icon caution
end if
end tell
end run
Et voici le listing du deuxième script :
on closing folder window for DossierProtege
tell application "Finder" to make file invisible DossierProtege
end closing folder window for
Attention :
Si vous faite du copier-coller vous aurez à remettre les parenthèses en utilisant celles de la touche 3.