Mercurial > hg > anonet-resdb
annotate doc/www.powerfulproxy.com/public_html/do_it.php @ 613:c2879679114d draft
PP (uncommented safe defaults and added useragent pass-through)
author | Nick <nick@somerandomnick.ano> |
---|---|
date | Sun, 18 Sep 2011 08:57:34 +0000 |
parents | 83bc7f6e03ae |
children | 2b68d711a063 |
rev | line source |
---|---|
453 | 1 <?php |
2 // Copyright Atiti, 2011 | |
3 // Version 0.1-2 | |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
4 // Heavily modified by Ivo <Ivo@UCIS.nl> |
453 | 5 |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
6 if (!isset($_SERVER['PATH_INFO'])) die('PATH_INFO is not set'); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
7 $pall = explode("/", $_SERVER['PATH_INFO']); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
8 if (count($pall) <= 1) die('Unexpected path format'); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
9 array_shift($pall); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
10 $proto = array_shift($pall); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
11 $host = array_shift($pall); |
502
60ece78f8b36
added host and IP verification to powerfulproxy
Nick <nick@somerandomnick.ano>
parents:
501
diff
changeset
|
12 $hostparts = explode('.', $host); |
504 | 13 if (long2ip(ip2long($host))===$host) { |
503 | 14 if ($hostparts[0]!='1') die('Bad IP'); |
15 } elseif (!preg_match("/ano|ntwrk$/",array_pop($hostparts))) die('Bad host'); | |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
16 $path = implode('/', $pall); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
17 array_pop($pall); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
18 $rp = implode('/', $pall); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
19 |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
20 /* CONFIGURATION */ |
453 | 21 $SERVICEURL = "http://powerfulproxy.com/do_it.php/"; |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
22 |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
23 $REWRITE_CONTENT_TYPES = array('text/html', 'text/xml', 'text/plain'); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
24 $REWRITE_PATTERNS = array( |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
25 /* Rewrite complete http/https URLs, enable one of the tree, and no more! */ |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
26 // '@(https?)://(([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@i' => $SERVICEURL.'$1/$2', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
27 // '@(src|href|action)\s*=\s*(\'|")(https?)://([^\'"]*)\2@i' => '$1=$2'.$SERVICEURL.'$3/$4$2', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
28 '@(<[^>]*)(src|href|action)\s*=\s*(\'|")(https?)://([^\'"]*)\3@i' => '$1$2=$3'.$SERVICEURL.'$4/$5$3', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
29 /* Rewrite URLs relative to site root, enable one of the tree, and no more! */ |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
30 // '@(src|href|action)\s*=\s*(\'|")/([^\'"]*)\2@i' => '$1=$2'.$SERVICEURL.$proto.'/'.$host.'/$3$2', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
31 '@(<[^>]*)(src|href|action)\s*=\s*(\'|")/([^\'"]*)\3@i' => '$1$2=$3'.$SERVICEURL.$proto.'/'.$host.'/$4$3', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
32 ); |
613
c2879679114d
PP (uncommented safe defaults and added useragent pass-through)
Nick <nick@somerandomnick.ano>
parents:
504
diff
changeset
|
33 if (file_exists("do_it.inc")) include "do_it.inc"; |
c2879679114d
PP (uncommented safe defaults and added useragent pass-through)
Nick <nick@somerandomnick.ano>
parents:
504
diff
changeset
|
34 if (!isset($CURL_OPTIONS)) $CURL_OPTIONS = array( |
c2879679114d
PP (uncommented safe defaults and added useragent pass-through)
Nick <nick@somerandomnick.ano>
parents:
504
diff
changeset
|
35 // CURLOPT_USERAGENT => "AnoNet proxy", |
c2879679114d
PP (uncommented safe defaults and added useragent pass-through)
Nick <nick@somerandomnick.ano>
parents:
504
diff
changeset
|
36 CURLOPT_USERAGENT => $_SERVER["HTTP_USER_AGENT"]." AnoNetProxy", |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
37 CURLOPT_AUTOREFERER => TRUE, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
38 CURLOPT_CONNECTTIMEOUT => 15, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
39 CURLOPT_TIMEOUT => 28, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
40 CURLOPT_MAXREDIRS => 10, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
41 CURLOPT_FAILONERROR => FALSE, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
42 CURLOPT_HEADER => 1, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
43 CURLOPT_FOLLOWLOCATION => FALSE, |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
44 // CURLOPT_INTERFACE => '0.0.0.0', |
613
c2879679114d
PP (uncommented safe defaults and added useragent pass-through)
Nick <nick@somerandomnick.ano>
parents:
504
diff
changeset
|
45 CURLOPT_PROXY => "http://b.polipo.srn.ano:8000/", |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
46 // CURLOPT_PROXYUSERPWD => 'username:password', |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
47 ); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
48 /* END OF CONFIGURATION */ |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
49 |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
50 $url = $proto."://".$host."/".$path; |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
51 if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING'])) $url .= "?".$_SERVER['QUERY_STRING']; |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
52 $ch = curl_init($url); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
53 curl_setopt_array($ch, $CURL_OPTIONS); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
54 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
55 //curl_setopt($ch, CURLOPT_HEADER, FALSE); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
56 if (count($_POST)) { |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
57 curl_setopt($ch, CURLOPT_POST, TRUE); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
58 curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); |
453 | 59 } |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
60 $response = curl_exec($ch); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
61 list($header, $data) = explode("\r\n\r\n", $response, 2); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
62 if ($error = curl_error($ch)) die('CURL ERROR: '.$error); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
63 $info = curl_getinfo($ch); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
64 |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
65 header('Status: '.$info['http_code']); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
66 header('Content-Type: '.$info['content_type']); |
453 | 67 |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
68 $redirurl = ""; |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
69 if ($info['http_code'] === 301) { |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
70 $headers = explode("\r\n", $header); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
71 foreach($headers as $h) { |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
72 $cur_header = explode(": ", $h); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
73 if ($cur_header[0] == "Location") { |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
74 $redirurl = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $SERVICEURL.str_replace("http://", "http/", "$1"), $cur_header[1]); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
75 $redirurl = str_replace(".php/http://", ".php/http/", $redirurl); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
76 header('Location: '.$redirurl); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
77 } |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
78 } |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
79 } else { |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
80 if (in_array(strtok($info['content_type'], ';'), $REWRITE_CONTENT_TYPES)) $data = preg_replace(array_keys($REWRITE_PATTERNS), array_values($REWRITE_PATTERNS), $data, -1, $count); |
453 | 81 } |
82 | |
501
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
83 header('Content-Length: '.strlen($data)); |
4d73737f40ff
new version of powerfulproxy from atiti
Nick <nick@somerandomnick.ano>
parents:
453
diff
changeset
|
84 echo $data; |
453 | 85 ?> |