[dss-developer] ds3

Dieter Stokar dieter.stokar at usility.ch
Sat Apr 16 17:23:10 CEST 2011


Hallo Christoph

Danke für deine Antwort.

Am 15.04.2011 um 09:20 schrieb Hofmann, Christoph:

> Hallo Dieter,
> 
> curl gibt es eigentlich für alle Betriebssysteme:
> http://curl.haxx.se/download.html

Ok.
Dann würde nur noch das entsprechende Script für Windows fehlen. Hat das schon jemand (um-)geschrieben?
(wie erwähnt, kenne ich mich mit Windows schon lange nicht mehr richtig aus - erst recht nicht mit der neuen Shell von Win7)

> 
> Von PHP aus kann man die dSS API benutzen wie jede andere API auch. Unter PHP hilft z.B. die Funktion "file" weiter:
> http://php.net/manual/de/function.file.php

Da komme ich nicht sehr weit, nämlich bis zur Fehlermeldung "HTTP request failed! HTTP/1.0 401 Unauthorized".

Ich bräuchte ein Beispiel, um auf diesem Weg weiter zu kommen.

> 
> Alternativ (und auch unter besserer Kontrolle) kann man die Socketverbindung selber implementieren. Um die API verwenden zu können, musst Du Dir zunächst das Token holen. Das Token kannst Du dann bei den späteren API Aufrufen entweder als GET Parameter übergeben, oder Du sendest es als Cookie mit.
> Nachfolgend eine PHP-Funktion um ein Cookie auszulesen. Die Funktion habe ich mal für ein völlig anderes Projekt implementiert für HTTP Verbindungen auf Port 80. Ich denke aber, es sollte ohne viel Aufwand möglich sein, die Funktion an den dSS anzupassen. Das Beispiel zeigt Dir auch, wie man eine Socketverbindung selber aufbaut. Ich hoffe, Du hast etwas Erfahrung mit PHP und der Verwendung von Web-APIs. Es wäre schön, wenn Du aus dem Beispiel eine dSS-API für PHP implementieren und der Community zur Verfügung stellen könntest.

Mit PHP kenne ich mich schon einigermassen aus. Aber wie mir scheint, fehlt mir da eine Stange Knowhow in Sachen SSL/HTTPS.

Im Browser kann ich z.B. die URL 

	https://192.168.111.59/json/system/login?user=dssadmin&password=dssadmin

abschicken und bekomme den gewünschte Token. Allerdings erst nachdem ich die Credentials nochmals im Popup Fenster eingegeben habe.
Ich denke, das ist die Hürde, die ich mit file() nicht überwinden kann.

Vielleicht schaue ich ja einfach nur in die falsche Richtung, aber ich seh's wirklich nicht...

Gruss,
Dieter


> 
> function getCookie($url)
> {
>   global $cookienumber;
>   global $COOKIE;
> 
>   $urlfrag = parse_url($url);
> 
>   $fp = fsockopen($urlfrag['host'], 80, $errno, $errstr, 5);
>   fputs($fp, "GET ".$urlfrag['path']."?".$urlfrag['query']." HTTP/1.1\r\n");
>   fputs($fp, "Host: ".$urlfrag['host']."\r\n");
>   fputs($fp, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4\r\n");
>   fputs($fp, "Connection: close\r\n\r\n");
>   $j = 0;
>   while (!feof($fp) && ($j<50)) {
>       $j++;
>       $zeile=fgets($fp);
> //       echo $j." ".$zeile."<br>";
> 
>       if (substr($zeile,0,12)=="Set-Cookie: ")
>       {
>          $receivedCookie=trim(substr($zeile,12));
>          $COOKIE[$cookienumber] = substr($receivedCookie,0,strpos($receivedCookie,";"));
>          $cookienumber++;
>       }
>   }
> 
>   fclose($fp);
> }
> 
> Hier noch ein bisschen Material zum Lesen:
> http://de.wikipedia.org/wiki/Http
> http://de.wikipedia.org/wiki/HTTP-Cookie
> 
> Grüße
> Christoph
> 
> --
> Christoph Hofmann
> aizo ag, Deutschland - http://www.aizo.ag
> 
> 
> 
>> -----Ursprüngliche Nachricht-----
>> Von: dss-developer-bounces at forum.digitalstrom.org [mailto:dss-
>> developer-bounces at forum.digitalstrom.org] Im Auftrag von Dieter Stokar
>> Gesendet: Donnerstag, 14. April 2011 18:29
>> An: dSS development list
>> Betreff: Re: [dss-developer] ds3
>> 
>> Bestens, jetzt hats geklappt!
>> 
>> 
>> Bleibt die Frage, wie man von einem Windows-PC aus solche Aufrufe
>> ausführen könnte.
>> 
>> Da curl anscheinend im HTTPS-Modus arbeitet, vermute ich, dass sich
>> unter Windows auch wget verwenden liesse.
>> Hat schon jemand so ein Script geschrieben?
>> 
>> Oder gäbe es gar eine Möglichkeit, direkt aus PHP heraus solche
>> Requests abzusetzen?
>> (Letztlich ist es das, was ich in meinem Fall benötige)
>> 
>> Gruss,
>> Dieter
>> 
>> 
>> 
>> Am 14.04.2011 um 18:09 schrieb Johannes Winkelmann:
>> 
>>> On 04/14/2011 05:48 PM, Dieter Stokar wrote:
>>>> Hallo Johannes
>>>> 
>>>> Am 14.04.2011 um 17:13 schrieb Johannes Winkelmann:
>>> [...]
>>>>> Temporär:
>>>>> $ DSS_HOST=192.168.2.72 ./ds3 apartment getName
>>>> 
>>>> Da erhalte ich auf dem Mac:
>>>> 
>>>>   sto:~/bin$ DSS_HOST=192.168.111.59 ./ds3 apartment getName
>>>>   usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
>>>>   mktemp [-d] [-q] [-u] -t prefix
>>> 
>>> okay, mktemp(1) benötigt unter OS X einen Prefix oder ein Template.
>> Diese Version sollte dies fixen:
>>> http://gitorious.digitalstrom.org/~winkj/dss/winkjs-
>> dss/blobs/raw/3e7a1d17c0d32524428e4da1f3bec6ed4e2938e9/tools/ds3
>>> 
>>> Gruss, Johannes
>>> --
>>> Johannes Winkelmann
>>> aizo ag, Switzerland - http://www.aizo.com
>>> 
>>> _______________________________________________
>>> dss-developer mailing list
>>> dss-developer at forum.digitalstrom.org
>>> http://forum.digitalstrom.org/cgi-bin/mailman/listinfo/dss-developer
>> 
>> _______________________________________________
>> dss-developer mailing list
>> dss-developer at forum.digitalstrom.org
>> http://forum.digitalstrom.org/cgi-bin/mailman/listinfo/dss-developer
> _______________________________________________
> dss-developer mailing list
> dss-developer at forum.digitalstrom.org
> http://forum.digitalstrom.org/cgi-bin/mailman/listinfo/dss-developer



More information about the dss-developer mailing list