array ('resolverurl' => 'http://objectcache.web.vm.haruhi.eu/object.php?%s')); if (isset($_GET['service'])) $service = $_GET['service']; if (isset($_GET['request'])) $urn = $_GET['request']; switch ($service) { case 'N2R': #print_r ($_SERVER); #print_r ($_GET); if (!preg_match('/^urn:sha1:[0-9a-zA-Z]+$/', $urn)) { header('HTTP/1.1 400 Unrecognized identifier format'); print "Error: the requested identifier is not in a recognized format."; return; } $req = file_get_contents(sprintf($resolvers['haruhiobjectcache']['resolverurl'], $urn)); $response = parse_http_response($http_response_header); if ($response['response']['code'] == 200) { header('Content-Type: '.$response['headers']['Content-Type']); header('Content-Disposition: '.$response['headers']['Content-Disposition']); header('Content-Length: '.$response['headers']['Content-Length']); header('Last-Modified: '.$response['headers']['Last-Modified']); header('Expires: '.$response['headers']['Expires']); //header('X-Resolver: '.'haruhiobjectcache'); print $req; } else { header('HTTP/1.1 404 Image not found'); print "Unable to retrieve object.
"; //print "You may be able to find what you want on http://urnc.yi.org
"; print "The following response may be helpful in working out what happened: "; print "
"; print_r ($response); print "
"; } break; default: header('HTTP/1.1 400 Service not provided'); print "Error: the requested service is not provided by this resolver."; //print_r ($_SERVER); } function parse_http_response($http_response_header) { if (preg_match('/^([^ ]+) ([^ ]+) (.+)$/', $http_response_header[0], $r)) { $parse['response']['raw'] = $http_response_header[0]; $parse['response']['protocol'] = $r[1]; $parse['response']['code'] = $r[2]; $parse['response']['text'] = $r[3]; foreach ($http_response_header as $header) { if (preg_match('/^([^:]+): ?(.+)$/', $header, $r)) { $parse['headers'][$r[1]] = $r[2]; } } } else { return FALSE; } return $parse; } ?>