Coder un proxy applicatif

, par  Olivier Duquesne aka DaffyDuke , popularité : 1%

Nos gentils clients sont forcés de passer à travers des proxy pour éviter que nos firewalls ne deviennent de vraies passoires, voici quelques méthodes :

 en shell (nécessite Perl)

 /opt/local/outils/etc/GET -p PROXY:PORT URL

 en shell (la vraie vie)

 unset http_proxy
 http_proxy=PROXY:PORT ; export http_proxy
 lynx -dump URL

 en shell (nagios client)

 $NAGIOS/libexec/check_http -H HOST -p port -u URI -y PROXY:PORT

 en php

 <?
 myfiles = "URL";
    
   $mysock = fsockopen("PROXY", PORT, &$errno, &$errstr);
   if( !$mysock )
   {
   echo "proxy not available !";
   fclose($resultfile);
   exit();
   } else {
   fputs($mysock,"GET $myfiles/ HTTP/1.0\n\n");
   while (!feof($mysock))
   {
   $zeile = fgets($mysock,1000);
   }
   }
 ?>

 php+xml (là je suis pas sûr de mon coup, faudrait tester que Sablotron sait effectivement utiliser fputs() au lieu de fopen()

 <?
 
 [legrosbloccidessus]
 
   $fxml =
 "http://xml.fr.overture.com/d/search/p/lequipe/xml/fr/?Partner=lequipe_xml_fr_search_test&Keywords=dvd"; $fxsl = "URI.xsl"; 
 
   $id_xml = fopen($fxml, "r");
   $id_xsl = fputs($mysock,"GET $fxsl/ HTTP/1.0\n\n");
 
   $xml = fread($id_xml, 50000);
   $xsl = fread($id_xsl, filesize ($fxsl));
 
   $param = array("valeur"=>"XML");
   $arg = array('/_xml' => $xml, '/_xsl' => $xsl);
 
   $analyseur_xslt = xslt_create();
   $resultat = xslt_process($analyseur_xslt, 
   'arg:/_xml', 'arg:/_xsl', 
   NULL, $arg, $param);
   if ($resultat != false)
   {
   print($resultat);
    
   }
   else
   {
   echo "<u>Une erreur est suvenue :</u>"
   . "Code : " . xslt_errno($analyseur_xslt)
   . "Message : " . xslt_error($analyseur_xslt);
   }
   xslt_free($analyseur_xslt);
 ?>

 en jsp

* specifie dans la jvm directement

   prop.put("proxySet","true");
   prop.put("http.proxyHost","PROXY");
   prop.put("http.proxyPort","PORT");

* directement dans les pages, exemple de code

 <java type=import>
 java.net.*
 java.io.*
 java.util.*
 </java>
 <java>
 // overture xml
 Properties prop = System.getProperties();
 //prop.put("proxySet","true");
 //prop.put("http.proxyHost","PROXY");
 //prop.put("http.proxyPort","PORT");
 
 out.println(prop.getProperty("proxySet"));
    
 URL overturexml = new URL("http://URL/");
 HttpURLConnection oxmlc = 
 (HttpURLConnection)overturexml.openConnection();
 out.println(oxmlc.getRequestMethod());
 //oxmlc.getContent();
 out.println(oxmlc.getResponseCode());
 out.println(oxmlc.usingProxy());
 
 StringBuffer buffer;
 buffer = new StringBuffer();
 InputStream input = oxmlc.getInputStream();
 String line;
 BufferedReader dataInput = new BufferedReader(new 
 InputStreamReader(input));
   while ((line = dataInput.readLine()) != null) {
   buffer.append(line);
   buffer.append('\n');
   } 
   out.println(buffer);