karadav/www/_router.php

53 lines
1.3 KiB
PHP
Raw Normal View History

2022-08-31 06:06:27 +00:00
<?php
namespace KaraDAV;
require_once __DIR__ . '/_inc.php';
2022-08-31 07:57:49 +00:00
$uri = strtok($_SERVER['REQUEST_URI'], '?');
$s = new Server;
$method = $_SERVER['REQUEST_METHOD'] ?? $_SERVER['REDIRECT_REQUEST_METHOD'];
$qs = $_SERVER['QUERY_STRING'] ?? null;
2022-10-21 16:21:38 +00:00
$headers = apache_request_headers();
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)))
);
2022-08-31 06:06:27 +00:00
if (PHP_SAPI == 'cli-server') {
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-08-31 07:57:49 +00:00
2022-10-21 16:21:38 +00:00
if ($method == 'PROPPATCH' || $method == 'PROPFIND') {
http_log("ROUTER: <= Request body:\n%s", file_get_contents('php://input'));
2022-09-03 04:25:02 +00:00
}
2022-08-31 06:06:27 +00:00
}
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>';
}
else {
2022-10-21 16:21:38 +00:00
http_log("ROUTER: => %d\nResponse headers:\n %s", http_response_code(), implode("\n ", headers_list()));
}