# AppleScript : Intitulé des Préférences Panes ???



## benzorg (24 Mars 2005)

Bonsoir,

J'essaye en vain d'écrire un petit script pour appeler le panneau "Partage" de mes Préférences Système. 
Impossible de trouver l'appelation lui correspondant, j'Obtiens l'erreur : "Erreur dans Préférences Système : NSArgumentEvaluationScriptError"?!?

J'ai regardé dans un exemple de script : Get User Name.applescript
dont je vous recopie ici le début

tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preferences.users"
end tell

Comment sait-on que le panneau "Comptes" s'appele  "com.apple.preferences.users"

J'ai beau regardé la docs et le dictionnaire de l'application Systeme Preferences, je ne trouve rien qui corresponde au intitulé des panneaux, ni des différentes rubriques de chaque panneau.

Merci de m'éclairer sur ce point

cordialement

benoit


----------



## benzorg (25 Mars 2005)

Personne pour me lire, je suis si ennuyeux que ça :-(

benoit


----------



## El_ChiCo (25 Mars 2005)

voilà, j'ai trouvé !

en toute logique, c'est com.apple.preferences.sharing


```
tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preferences.sharing"
end tell
```


----------



## benzorg (25 Mars 2005)

Merci El_ChiCo 

mais peux tu m'expliquer comment tu les trouves ces intitulés...

parce qu'il faut aussi que j'agisse sur les paramêtres du Firewall....

et par la même occasion (parce que je cherche dans tous les sens sur le web et dans la docs Apple et je ne trouve pas...), comment puis-je activer ou désactiver un service, ajouter et activer un nouveau port dans mon Coupe-feu????

cordialement

benoit


----------



## benzorg (25 Mars 2005)

n'y aurait'il personne pour éclairer mes débuts en Applescript ???

j'ai beau chercher dans les docs anglaises, les bibkiothèques applescript des applications, impossible de trouver quelque chose d'explicite... ça doit pourtant exister, je ne cherche pas à faire quelque chose de bien compliquer, si????

merci à ceux qui pourront me sortir de cette obscurité  

cordialement

benoit


----------



## Didier Guillion (25 Mars 2005)

Sachant qu'il faut plus d'un an a Apple pour ne PAS donner de réponse à une question technique vitale, ne soit pas impatient.
Je suis sur que plein de Mac Users te lisent et sauront te répondre, je l'aurait fait volontier mais je ne connais pas la réponse.

Cordialement


----------



## benzorg (25 Mars 2005)

merci Didier,

je vais patienter, esperant qu'un Macuser puisse m'eclairer, en attendant je vais continuer mes investigations...

cordialement

benoit


----------



## El_ChiCo (25 Mars 2005)

pour ce qui est des intitulés des panneaux de préférence, j'ai fait au pif... Dans la mesure ou comptes était user, j'ai essayé "partage" en anglais, qui m'a donne "sharing" et qui à marché du premier coup.
Je pense que si tu essaye sound ca t'affiche les son, etc...
Bon d'accord, sound, c'est un mauvais exemple... Tu vois, ca ne peut pas marcher à tous les coups  Mais tu test, et tu retest et faut être patient 

Pour ce qui est des réglages plus précis à l'intérieur de chaque panneau, je cherche de mon côté et je te tiens au courant.


----------



## El_ChiCo (25 Mars 2005)

en fait, j'ai bien peur qu'il n'y ait pas moyen de commander les attributs dans les panneaux des preferences systeme... Dans la mesure ou quand tu ouvre le dictionnaire des preferences systeme, il n'y a pas de commandes autres que celle de base, je ne sais pas trop...

Maintenant, je ne suis pas un pro d'applescript non plus...
Peut etre aussi que automator, dans le prochain OS reglera le probleme


----------



## benzorg (25 Mars 2005)

merci El_ChiCo,

Je vais tester de mon côté...
Pour agir à l'intérieur des panneaux, je crois que je vais être obligé de passer par les Systems Events qui permettent (si j'ai bien saisi...) sur les composants à la manière d'une souris...
mais c'est vrai que ça va pas être simple, je pense également qu'automator devrait nous simplifier la tâche... vivement Tiger...

Je vous tiendrais au courant de mes avancées, mais je pense que ça va me prendre du temps..;

cordialement

benoit


----------



## benzorg (26 Mars 2005)

Bon voilà ou j'en suis :

je suis passer comme je le pensais par les "Systems Events" et ça donne ça :

activate application "System Preferences"
tell application "System Events"
	tell process "System Preferences"
		-- GUI Scripting statements:
		click button "Partage" of scroll area 1 of window "Préférences Système"
		select row 3 of table 1 of scroll area 1 of tab group 1 of window 1

		get value of row 3 of table 1 of scroll area 1 of tab group 1 of window 1
		if value is true then click button 1 of tab group 1 of window 1
	end tell
end tell


Alors il m'ouvre bien les Préférences systèmes, il va bien sur Partage et me séléctionne bien  mon Partage Web...

Le problème arrive avec ma condition "if", j'obtiens l'erreur suivante : 
Aucun résultat n?a été renvoyé à partir de certaines composantes de cette expression.

si quelqu'un pouvait m'expliquer l'utilisation de la condition if ou bien me donner une piste pour arriver à mes fins...

en fait ce que je veux obtenir c'est que le script vérifie si le partage Web personnel est activé, si oui, je veux qui le désactive...

Je vais y arriver, mais que c'est long et laborieux les débuts en Applescript...


