Bonjour,
Je suis en train de développer un proxy en PHP, qui permet actuellement, de chainer avec un 2nd proxy, ou que mon script fait proxy de lui même.
Après plusieurs tests, celui-ci commence à être stable, methode GET et POST fonctionnent bien, les cookies son géré.
Après un autre test, je me suis rendu compte, que la methode CONNECT ayant un comportement bien different plante le script.
J'essaye donc de coder cette method, mais j'ai un soucis majeur : Lire l'entrée du client.
Par exemple (les noms sont réel) :
En clair, en ce moment j'essaye de faire un "echo" en PHP : J'ecrit un truc, il me reecris la même chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Debian:~# telnet proxy.galoula.com 80 Trying 87.106.108.42... Connected to windaube.galoula.com. Escape character is '^]'. CONNECT www.galoula.net:80 HTTP/1.0 User-Agent: MSMSGS Host: www.galoula.net:80 Content-Length: 0 Proxy-Connection: Keep-Alive Pragma: no-cache HTTP/1.1 200 Connection established Date: Thu, 18 Feb 2010 09:58:16 GMT Server: Apache Proxy-Agent: Privoxy/3.0.15 Connection: close Content-Type: text/html (ici la connection essaye de lire ce que j'ecris, mais je ne trouve pas la soulution) <br /> <b>Fatal error</b>: Maximum execution time of 10 seconds exceeded in <b>C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Default\index.php</b> on line <b>294</b><br /> Connection closed by foreign host.
J'ai essayer plusieurs methodes :
Je sais que le whie(1) est reelement po beau, mais, c'est juste le temps de trouver comment faire un "echo".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 if ($statusCode == "200" && $method == "CONNECT") { if ($debug) echo "readCONNECT\n"; echo "\n"; ob_end_flush(); flush(); ob_start(); $i = 0; echo $i; //$handle = fsockopen($_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], $errno, $errstr, 30); while (1) { //$handle = fopen("php://input", "rb"); $handle = fopen("php://stdin","r"); //$tmpa = file_get_contents("php://input"); $tmpa = fread($handle, 1); echo $tmpa; ob_end_flush(); flush(); ob_start(); } //exit; }
Merci d'avance.
Partager