Synology calendar api

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Ghost108

Benutzer
Registriert
27. Juni 2015
Beiträge
1.278
Reaktionspunkte
76
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 !!
 
Hallo Ghost108,
bin genau da angekommen und weiß jetzt auch nicht weiter. Hast du dies gelöst? Wenn ja, wie?
Besten Dank!!
 
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;

}
 
Super! Bitte noch die Parameter beschreiben, oder den Aufruf schicken.
Danke, danke!!!
 
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'
);
 
Status
Für weitere Antworten geschlossen.
 

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