Log HTTP requests and responses
This commit is contained in:
parent
4b30a2c550
commit
806a194245
|
@ -39,3 +39,9 @@ define('KaraDAV\WWW_URL', sprintf('http%s://%s%s%s', $https, $name, $port, $root
|
|||
* If set to NULL, WOPI support is disabled
|
||||
*/
|
||||
const WOPI_DISCOVERY_URL = null;
|
||||
|
||||
/**
|
||||
* Path to a log file (eg. __DIR__ . '/debug.log')
|
||||
* This will log all HTTP requests and responses received by the server
|
||||
*/
|
||||
const LOG_FILE = null;
|
|
@ -30,4 +30,9 @@ class WebDAV extends WebDAV_Server
|
|||
header('Access-Control-Allow-Headers: Authorization, *');
|
||||
header('Access-Control-Allow-Methods: GET,HEAD,PUT,DELETE,COPY,MOVE,PROPFIND,MKCOL,LOCK,UNLOCK');
|
||||
}
|
||||
|
||||
public function log(string $message, ...$params)
|
||||
{
|
||||
http_log('DAV: ' . $message, ...$params);
|
||||
}
|
||||
}
|
||||
|
|
17
www/_inc.php
17
www/_inc.php
|
@ -77,3 +77,20 @@ function format_bytes(int $bytes, string $unit = 'B'): string
|
|||
return $bytes . ' ' . $unit;
|
||||
}
|
||||
}
|
||||
|
||||
function http_log(string $message, ...$params): void
|
||||
{
|
||||
if (PHP_SAPI != 'cli-server' && !LOG_FILE) {
|
||||
return;
|
||||
}
|
||||
|
||||
$msg = vsprintf($message, $params) . "\n\n";
|
||||
|
||||
if (PHP_SAPI == 'cli-server') {
|
||||
file_put_contents('php://stderr', $msg);
|
||||
}
|
||||
|
||||
if (LOG_FILE) {
|
||||
file_put_contents(LOG_FILE, $msg, FILE_APPEND);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,9 +10,16 @@ $s = new Server;
|
|||
|
||||
$method = $_SERVER['REQUEST_METHOD'] ?? $_SERVER['REDIRECT_REQUEST_METHOD'];
|
||||
$qs = $_SERVER['QUERY_STRING'] ?? null;
|
||||
$s->dav->log("<= %s %s", $method, $uri . ($qs ? '?' : '') . $qs);
|
||||
$s->dav->log('%s', print_r(apache_request_headers(), true));
|
||||
$s->dav->log('%s', $_SERVER['PHP_AUTH_USER'] ?? 'not logged in');
|
||||
$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)))
|
||||
);
|
||||
|
||||
if (PHP_SAPI == 'cli-server') {
|
||||
if (is_file(__DIR__ . '/' . $uri)) {
|
||||
|
@ -23,8 +30,8 @@ if (PHP_SAPI == 'cli-server') {
|
|||
return false;
|
||||
}
|
||||
|
||||
if ($method != 'GET' && $method != 'HEAD') {
|
||||
$s->dav->log('%s', file_get_contents('php://input'));
|
||||
if ($method == 'PROPPATCH' || $method == 'PROPFIND') {
|
||||
http_log("ROUTER: <= Request body:\n%s", file_get_contents('php://input'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,12 +41,12 @@ if (isset($_SERVER['REDIRECT_REQUEST_METHOD'])) {
|
|||
|
||||
if (!$s->route($uri)) {
|
||||
if (PHP_SAPI == 'cli-server') {
|
||||
$s->dav->log("=> Router fail: 404");
|
||||
$s->dav->log("ROUTER: => Route is not managed: 404");
|
||||
}
|
||||
|
||||
http_response_code(404);
|
||||
echo '<h1>Invalid URL</h1>';
|
||||
}
|
||||
else {
|
||||
$s->dav->log('=> %d %s', http_response_code(), print_r(headers_list(), true));
|
||||
http_log("ROUTER: => %d\nResponse headers:\n %s", http_response_code(), implode("\n ", headers_list()));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue