Synology calendar api

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.268
Punkte für Reaktionen
74
Punkte
68
Hallo :)

ich bin eben auf die Synology calendar api gestoßen, welche mir bislang unbekannt war:
https://global.download.synology.co...r/2.4/enu/Synology_Calendar_API_Guide_enu.pdf

Bin mittlerweile bei Schritt 3 angekommen, welcher von mir einen HTTP POST nach folgendem Schema erwartet:

Code:
HTTP Method: POST
Path: /webapi/entry.cgi
Request Header:
  Host: 192.168.1.33:5000
  X-SYNO-TOKEN: iUahVw8TG.Uhc
Cookies:
  Id: ZU6dNe8YMIPVo15A0NJN507300
Params :
  is_todo    false
  is_evt    true
  api    SYNO.Cal.Cal
  method    list
  version    2

Daraufhin habe ich einen php code "gebastelt":

PHP:
$curl = curl_init('http://SNYOLOGY_IP:PORT/webapi/entry.cgi');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Host: SYNOLOGY_IP:PORT',
    'X-SYNO-TOKEN: '.$synotoken
));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
    'api' => 'SYNO.Cal.Cal',
    'method' => 'list',
    'is_todo' => false,
    'is_evt' => true,
    'version' => 2
)));
$content  = curl_exec($curl);

echo '<pre>';
print_r(json_decode($content));
echo '</pre>';

Ergebnis:

Code:
stdClass Object
(
    [error] => stdClass Object
        (
            [code] => 119
        )

    [success] =>
)


Das sieht noch nicht gut aus, vermutlich weil ich einen Cookie Parameter übergeben muss:

Cookies:
Id: ZU6dNe8YMIPVo15A0NJN507300

die Id liegt mir auch vor in der variable $sid.
Allerdings weiß ich nicht, wie ich diese Wert mit dem HTTP Post übergeben kann.

Kann hier jemand aushelfen?
Danke !!
 

Mike1429

Benutzer
Mitglied seit
25. Jan 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo Ghost108,
bin genau da angekommen und weiß jetzt auch nicht weiter. Hast du dies gelöst? Wenn ja, wie?
Besten Dank!!
 

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.268
Punkte für Reaktionen
74
Punkte
68
PHP:
function startCurl($apiUrl, $synotoken, $parameter) {
    
    global $webapi;
    
    $ch = curl_init($webapi . $apiUrl);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameter));
    curl_setopt($ch, CURLOPT_HTTPHEADER,
        array (
            'Content-Type: application/x-www-form-urlencoded',
            'X-SYNO-TOKEN: '.$synotoken
        ),
    );
    
    $response = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $response;

}
 

Mike1429

Benutzer
Mitglied seit
25. Jan 2023
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Super! Bitte noch die Parameter beschreiben, oder den Aufruf schicken.
Danke, danke!!!
 

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.268
Punkte für Reaktionen
74
Punkte
68
die Parameter sind die POST Parameter, die du überbegeb möchtest.
z.B.:

PHP:
array(
    'api'                    =>    'SYNO.API.Auth',
    'method'                =>    'login',
    'account'                =>    $account,
    'passwd'                =>    $password,
    'format'                =>    'sid',
    'enable_syno_token'     =>    'yes'
);
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat