woodrunner a écrit:Bonjour ,
j'essaye depuis qques jours d'utiliser le pluging synology mais je il ne réagit pas
- y a-t'il d'autres réglage à faire ?
cordialement
ArmoiraglatZ a écrit: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 "https://".$ip.":5001" 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
woodrunner a écrit:Hello tout le monde
finalement tout rentre à nouveau dans l'ordre ;j'ai désinstaller l'ancienne api ,puis installer à nouveau ( avec login et mp pour le nouveau syno ) tout fonctionne !
merci encore à vous !
thrymartin a écrit:wol activé ?
Harzhal a écrit:thrymartin a écrit:wol activé ?
Réponse certes laconique mais diablement efficace
Merci à toi thrymartin car WOL était désactivé et une fois activé, ça fonctionne dans les deux sens
<?php
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
//***********************************************************************************************************************
$ip = getArg("IP", $mandatory = true);
$login = getArg("LOGIN", $mandatory = true);
$pass = getArg("PASS", $mandatory = true);
$https = getArg("HTTPS", $mandatory = true);
$url_dom = "";
$sid ="";
// Code erreur authentification
$tab_error_auth = array(100 => "Unknown error", 101 => "The account parameter is not specified", 102 => "API does not exist", 103 => "Method does not exist",
104 => "This API version is not supported", 105 => "Insufficient user privilege", 106 => "Connection time out", 107 => "Multiple login detected",
400 => "Invalid password", 401 => "Guest or disabled account", 402 => "Permission denied", 403 => "One time password not specified",
404 => "One time password authenticate failed");
if ($https == "1") {
$url_dom = "https://".$ip.":5001";
} else {
$url_dom = "http://".$ip.":5000";
}
// Autentification
$url_auth = $url_dom."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=".$login."&passwd=".$pass."&format=sid";
// Get sid token
$result_auth = httpQuery($url_auth, 'GET');
$return_auth = sdk_json_decode($result_auth);
$test_success = $return_auth['success'];
if($test_success != 1){
$xml .= "<STATUS>Authentication error ".$return_auth['error']['code']." ".$tab_error_auth[$return_auth['error']['code']];
$xml .= "</STATUS>";
//(passwords with special character not supported)
} else {
//authentication successful
$sid = $return_auth['data']['sid']; // Code de session
}
// Shutdown commande
$url_shutdown = $url_dom."/webapi/entry.cgi?api=SYNO.Core.System&force=false&local=true&method=shutdown&version=1&_sid=".$sid;
$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;
?>
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 15 invité(s)