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