Basic-Auth beim API

Hallo,

bin gerade drauf gekommen dass bei meinem IPS (4.2) das API ohne jegliche Authentisierung funktioniert. Ein Aufruf mit curl auf den Port 3777 funktioniert auch ohne User/Passwort.
Lt. Doku - oder wie ich das auch lese sollte das eigentlich nicht passieren:

Die JSON-RPC API wird über den Lizenz-Benutzernamen und das [Fernzugriff][1] Kennwort authentifiziert. Wenn kein Kennwort angegeben wird, so wird keinerlei Zugriff gewährt.

Ich habe allerdings ein Kennwort unter /root/.symcon vergeben …

Wo ist der Haken bzw. was mache ich falsch?

Danke,
Philipp

Das curl irgendwas macht, bedeutet ja nicht das IPS die Funktion auch ausführt.
Hast du das getestet und die Antwort ausgewertet?

Weil der Netzwerkzugriff muss ja immer funktionieren, wenn du die von dir zitierte Seite weiter liest steht da:

Ausschließlich die WFC_GetConfigurators Funktion wird ohne jegliche Authentifizierung zur Verfügung gestellt.

Michael

Zeig mal dein Skript/Befehl, wie du zugreifst.

paresy

Hallo,

das Skript ist relativ simple

<?
IPS_LogMessage("SMS","TEST:".$Soll);
?>

allerdings hab ich den „Fehler“ mittlerweile selbst gefunden - ohne User Credentials/Passwort funktioniert es nur vom selben System aus und nur dann, wenn man „localhost“ verwendet. - Bei Eingabe der IP oder dem Versuch von einem anderen System darauf zuzugreifen gibts dann die entsprechende Fehlermeldung:

curl -k -H "Content-Type: application/xml" -X POST --data "{\"jsonrpc\": \"2.0\", \"params\": [32048, {\"Titel\": \"bla\", \"Soll\": 10}], \"method\": \"IPS_RunScriptEx\", \"id\": \"0\"}" http://192.168.1.254:3777/api/
{"jsonrpc":"2.0","error":{"code":-32501,"message":"Invalid Username/Password for remote access!"},"id":"0"}


curl -k -H "Content-Type: application/xml" -X POST --data "{\"jsonrpc\": \"2.0\", \"params\": [32048, {\"Titel\": \"bla\", \"Soll\": 10}], \"method\": \"IPS_RunScriptEx\", \"id\": \"0\"}" http://localhost:3777/api/
{"jsonrpc":"2.0","id":"0","result":true}

und @Nall-chan - natürlich hab ich vorher auch gecheckt, ob das Skript auch was ausführt!

Danke,
Philipp

okay, blöde Frage hinten nach:
Gibt es eine „einfachere“ Möglichkeit am selben System (wo symcon drauf läuft), die Skripte von der Command-Line aufzurufen?
Also was will ich eigentlich machen:
hab ein Linux mit Symcon und einem Daten-Stick per USB drauf hängen, mit dem ich SMS empfangen will (und natürlich auch senden) - leider geht ja SMSWitch auf 4.x nicht mehr und somit wollte ich von einem sms daemon ein skript triggern, welches die SMS an IPS schickt.

THX,
Philipp

Nein. Die curl Lösung ist schon die einfachste :slight_smile:

paresy

Das sollte doch eigentlich mit
IPS_Execute — IP-Symcon :: Automatisierungssoftware
oder
IPS_ExecuteEx — IP-Symcon :: Automatisierungssoftware
funktionieren.

von IPS „raus“ an die CLI mit IPS-Execute ja, aber von der Shell -> IPS ist offensichtlich die API das einfachste, was ich grundsätzlich auch gut so finde (wollte mit meiner Frage nur sicher gehen)

Danke,
Philipp