From 9ed6406bdc8786e7d280a101ac652dc4b76c3b77 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sun, 14 Aug 2016 14:23:43 +0200 Subject: [PATCH] (mvc, api) add error handling for api calls, https://github.com/opnsense/core/issues/1136 --- .../controllers/OPNsense/Base/ApiControllerBase.php | 12 ++++++++++++ src/opnsense/www/api.php | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php index b82ddfe1e..b9cfbb675 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php @@ -57,6 +57,17 @@ class ApiControllerBase extends ControllerRoot return null; } + /** + * Raise errors, warnings, notices, etc. + * @param $errno + * @param $errstr + * @throws \Exception + */ + public function APIErrorHandler($errno, $errstr) + { + throw new \Exception($errstr . ' ['.$errno.']'); + } + /** * Initialize API controller */ @@ -64,6 +75,7 @@ class ApiControllerBase extends ControllerRoot { // disable view processing $this->view->disable(); + set_error_handler(array($this, 'APIErrorHandler')); } /** diff --git a/src/opnsense/www/api.php b/src/opnsense/www/api.php index cf601f225..b0b7deca2 100644 --- a/src/opnsense/www/api.php +++ b/src/opnsense/www/api.php @@ -26,5 +26,9 @@ try { echo $application->handle()->getContent(); } catch (\Exception $e) { - echo $e->getMessage(); + $response = array(); + $response['errorMessage'] = $e->getMessage(); + header("Content-Type: application/json;charset=utf-8"); + echo htmlspecialchars(json_encode($response), ENT_NOQUOTES); + error_log($e); }