Hello,
Etant dans le même cas que vous, j'ai regardé et j'ai trouvé une solution de contournement.
Par contre, je vous préviens tout de suite, le script d'origine communique en https, la on passe en http.
D'après ce que j'ai pu voir, c'est un problème de certificats qui n'est pas bien géré dans le scripts du plugin.
Pour contourner le pb, allez sur la page
http://ip-eedomus/script et editer le fichier "ds.php".
Normalement le fichier ressemble à ca :
- Code : Tout sélectionner
<?php
$ip = getArg("IP", $mandatory = true);
$login = getArg("LOGIN", $mandatory = true);
$pass = getArg("PASS", $mandatory = true);
$url_auth = "https://".$ip.":5001/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&session=shutdown&account=".$login."&passwd=".$pass;
$url_shutdown = "https://".$ip.":5001/webapi/entry.cgi?api=SYNO.Core.System&force=false&local=true&method=shutdown&version=1";
$ret_aut = httpQuery($url_auth, 'GET', $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = true, $ignore_errors = false);
$ret_shutdown = httpQuery($url_shutdown, 'GET', $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = true, $ignore_errors = false);
sdk_header('text/xml');
echo $ret_aut.$ret_shutdown;
Il faut remplacer les 2 blocs "http
s://".$ip.":500
1" par "http://".$ip.":5000". Voici mon script :
- Code : Tout sélectionner
<?php
$ip = getArg("IP", $mandatory = true);
$login = getArg("LOGIN", $mandatory = true);
$pass = getArg("PASS", $mandatory = true);
$url_auth = "http://".$ip.":5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&session=shutdown&account=".$login."&passwd=".$pass;
$url_shutdown = "http://".$ip.":5000/webapi/entry.cgi?api=SYNO.Core.System&force=false&local=true&method=shutdown&version=1";
#Echo pour controller que la requete est correcte.
echo $url_auth;
$ret_aut = httpQuery($url_auth, 'GET', $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = true, $ignore_errors = false);
$ret_shutdown = httpQuery($url_shutdown, 'GET', $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = true, $ignore_errors = false);
sdk_header('text/xml');
echo $ret_aut;
echo $ret_shutdown;
?>

On utilise donc du HTTP et plus du HTTPS, ce qui implique que les mots de passe sont envoyés en clair sur le réseau, et sont donc "interceptables" par un méchant

Le mieux serait de pouvoir ignorer le certificat invalide avec la fonction "httpQuery" mais je n'ai pas trouvé l'option.
Dernière mise en garde, sur mon synology (DS918+) j'ai 1 machine virtuelle qui fonctionne. Pour pouvoir éteindre le NAS avec ce plugin je dois d'abord éteindre la machine virtuelle. Donc si c'est pareil pour vous, essayez d'éteindre votre machine virtuelle via un script lancé depuis l'eedomus, puis procéder à l'extinction du NAS.
Pour éteindre ma VM, j'utilise son serveur Web ou j'ai placé un script php qui lance la commande shutdown. Comme ça, j'ai une juste une requête http a lancer depuis l'eedomus pour éteindre la VM, ensuite j'attend 2 min, et je lance l'extinction du NAS.
En espérant que ça vous dépanne,
A plus
