protected function execute(InputInterface $input, OutputInterface $output) { $parameters = json_decode(file_get_contents('parameters.json')); $url = $parameters->url; $HostID = $parameters->host; // Template pour requête HEV $xsl = new DOMDocument(); $xsl->load('xslt/hev.xsl'); // Configuration du moteur de template $proc = new XSLTProcessor(); $proc->setParameter('', 'HostID', $HostID); $proc->importStylesheet($xsl); // Récupération du résultat $doc = $proc->transformToDoc(new DOMDocument()); $request = new Request('POST', $url); $request->setBody($doc->saveXML()); $client = new Client(); $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false); $response = $client->send($request); $dom = new DOMDocument(); $dom->loadXML($response->getBodyAsString()); //echo "\nVoici la liste des versions compatibles avec ce serveur:\n\n"; $result = array(); foreach ($dom->getElementsByTagName('VersionNumber') as $version) { $result[] = array($version->getAttribute('ProtocolVersion'), "EBICS version {$version->nodeValue}"); } $table = new Table($output); $table->setHeaders(array('Protocole', 'Description'))->setRows($result); $table->render(); }
protected function execute(InputInterface $input, OutputInterface $output) { // Récupération des paramètres de connexion $parameters = json_decode(file_get_contents('parameters.json')); // Récupération du certificat X509 $cert = file_get_contents('test/fixtures/keys/A005/cert.pem'); $cert_details = openssl_x509_parse($cert); $params = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $cert)); $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($cert)); $params = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params); // Attention, la cohérence entre les différente valeurs n'est pas vérifiée dans // la phase d'initialisation. Seule la longueur des valeurs l'est // Création de la signature A005 $xsl = new DOMDocument(); $xsl->load('xslt/SignaturePubKeyOrderData.xsl'); $proc = new XSLTProcessor(); $proc->setParameter('', 'X509IssuerName', $params['X509IssuerName']); $proc->setParameter('', 'X509SerialNumber', $params['X509SerialNumber']); $proc->setParameter('', 'X509Certificate', $params['X509Certificate']); $proc->setParameter('', 'Modulus', $params['Modulus']); $proc->setParameter('', 'Exponent', $params['Exponent']); $proc->setParameter('', 'PartnerID', $parameters->partner); $proc->setParameter('', 'UserID', $parameters->user); $proc->setParameter('', 'TimeStamp', date('c')); $proc->importStylesheet($xsl); $A005 = $proc->transformToXML(new DOMDocument()); // On compresse et on encode en base64 $A005 = gzcompress($A005); $A005 = base64_encode($A005); $xsl = new DOMDocument(); $xsl->load('xslt/ebicsUnsecuredRequest.xsl'); $proc->importStylesheet($xsl); $proc->setParameter('', 'HostID', $parameters->host); $proc->setParameter('', 'OrderData', $A005); $xml = $proc->transformToXML(new DOMDocument()); $request = new Request('POST', $parameters->url); $request->setBody($xml); $client = new Client(); $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false); $response = $client->send($request); $dom = new DOMDocument(); $dom->formatOutput = true; $dom->loadXML($response->getBodyAsString()); echo $dom->saveXML(); }
protected function execute(InputInterface $input, OutputInterface $output) { $parameters = json_decode(file_get_contents('parameters.json')); $X002 = file_get_contents('test/fixtures/keys/X002/cert.pem'); $cert_details = openssl_x509_parse($X002); $params['X002'] = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $X002)); $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($X002)); $params['X002'] = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params['X002']); $E002 = file_get_contents('test/fixtures/keys/E002/cert.pem'); $cert_details = openssl_x509_parse($E002); $params['E002'] = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $E002)); $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($E002)); $params['E002'] = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params['E002']); // Attention, la cohérence entre les différente valeurs n'est pas vérifiée dans // la phase d'initialisation. Seule la longueur des valeurs l'est // Création de la signature A005 $data = '<?xml version="1.0" encoding="UTF-8"?> <HIARequestOrderData xmlns="http://www.ebics.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/H003 http://www.ebics.org/H003/ebics_orders.xsd"> <AuthenticationPubKeyInfo> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>' . $params['X002']['X509IssuerName'] . '</ds:X509IssuerName> <ds:X509SerialNumber>' . $params['X002']['X509SerialNumber'] . '</ds:X509SerialNumber> </ds:X509IssuerSerial> <ds:X509Certificate>' . $params['X002']['X509Certificate'] . '</ds:X509Certificate> </ds:X509Data> <PubKeyValue> <ds:RSAKeyValue> <ds:Modulus>' . $params['X002']['Modulus'] . '</ds:Modulus> <ds:Exponent>' . $params['X002']['Exponent'] . '</ds:Exponent> </ds:RSAKeyValue> </PubKeyValue> <AuthenticationVersion>X002</AuthenticationVersion> </AuthenticationPubKeyInfo> <EncryptionPubKeyInfo> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>' . $params['E002']['X509IssuerName'] . '</ds:X509IssuerName> <ds:X509SerialNumber>' . $params['E002']['X509SerialNumber'] . '</ds:X509SerialNumber> </ds:X509IssuerSerial> <ds:X509Certificate>' . $params['E002']['X509Certificate'] . '</ds:X509Certificate> </ds:X509Data> <PubKeyValue> <ds:RSAKeyValue> <ds:Modulus>' . $params['E002']['Modulus'] . '</ds:Modulus> <ds:Exponent>' . $params['E002']['Exponent'] . '</ds:Exponent> </ds:RSAKeyValue> </PubKeyValue> <EncryptionVersion>E002</EncryptionVersion> </EncryptionPubKeyInfo> <PartnerID>' . $parameters->partner . '</PartnerID> <UserID>' . $parameters->user . '</UserID> </HIARequestOrderData>'; $data = base64_encode(gzcompress($data)); $xml = '<?xml version="1.0"?> <ebicsUnsecuredRequest xmlns="http://www.ebics.org/H003" Revision="1" Version="H003"> <header authenticate="true"> <static> <HostID>' . $parameters->host . '</HostID> <PartnerID>' . $parameters->partner . '</PartnerID> <UserID>' . $parameters->user . '</UserID> <OrderDetails> <OrderType>HIA</OrderType> <OrderID>A102</OrderID> <OrderAttribute>DZNNN</OrderAttribute> </OrderDetails> <SecurityMedium>0000</SecurityMedium> </static> <mutable/> </header> <body> <DataTransfer> <OrderData>' . $data . '</OrderData> </DataTransfer> </body> </ebicsUnsecuredRequest>'; $request = new Request('POST', $parameters->url); $request->setBody($xml); $client = new Client(); $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false); $response = $client->send($request); $dom = new DOMDocument(); $dom->formatOutput = true; $dom->loadXML($response->getBodyAsString()); echo $dom->saveXML(); }
// The url we're proxying to. $remoteUrl = 'http://example.org/'; // The url we're proxying from. Please note that this must be a relative url, // and basically acts as the base url. // // If your $remoteUrl doesn't end with a slash, this one probably shouldn't // either. $myBaseUrl = '/reverseproxy.php'; // $myBaseUrl = '/~evert/sabre/http/examples/reverseproxy.php/'; use Sabre\HTTP\Sapi; use Sabre\HTTP\Client; // Find the autoloader $paths = [__DIR__ . '/../vendor/autoload.php', __DIR__ . '/../../../autoload.php', __DIR__ . '/vendor/autoload.php']; foreach ($paths as $path) { if (file_exists($path)) { include $path; break; } } $request = Sapi::getRequest(); $request->setBaseUrl($myBaseUrl); $subRequest = clone $request; // Removing the Host header. $subRequest->removeHeader('Host'); // Rewriting the url. $subRequest->setUrl($remoteUrl . $request->getPath()); $client = new Client(); // Sends the HTTP request to the server $response = $client->send($subRequest); // Sends the response back to the client that connected to the proxy. Sapi::sendResponse($response);
<?php /** * This example shows how to make a HTTP request with the Request and Response * objects. * * @copyright Copyright (C) 2009-2014 fruux GmbH. All rights reserved. * @author Evert Pot (http://evertpot.com/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ use Sabre\HTTP\Request, Sabre\HTTP\Client; // Find the autoloader $paths = [__DIR__ . '/../vendor/autoload.php', __DIR__ . '/../../../autoload.php', __DIR__ . '/vendor/autoload.php']; foreach ($paths as $path) { if (file_exists($path)) { include $path; break; } } // Constructing the request. $request = new Request('GET', 'http://localhost/'); $client = new Client(); //$client->addCurlSetting(CURLOPT_PROXY,'localhost:8888'); $response = $client->send($request); echo "Response:\n"; echo (string) $response;
/** * Sends a request to a HTTP server, and returns a response. * * Switches request URL for absolute URL * * @param RequestInterface $request * @return ResponseInterface */ public function send(HTTP\RequestInterface $request) { $url = $request->getUrl(); $absoluteUrl = $this->getAbsoluteUrl($url); $request->setUrl($absoluteUrl); return parent::send($request); }