$resolvers = array('haruhiobjectcache' => 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; } ?>