karadav/www/_router.php

58 lines
1.4 KiB
PHP
Raw Normal View History

2022-08-31 06:06:27 +00:00
<?php
namespace KaraDAV;
require_once __DIR__ . '/_inc.php';
$uri = parse_url($_SERVER['REQUEST_URI'], \PHP_URL_PATH);
2022-08-31 07:57:49 +00:00
$s = new Server;
$method = $_SERVER['REQUEST_METHOD'] ?? $_SERVER['REDIRECT_REQUEST_METHOD'];
2022-10-21 16:21:38 +00:00
2022-10-24 22:35:34 +00:00
if (LOG_FILE) {
$qs = $_SERVER['QUERY_STRING'] ?? null;
$headers = apache_request_headers();
2022-10-21 16:21:38 +00:00
2022-10-24 22:35:34 +00:00
http_log("===== ROUTER: Got new request: %s from %s =====", date('d/m/Y H:i:s'), $_SERVER['REMOTE_ADDR']);
http_log("ROUTER: <= %s %s (User: %s)\nRequest headers:\n %s",
$method,
$uri . ($qs ? '?' : '') . $qs,
$_SERVER['PHP_AUTH_USER'] ?? 'none',
implode("\n ", array_map(fn ($v, $k) => $k . ': ' . $v, $headers, array_keys($headers)))
);
if ($method != 'GET' && $method != 'OPTIONS' && $method != 'HEAD') {
http_log("ROUTER: <= Request body:\n%s", file_get_contents('php://input'));
}
}
2022-08-31 06:06:27 +00:00
if (PHP_SAPI == 'cli-server') {
2022-10-24 22:35:34 +00:00
file_put_contents('php://stderr', $uri . "\n");
2022-08-31 07:57:49 +00:00
if (is_file(__DIR__ . '/' . $uri)) {
2022-08-31 06:06:27 +00:00
return false;
}
// Index.php
elseif ($uri == '/' && $method != 'OPTIONS') {
2022-08-31 06:06:27 +00:00
return false;
}
}
2022-09-04 00:27:40 +00:00
if (isset($_SERVER['REDIRECT_REQUEST_METHOD'])) {
$_SERVER['REQUEST_METHOD'] = $_SERVER['REDIRECT_REQUEST_METHOD'];
}
2022-08-31 07:57:49 +00:00
if (!$s->route($uri)) {
if (PHP_SAPI == 'cli-server') {
2022-10-21 16:21:38 +00:00
$s->dav->log("ROUTER: => Route is not managed: 404");
}
2022-08-31 06:06:27 +00:00
http_response_code(404);
echo '<h1>Invalid URL</h1>';
}
2022-10-24 22:35:34 +00:00
elseif (LOG_FILE) {
2022-10-21 16:21:38 +00:00
http_log("ROUTER: => %d\nResponse headers:\n %s", http_response_code(), implode("\n ", headers_list()));
}