au fait, j'ai trouvé un outil bien sympa pour trouver les noms des items des menus, UI Browser, il est en version d'essai 30 jour, mais est beaucoup plus pratique que UiElementInspector fournit par Apple (c'est d'ailleurs sur le site d'Apple que j'ai trouvé le lien, ils ne sont pas chien, c'est plutôt cool...) Par contre, je pense qu'avec automator Apple va nous fournir un outil encore plus puissant et encore plus facile d'utilisation...

Bon j'y retourne

cordialement

benoit


----------



## El_ChiCo (29 Mars 2005)

j'aurais bien cherché à t'aider, mais quand je copie-colle ton script, il plante avant de sélectionner la ligne de partage web...
Dans l'historique des événements, j'ai ça :

tell application "System Preferences"
	activate
end tell
tell application "System Events"
	click button "Partage" of scroll area 1 of window "Préférences Système" of process "System Preferences"
		"Erreur dans System Events : NSReceiverEvaluationScriptError: 4"


Si tu as déjà eu cette erreur, tu peux m'aider à la corriger, pour que je puisse continuer de chercher avec toi ?


----------



## benzorg (29 Mars 2005)

Salut El_ChiCo, 

je viens d'avoir la réponse à mon problème sur le forum de MacBidouille par guiguiguillaume.

Je recopie ici sa réponse : 



> Bon, j'ai travaillé à la question et j'ai pondu ça qui marche chez moi...
> 
> 
> ```
> ...



ça marche au poil, mais comme il le précise, le mieux serait de passer par un shell script.
et comme je cherche également à ajouter un port au réglage du firewall et que jusqu'a présent, je n'ai réussi qu'a ouvrir la fenêtre pour en créer un mais qu'il m'est impossible d'agir dessus (je n'obtient aucun UI Elements mê^me avec l'utilitaire UIBrowser) je crois  que le shell script va s'imposer de lui même...

moi qui avait opter pour l'Applescript pour une question de simplicité.

si certains d'entre vous on quelques tuyaux là dessus, je suis preneur 

cordialement

benoit


----------



## El_ChiCo (29 Mars 2005)

pour le script shell, je dois pouvoir t'aider, mais rappelle-moi juste précisément ce que tu souhaite faire...


----------



## benzorg (29 Mars 2005)

Salut El_ChiCo,

alors là, ce n'est pas de refus non plus 
car là, je patauge encore plus :-(

Alors voilà ce que je cherche à faire :

en fait deux chose :

la première (tu la connais déjà...) que j'ai éssayé de réaliser en Applescript et dont la réponse finale m'a été soufflé par guiguiguillaume sur le, Forum de macBidouille, Consiste à vérifier si le serveur Apache installé avec le système MacOSX est activé et le désactiver le cas échéant.

ce que j'avais traduit en Applescript par : vérifier l'état du partage web personnel dans les préférences système et si il est actvé, de le désactiver !

Après cela, ayant désactiver le partage web personnel, les ports 80 et 427 se retrouvent automatiquement fermé dans les réglages du Coupe-feu. 
etant donné que mon script doit s'inscrire dans un package qui installe le serveur web Apache2, je dois créer un nouvel item dans les régalages du Coupe-feu qui va me permettre d'ouvriri les ports 80 et 427 sans activer le partage web personnel (je ne peux faire fonctionner deux serveurs web simultanément sur mon système...)
je cherche donc via un shell script (car avec Applescript je reste bloqué au moment de remplir les champs de la fenêtre nouveau...) à ajouter un réglages personnel nommé Apache2 qui autoriserait les communications réseau sur les ports 80 et 427 et à l'activer.

Ce script est une condition sinéquanone au bon déroulement de la suite de mon Pack...

j'espère avoir été assez précis et pas trop répétitif. 

Si vous avez des pistes pour l'instant, j'en suis à peu près au  do shell script :-s

cordialement

benoit


----------



## El_ChiCo (30 Mars 2005)

ton package, c'est pour en faire quoi ? Tu comptes le distribuer ?

Sinon, ton serveur Apache2 tu l'installe comment ? a priori, il me semble qu'il devrait s'occuper d'ouvrir tout seul les ports dont il a besoin... S'il ne le fait pas tout seul et que tu le "force" avec un shell, j'ai un peu peur que tu ouvre des ports avec rien derrière... Mais je me trompe peut-être... Je manque un peu de connaissance, mais je veux bien aider à chercher...

En tout cas, je continuer a réfléchir...


Et sinon, il est sympa ton avatar


----------



## benzorg (30 Mars 2005)

je vais tou t'expliquer en détails comme ça tu saisira mieux les raisons qui me poussent à passer par un shell script....
ça risque d'être un peu long...

Je fais partie d'une équipe qui développe GuppY, un CMS en licence CeCILL.
Actuellement, je suis le seul menbre de l'équipe à travailler sous Mac, j'ai donc à ma charge (entre-autre...) l'aide des utilisateurs Mac, 
Pour faciliter la tâche des utilisateurs et leur permettre de tester GuppY en local sur leur machine, nous avons développer un petit Bundle windows : EasyGuppY, qui Installe un serveur web (WebWeaver), le langage PHP et GuppY. 
De mon côté, j'ai cherché un moyen simple et rapide de configurer un serveur web sous macOSX, ce qui au départ n'était pas compliqué puisqu'Apache est déjà embarqué sous OSX et qu'il suffit d'activer le Partage web personnel pour  que celui-ci soit actif. la ou c'est devenu un peu plus compliqué, c'est lorsque j'ai voulu trouver un moyen aussi simple pour configurer PHP sur ce serveur. et là les méthodes trouvées sur le net étaient un peu plus complexe. Pour moi, ce n'était pas un soucis, mais notre CMS est en grande partie utilisé par des utilisateurs n'ayant jamais poussé la porte de leur système, il me fallait donc trouver un moyen plus simple...
Et là, je suis tombé sur un tutoriel simple et efficace, qui faisait appel à deux packages d'installation distribué par ServerLogistics : CompleteApache2 et CompletePHP4.
En quelques clics, j'ai un server web Apache2 et le langage PHP4 de configurer et les seules manip à faire sontde copier le Preferences Panes d'Apache2 (fournit avec le Pack Apache2) dans le bon dossier pour qu'il apparaissent dans le panneau des Préférences Système,  de désactiver le serveur Web Apache installé d'origine avec OSX et d'activer les ports 80 et 427 si l'on a activer son firewall. Après avoir testé cette install chez moi, j'ai proposé un tutoriel sur notre site officiel reprenant ces quelques réglages, proposant les liens vers les deux packages et expliquant ou il fallait copier les fichiers dudit CMS GuppY.
Mais suite à quelques questions d'utilsateurs Mac, j'ai voulu améliorer la chose et leur proposer un outil identique à celui proposer pour la plateforme Windows.

J'ai donc décider de créer un packages regroupant la totalité de l'install. Pour l'instant, celui-ci lance le package d'install d'Apache2, un Applescript qui copie le fichier Préférences Panes dans le bon dossier, qui lance le package d'install de PHP4, un deuxième Applescript qui copie les fichiers de GuppY dans le htdocs du serveur Apache2, un troisième Applescript (via un shell script) qui applique les bons droits (chmods) sur certains fichiers de GuppY et qui avec un quatrième script lance la page d'accueil du site GuppY installé dans Safari. Il ne me reste plus qu'a règler le problème du partage web et des ports du firewall pour finaliser ce pack.
Je crois que je ne peux pas proposer plus simple et plus complet   

Après, il ne me restera plus qu'a fournir un script qui me désinstallera tout ça proprement en effaçant les fichiers installés... 

Le package sera distribué sous licence libre CecILL et reprendra les licencs Apache (pour Apache) et GNU (pour PHP) étant donné que je n'apporte aucune modification aux codes sources de base. c'est un peu un équivalent en plus simple et très ciblé d'un EasyPHP...

Voilà, tu sais tout   

Pour l'ouverture des ports, ce n'est sans risque, je reprend seulement les ports ouverts lorsque l'on active le partage web personnel mais justement sans l'activer .
La config du serveur Apache fournit par Apple n'est pas modifié d'un poil de cheveux...

Si tu peux m'aider sur ce dernier point, je t'en serais fort reconnaissant et la communauté Mac (pas très nombreuse) de Freeguppy également   

Sinon, pour mon avatar, c'est un truc tiré d'une ancienne Pub KanaBeach que j'ai légèrement retouché il y a de ça quelques années. moi aussi, j'aime bien 

Merci encore de te pencher sur mon problème

amicalement

benoit


----------



## El_ChiCo (30 Mars 2005)

alors ouvrir les ports, tu peux le faire comme ca en shell : (me semble-t-il)

```
$IPFW add 2080 allow log tcp from any to any 80 in
$IPFW add 2090 allow log tcp from any to any 427 in
```

te satisfais-ce ?


Et merci d'avoir pris le temps de tout expliquer depuis le début... Comme ca, on voit mieux ou on est et ou on va 

Tiens-moi au courant... quand tu aura essayé ca, si c'est pas bon, ou si ca ne suffit pas, je te chercherai autre-chose


----------



## benzorg (30 Mars 2005)

Merci 

je prends note, et je teste ça demain, mais il faut que je m'initie un peu aux shelle script, je débute encore plus qu'avec AppleScript et je ne voudrais pas faire de bourdes.
J'avais quelques connaissances en MS-DOS, mais j'ai pas l'impression quelles me seront très utiles...

si tu as des liens intérressants (et si possible en français..) qui explique la syntaxe  sur le terminal, je suis preneur, pour l'instant, j'ai trouvé quinze milles liens qui m'expliquent la commande man, mais pour la suite, plus rien...
Pour le reste, je te tiens au courant, 

benoit


----------



## El_ChiCo (30 Mars 2005)

ben déjà, t'aurais bien ca mais qui reste très large...


----------



## benzorg (31 Mars 2005)

ouais, déjà lu lorsque j'ai débuter pour mon script pour les chmods sur mes fichiers

il me faut un truc qui va un peu plus loin...


----------



## El_ChiCo (31 Mars 2005)

ouais, c'est bien ce que je pensais...


----------



## benzorg (31 Mars 2005)

Bonjour El_ChiCo,

J'ai voulu essayé avec tes deux lignes, mais là, je patauge grave, je suis au raz des paquerrettes...

En fait je ne sais pas comment prendre le problème.

Ou sont stockés les fichiers qui stockent les données concernant les préférences systèmes?
Doit-on appeler le fichier sur lequel on veut travailler.

J'ai l'impression que pour arriver à mes fins, il va falloir que je plonge au coeur du système et que ça va être long pour comprendre tout ça...

je ne trouve aucune doc qui m'éclaire sur l'utilisation réelle du terminal
on me donne des lignes de commandes, mais je ne comprends pas ce que je fais et ça c'est pas trop mon truc, j'aime bien saisir les sens de mes actions

si tu avais quelques trucs pour m'éclairer, ça serait le bienvenue

mais bon je n'abandonne pas...

Cordialement

benoit


----------



## benzorg (31 Mars 2005)

Re-bonjour,

bon après ce passage à vide, j'ai eu une idée, et j'ai rssorti un vieux AvosMac qui trainait dans mes étagères..; un hors séries sur l'UNIX de MacOSX..;
j'ai feuilletté quelques pages et je viens de reussir à comprendre un premier  truc...
la commande ps -aucx pour lister les process en cours, j'ai reussi à repérer mes preférences système et j'ai rentré la commande kill pour tuer le process...

bon d'accord ce n'est pas grand chose, mais ça m'a remonté le moral
le terminal n'est pas aussi obscur que je commençais à me l'imaginer...lollll

je suis toujours preneur pour quelques tutoriels et astuces pour m'y retrouver...

Cordialement

benoit


----------



## benzorg (31 Mars 2005)

J'avance pas vite...

Alors avant de programmer mon shell script depuis Applescript, j'essaye de voir avec le terminal sur quel fichier je dois intervenir.

je n'arrive pas à saisir comment agisse les deux lignes que tu me proposes :

```
$IPFW add 2080 allow log tcp from any to any 80 in
$IPFW add 2090 allow log tcp from any to any 427 in
```

Pour que je puisse agir avec la commande ipfw, je dois rentre sudo ipfw...
je ne saisi pas le sens du signe "$" avant le ipfw...
et le add 2080... à quoi correspond le nombre 2080 ???

est-il possible de lister les ports déjà ouverts ?
Et le protocol udp, faut'il l'autoriser lui aussi ???

et je n'ai pas encore essayé d'aborder la modification du partage web personnel avec le terminal...

je sens que ça va être long....

je suis donc preneur de toutes les aides qui pourraient me permettre de mieux saisir tout ça...

cordialement

benoit


----------



## El_ChiCo (1 Avril 2005)

tiens, je t'ai trouvé un truc qui peux t'intéresser... Bon, c'est en anglais malgré le fait que tu m'ai dit que tu n'aime pas trop, mais si t'as des problèmes pour comprendre, n'hésite pas a me demander.
c'est par ici

Je pense que cette page devrait déjà bien t'aider dans tes problèmes de firewall...

Et excuse moi d'avoir mis du temps à répondre, c'est parce que je suis malade et que je ne suis pas venu beaucoup ces derniers temps... Je me repose plus que je ne surf sur le web 
Si tu as un soucis ou une question, j'ai mis mon adresse mail sur le site, tu peux m'envoyer un mail, j'y répondrai plus rapidement.


----------



## benzorg (2 Avril 2005)

Merci 

je regarderais ça demain tranquilement à tête reposé...
L'anglais ne me dérange pas trop, c'est juste que je suis beaucoup plus long à déchiffrer les termes techniques dans la langue des beatles qu'en français (déjà qu'en français ça me prend du  temps ;-)... )
L'article à l'air en tout cas très complet...

En attendant de réaliser mon mes modifs via un shell script, je finalise mon Applescript, sur macbidouille, il m'ont dépanné sur la pop up du firewall...
dès que j'ai terminé, je vous le mettrais à dispo ici, si ça intérresse. il me reste encore un petit truc à règler mais j'approche du but 
mais étant donné que le GUI scripting n'est pas spécialement efficace sur diférentes versions de MacOSX, je n'abandonne pas l'idée de passer par le terminal au contaraire, mais ça m'a l'air un peu plus hard pour mes neurones, donc dans un premier temps, je vais sortir mon packages avec les scripts  GUI mais, j'espère bien le faire évoluer en même temps que mes progrès 

je vous tiens au courant et n'hésiterais pas à te mailer si j'ai besoin
merci  pour ta proposition 

cordialement

benoit


----------

