C'est peut etre un peu reinventer la roue (surtout qu'il y a des modules httprpc dans rtorrent mais j'ai aucune idée de comment on les utilise), c'est pas très clean car les appels sont fait en externe et enfin je doute de la performance, mais je met ca a titre informatif :
<?
$host = "mondomain.com";
$login = "monuser";
$password = "monpass";
$scgi = "/MONUSER";
$url = "https://".$login."@".$host.$scgi;
$request_xml = file_get_contents("php://input");
if (strpos($request_xml,'execute') !== false) {
exit;
}
$response = do_call($request_xml,$login,$password,$url);
header('Content-Type: text/xml');
echo $response;
function do_call($request,$login,$password,$url) {
$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($request);
$header[] = 'Authorization: Basic '. base64_encode($login.":".$password);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$data = curl_exec($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
return $data;
}
}
?>