ovh/php-ovh

400 Bad Request - INVALID_SIGNATURE

FloriaanLry opened this issue · 4 comments

Bonjour,
J'utilise depuis longtemps l'API afin de faire différentes tâches, et mes tâches échouent depuis quelques jours. J'ai essayé de mettre à jour l'API, toujours la même erreur.

Que voici :
Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: POST https://eu.api.soyoustart.com/1.0/ip/127.0.0.1%2F29/reverse resulted in a 400 Bad Request response: {"errorCode":"INVALID_SIGNATURE","message":"Invalid signature","httpCode":"400 Bad Request"} ' in /var/www/vhosts/azertyuiop.fr/httpdocs/.composer/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /var/www/vhosts/azertyuiop.fr/httpdocs/.composer/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /var/www/vhosts/azertyuiop.fr/httpdocs/.composer/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /var/www/vhosts/azertyuiop.fr/httpdocs/.composer/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 /var/www/vhosts/azertyuiop.fr/httpdocs in /var/www/vhosts/azertyuiop.fr/httpdocs/.composer/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113

En attente d'une correction,
Rapide, je l'espère...
Merci à vous.

@FloriaanLry, sorry. I cannot understand France....Could you write the problem with English?

Thanks.

Bonjour @FloriaanLry,
Merci pour la remontée d'erreur. Visiblement l'erreur remontée provient directement du moteur d'API, et non pas du wrapper php-ovh. Il se peut qu'un code source invalide puisse provoquer ce problème.

Possible de nous partager les lignes du scripts qui sont en erreurs (sans indiquer les applicationSecret et consumerKey), afin qu'on puisse aider au mieux.
Si il est possible de nous communiquer un nichandle ou bien une applicationKey rattaché à votre compte, ainsi qu'un timestamp du moment où s'est produit l'erreur afin qu'on puisse vérifier avec nos logs côté API. Il est possible de me communiquer le nichandle et l'applicationKey en repostant votre message sur la mailing-list publique de l'API OVH, et je vous recontacterais en direct. api-subscribe@ml.ovh.net

--
Hey,
Thanks for the bug report. Errors seems to come from the API engine, and not from the php-ovh wrapper itself. Probable cause is a problem inside the source code calling the API. To troubleshoot this issue, we will requires to see the source code of the script (without AS & CK).
If you can also provide applicationKey or nichandle so we can have a look to servier logs. You can forward this message to the API mailing-list so I can recontact you directly to avoid sending the nichandle publicly here.

@peter279k: Issue was: I'm using the API to automatise some tasks for a long time, and my tasks are failing for a few days. I tried to update the API, but still running the same error.
Then the stacktrace.

Bonjour @rbeuque74, merci pour votre retour !
Thanks also to @peter279k, however, terms being technical, I prefer to speak in French, just to be understandable.

Voici une partie de mon code :

require DIR . '/autoload.php';
use \Ovh\Api;
$ovh = new Api( $applicationKey, $applicationSecret, $endpoint, $consumer_key);

$query1 = mysql_query("SELECT *  FROM taches_reversedns WHERE etat = '0' LIMIT 1");
while($tache = mysql_fetch_array($query1)) {
	echo " ".$tache['ip']." <br />";
	
	$query2 = mysql_query("SELECT * FROM ip WHERE IPv4 = '".$tache['ip']."'");
	$ip = mysql_fetch_array($query2);
		$blockIP = urlencode($ip['blocip']);
		$ipReverse = $tache['ip'];
		$reverse = $tache['reverse'];
		
		$result = $ovh->post('/ip/'.$blockIP.'/reverse', array(
			'ipReverse' => $ipReverse, // Required:  (type: ip)
			'reverse' => $reverse, // Required:  (type: text)
		));
		print_r( $result );
}

Erreur :

Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: POST https://eu.api.soyoustart.com/1.0/ip/127.0.0.1%2F30/reverse resulted in a 400 Bad Request response: {"httpCode":"400 Bad Request","errorCode":"INVALID_SIGNATURE","message":"Invalid signature"} ' in /var/www/vhosts/mywebsite.com/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /var/www/vhosts/mywebsite.com/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /var/www/vhosts/mywebsite.com/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /var/www/vhosts/mywebsite.com/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 /var/www/vhosts/mywebsite. in /var/www/vhosts/mywebsite.com/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113

PS: oui, mon code est vraiment vieux et il est moche. Je l'utilise depuis longtemps. C'est pour cela que c'est encore sous mysql_query... Je comptais le mettre à jour, mais j'aime vérifier que ça soit fonctionnel... On est pas là pour juger ça... lol.

Timestamp : 1580604556 (bien sûr, j'ai modifié le domaine, et l'IPv4 sur le retour d'erreur)

Merci à vous, promis je répondrais plus vite la prochaine fois !

D'après mes souvenirs 'GuzzleHttp\Exception\ClientException' bug avec les %20 etc. et il faut aller trouver la ligne de code à modifier.