• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Externer Aufruf eines AppleScripts

celtic

Gast
Hallo zusammen.
Ich bin noch ziemlich neu in der Applewelt und vor allem bei AppleScript. Ich habe derzeit folgendes Script (sms):
Code:
set theRecipient to "555123456789"
set theSMSText to "Testnachricht"

tell application "BluePhoneElite 2"
    send message theSMSText to theRecipient using the first device whose available is true
end tell

Dieses soll eben mit Hilfe von BluePhoneElite 2 SMS verschicken. Wenn ich dieses Script mit osascript sms aufrufe wird auch brav eine Nachricht verschickt. So wie gewünscht.

Ich möchte jetzt aber mithilfe eines Webinterfaces Nachrichten verschicken. Dazu erzeugt ein PHP-Script eine Datei wie oben, wo nur Empfänger und Nachrichtentext ausgetauscht wird. Danach ruf ich in diesem Script die Funktion exec("osascript sms") auf um das AppleScript auszuführen.
Das funktioniert aber leider nicht und das äußert sich an zweierlei Dingen:
1. Der Browser lädt nach dem Abschicken des Formulares (mit Empfänger und Nachricht) das PHP-Skript nicht fertig.
2. Im error_log von Apache gibt's folgenden Fehler:
Code:
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
messages/sms:103:193: execution error: BluePhoneElite 2 got an error: AppleEvent timed out. (-1712)

Ich hab zwar ein wenig recherchiert, aber leider keine brauchbare Aushilfe gefunden, da die meisten Ergebnisse weder Deutsch noch Englisch waren.

Danke schonmal für eure Hilfe.
 

ins0m

Gloster
Registriert
05.10.07
Beiträge
61
1. Ich wäre sehr vorsichtig mit dem Versuch eine Eingabe von einem Webservice
a) in eine freiliegende Datei zu schreiben und
b) auchnoch als executable liegen zu lassen und
c) es auchnoch aufzurufen

2. Ich weiß es nicht genau, aber ich nehme an applescript braucht einen entsprechenden Windowserver des users mit dem es interagieren kann (der webserver hat diesen server natürlich nicht). "_CGSDefaultConnection() is NULL" hört sich an als habe der entsprechende user (www) keinen windowserver (was auch nicht verwunderlich ist), also auch keine möglichkeit eine Event aufzurufen.

Das ist zumindest das was ich mir aus dieser nachricht zusammenreimen kann.
 

schnydi

James Grieve
Registriert
08.01.06
Beiträge
137
Das tönt ja haarsträubend, was du da machen willst! Das System wird niemals zulassen, dass der "www" User ein exec starten kann. (Genausogut könnte ja ein Trojaner starten.)
Es ist schon erstaunlich, das osascript per Web funktioniert. Das wusste ich nicht, aber interessant!
 

ins0m

Gloster
Registriert
05.10.07
Beiträge
61
Naja, der www User darf durchaus ein Executable ausführen , das verhindert das System sicher nicht, auch auf einem mac (und es wäre auch schlimm wenn er das tuen würde). Es ist wohl vielmehr das Problem dass da schlicht kein Window-Server ist mit der der Prozess reden kann.

Und wie gesagt : Daten von einer WebApp in ein File schreiben (DBs seien da mal ausgenommen) : Mit das gefährlichste was man tun kann. Nur ein Banner "deface me" kann das toppen.