9 require_once
"settings.conf.php";
10 require_once
"http.inc.php";
12 $_SERVER[
'SERVER_PROTOCOL'] =
'HTTP/1.0';
15 'method' => $_SERVER[
'REQUEST_METHOD'],
16 'protocol' => $_SERVER[
'SERVER_PROTOCOL'],
17 'headers' => getallheaders(),
21 'payload' => file_get_contents(
'php://input'),
26 if (isset($request[
'headers'][
'X-proxyphp-Content-Type'])) {
27 $request[
'headers'][
'Content-Type'] = $request[
'headers'][
'X-proxyphp-Content-Type'];
28 unset($request[
'headers'][
'X-proxyphp-Content-Type']);
31 $url = $_SERVER[
'REQUEST_URI'];
33 if ( $reset_url ==
true ) $url = $_GET[
'url'];
35 if (strpos($url, $PROXYNAME) === 0) {
36 $url = substr($url, strlen($PROXYNAME));
40 if ($url[0] !==
'/') {
45 if (isset($request[
'headers'][
'If-None-Match'])){
46 unset($request[
'headers'][
'If-None-Match']);
49 if (isset($request[
'headers'][
'If-Modified-Since'])){
50 unset($request[
'headers'][
'If-Modified-Since']);
53 if (isset($request[
'headers'][
'If-Modified-Since'])){
54 unset($request[
'headers'][
'If-Modified-Since']);
58 if (!empty($HTTP_URL_ADD_QUERY_PARAMETERS) && strpos($url,
'?') ===
false){
59 $url = $url .
'?' . $HTTP_URL_ADD_QUERY_PARAMETERS;
62 $url = $url .
'&' . $HTTP_URL_ADD_QUERY_PARAMETERS;
66 if (substr($url, -1) ===
'/') {
67 $CMS_SERVERHOST = substr($CMS_SERVERHOST, 0, -1);
70 $request[
'url'] = $CMS_SERVERHOST . $url;
72 $response = http_request($request);
76 if ($_SERVER[
'REQUEST_METHOD'] ===
'HEAD' && (
int)$response[
'status'] >= 400) {
78 $request[
'method'] =
'GET';
79 fpassthru($response[
'socket']);
80 fclose($response[
'socket']);
81 $response = http_request($request);
86 while (in_array($response[
'status'], array(301, 302, 307))) {
95 fclose($response[
'socket']);
97 if ($n_redirects++ == $HTTP_MAX_REDIRECTS) {
98 myErrorHandler(
'Too many redirects (' . $n_redirects .
'), exiting...');
101 if (empty($response[
'headers'][
'Location'])) {
102 myErrorHandler(
"Got redirection request by the remote server, but the redirection URL is empty.");
107 $url = $response[
'headers'][
'Location'];
112 $parsedURL = parse_url($url);
113 $url_path = $parsedURL[
'path'];
116 if (substr($url_path, 0, strlen($PROXYNAME)) === $PROXYNAME) {
117 $url_path = substr($url_path, strlen($PROXYNAME));
121 $parsedURL[
'scheme'] .
'://' .
124 (empty($parsedURL[
'query']) ?
'' :
'?' . $parsedURL[
'query']);
127 $request[
'url'] = $url;
128 $response = http_request($request);
135 header(
'HTTP/1.0 ' . $response[
'status']);
138 foreach ($response[
'headers'] as $key => $value) {
140 if (strtolower($key) ==
'content-length') {
149 header($key .
': ' . $value);
152 header(
'Connection: close');
155 if (null !== $response[
'socket']) {
156 fpassthru($response[
'socket']);
157 fclose($response[
'socket']);
160 function myErrorHandler($msg)
164 header(
"HTTP/1.0 500 Internal Error");
165 die(
"Gentics Aloha Editor AJAX Gateway Error: $msg");