don't log user errors into the server error log

This commit is contained in:
Shish 2021-11-16 14:52:26 +00:00
parent 3cb0a6a2c0
commit 68a128c0ea
2 changed files with 26 additions and 8 deletions

View file

@ -7,6 +7,7 @@ class SCoreException extends RuntimeException
{
public ?string $query;
public string $error;
public int $http_code = 500;
public function __construct(string $msg, ?string $query=null)
{
@ -31,44 +32,58 @@ class InstallerException extends RuntimeException
}
}
class UserErrorException extends SCoreException
{
public int $http_code = 400;
}
class ServerErrorException extends SCoreException
{
public int $http_code = 500;
}
/**
* A fairly common, generic exception.
*/
class PermissionDeniedException extends SCoreException
class PermissionDeniedException extends UserErrorException
{
public int $http_code = 403;
}
/**
* This exception is used when an Image cannot be found by ID.
*/
class ImageDoesNotExist extends SCoreException
class ImageDoesNotExist extends UserErrorException
{
public int $http_code = 404;
}
/**
* This exception is used when a User cannot be found by some criteria.
*/
class UserDoesNotExist extends SCoreException
class UserDoesNotExist extends UserErrorException
{
public int $http_code = 404;
}
/*
* For validate_input()
*/
class InvalidInput extends SCoreException
class InvalidInput extends UserErrorException
{
public int $http_code = 402;
}
/*
* This is used by the image resizing code when there is not enough memory to perform a resize.
*/
class InsufficientMemoryException extends SCoreException
class InsufficientMemoryException extends ServerErrorException
{
}
/*
* This is used by the image resizing code when there is an error while resizing
*/
class ImageResizeException extends SCoreException
class ImageResizeException extends ServerErrorException
{
}

View file

@ -592,6 +592,7 @@ function _fatal_error(Exception $e): void
$message = $e->getMessage();
$phpver = phpversion();
$query = is_subclass_of($e, "SCoreException") ? $e->query : null;
$code = is_subclass_of($e, "SCoreException") ? $e->http_code : 500;
//$hash = exec("git rev-parse HEAD");
//$h_hash = $hash ? "<p><b>Hash:</b> $hash" : "";
@ -616,8 +617,10 @@ function _fatal_error(Exception $e): void
print("Version: $version (on $phpver)\n");
} else {
$q = $query ? "" : "<p><b>Query:</b> " . html_escape($query);
error_log("Shimmie Error: $message (Query: $query)\n{$e->getTraceAsString()}");
header("HTTP/1.0 500 Internal Error");
if ($code >= 500) {
error_log("Shimmie Error: $message (Query: $query)\n{$e->getTraceAsString()}");
}
header("HTTP/1.0 $code Error");
echo '
<!doctype html>
<html lang="en">