blob: b1d2fecc355512492d1e16d3b641efd60f5d481f [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2013 Eclipse Foundation, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eclipse Foundation - initial API and implementation
*******************************************************************************/
$dir = $_SERVER['DOCUMENT_ROOT'] . urldecode(strtok($_SERVER['REQUEST_URI'], "?"));
$archive_dir = str_replace("download.eclipse.org", "archive.eclipse.org", $dir);
if(is_file($archive_dir)) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . (empty($_SERVER['HTTPS']) ? "http" : "https") . "://archive.eclipse.org" . $_SERVER['REQUEST_URI']);
exit;
}
$browser = $_SERVER['HTTP_USER_AGENT'];
# Send short 404 for non-human browsers
if(
strpos($browser, "Jakarta") !== FALSE
|| strpos($browser, "Java/") !== FALSE
|| strpos($browser, "Slurp") !== FALSE
|| stripos($browser, "bot") !== FALSE
|| strpos($browser, "bing") !== FALSE
|| strpos($browser, "p2/") !== FALSE
|| strpos($browser, "Wget") !== FALSE
|| strpos($browser, "Googlebot/") !== FALSE
|| strpos($browser, "apacheHttpClient") !== FALSE
|| strpos($browser, "Apache-HttpClient/") !== FALSE
|| stripos($browser, "spider") !== FALSE
|| strpos($browser, "Apache-Maven/") !== FALSE
|| strpos($browser, "Apache Ivy/") !== FALSE
|| strpos($browser, "HTTP-Tiny/") !== FALSE
|| strpos($browser, "Archiva") !== FALSE
|| strpos($browser, "Artifactory/") !== FALSE
|| strpos($browser, "Gradle/") !== FALSE
|| strpos($browser, "Finjan") !== FALSE
|| strpos($browser, "Aether") !== FALSE
|| strpos($browser, "m2e/") !== FALSE
|| strpos($browser, "Debian APT/") !== FALSE
|| strpos($browser, "developer fusion") !== FALSE
|| strpos($browser, "Genuitec") !== FALSE
|| strpos($browser, "netBeans") !== FALSE
) {
echo "404 Not Found";
}
else {
$_SERVER['REQUEST_URI'] = str_replace("?d", "", $_SERVER['REQUEST_URI']);
$dir = $_SERVER['DOCUMENT_ROOT'] . urldecode($_SERVER['REQUEST_URI']);
$dir_html = "";
$is_p2 = false;
if(is_dir($dir)) {
$files = array();
$dirs = array();
if ($dh = opendir($dir)) {
$dir_html = "<p><strong>Directory Contents</strong></p><div id='dirlist'>";
while (($file = readdir($dh)) !== false) {
if (filetype($dir . $file) == "dir") {
$dirs[] = $file;
}
else {
$files[] = $file;
if(strpos($file, "artifacts.jar") !== FALSE
|| strpos($file, "artifacts.xml") !== FALSE
|| strpos($file, "compositeArtifacts.jar") !== FALSE
|| strpos($file, "compositeArtifacts.xml") !== FALSE) {
# p2 repo
$is_p2 = true;
}
}
}
closedir($dh);
asort($dirs);
asort($files);
foreach ($dirs as $directory) {
if($directory != "." ) {
$dir_html .= "<img src='//dev.eclipse.org/small_icons/places/folder.png'><a href='" . $_SERVER['REQUEST_URI'] . "$directory/'> " . $directory . "</a><br />\n";
}
}
foreach ($files as $file) {
$dir_html .= "<img src='//dev.eclipse.org/small_icons/actions/edit-copy.png'><a href='" . $_SERVER['REQUEST_URI'] . "$file'> " . $file . "</a><br />\n";
}
$dir_html .= "</div>";
}
if($is_p2) {
# p2
$html = file_get_contents("404_p2.html");
}
else {
$html = file_get_contents("404.html");
}
$html = str_replace("<!-- DNR:FILE -->", $dir_html, $html);
}
else {
# Check archives
$html = file_get_contents("404_nodoc.html");
$message_html = "<h1>Not Found</h1>";
$message_html .= "<p>We're sorry, the page or file cannot be found. Here are some reasons why:</p>";
$message_html .= "<ul><li>A file may have moved to the archives. Please contact the project members on their user <a href='//eclipse.org/forums'>forum</a>.<br /></li>";
$message_html .= "<li>Your file was part of a nightly or integration build which is no longer there. Simply download the latest version.</li><li>The project is uploading a new build, and this file is not there yet. Try again later.</li></ul>";
$archive_dir = str_replace("download.eclipse.org", "archive.eclipse.org", $dir);
if(is_dir($archive_dir)) {
$message_html = "<h1>Moved to archives</h1>";
$message_html .= "<p>It appears this content was moved to the archives. You can try accessing this URL instead:<br /><br />";
$message_html .= "&#160; &#160; <a href=\"http://archive.eclipse.org" . $_SERVER['REQUEST_URI'] . "\">http://archive.eclipse.org" . $_SERVER['REQUEST_URI'] . "</a></p>";
# doc title
$html = str_replace("<title>Not Found</title>", "<title>Moved</title>", $html);
# breadcrumb
$html = str_replace("<li class=\"active\">Not Found</li>", "<li class=\"active\">Moved</li>", $html);
}
$html = str_replace("<!-- DNR:FILE -->", $message_html, $html);
}
echo $html;
}