var/www/pages/index.php : filter empty URI parts mid-path

This commit is contained in:
codeberg.org 2020-05-04 22:46:54 +02:00
parent 0df931d3ee
commit f48218397a

View File

@ -36,7 +36,10 @@ if (preg_match("/^\/[a-zA-Z0-9_ +\-\/\.]+\$/", $request_url) != 1) {
$git_prefix = "/data/git/gitea-repositories";
$parts = explode("/", $request_url);
array_shift($parts); # remove empty first
# Remove empty first, potentially empty parts between //. If URL ends on "/", last entry in array is empty too. Remove it:
$parts = array_filter($parts, function($p) { return strlen($p) > 0; });
$owner = strtolower(array_shift($parts));
$git_root = realpath("$git_prefix/$owner/pages.git");
@ -45,11 +48,6 @@ if (substr($git_root, 0, strlen($git_prefix)) !== $git_prefix) {
send_response(404, "this user/organization does not have codeberg pages");
}
# If URL ends on "/", last entry in array is empty. Remove it:
if (end($parts) === "") {
array_pop($parts);
}
$file_url = implode("/", $parts);
# If this is a folder or just empty, we add 'index.html' to the URL: