diff --git a/src/etc/inc/plugins.inc.d/webgui.inc b/src/etc/inc/plugins.inc.d/webgui.inc index afeefaf77..7e9b33cd8 100644 --- a/src/etc/inc/plugins.inc.d/webgui.inc +++ b/src/etc/inc/plugins.inc.d/webgui.inc @@ -434,12 +434,6 @@ EOD; $lighty_config .= "}\n"; } - if (empty($config['system']['deployment']) || $config['system']['deployment'] == 'development') { - $lighty_config .= "# send static error pages for some errors in non-debug mode\n"; - $lighty_config .= "server.error-intercept = \"enable\"\n"; - $lighty_config .= "server.errorfile-prefix = \"/usr/local/opnsense/data/webgui/status-\"\n"; - } - $lighty_config .= <<handle($_SERVER['REQUEST_URI'])->getContent(); } catch (\Error | \Exception $e) { + error_log($e); + $response = [ 'errorMessage' => $e->getMessage(), 'errorTrace' => $e->getTraceAsString(), ]; + if (method_exists($e, 'getTitle')) { $response['errorTitle'] = $e->getTitle(); } else { $response['errorTitle'] = gettext('An API exception occurred'); $response['errorMessage'] = $e->getFile() . ':' . $e->getLine() . ': ' . $response['errorMessage']; - error_log($e); } + header('HTTP', true, 500); header("Content-Type: application/json;charset=utf-8"); + echo json_encode($response, JSON_UNESCAPED_SLASHES); } diff --git a/src/opnsense/www/index.php b/src/opnsense/www/index.php index af9ec8c8c..9984af1ab 100644 --- a/src/opnsense/www/index.php +++ b/src/opnsense/www/index.php @@ -70,16 +70,8 @@ try { $application = new \Phalcon\Mvc\Application($di); echo $application->handle($_SERVER['REQUEST_URI'])->getContent(); -} catch (\Exception $e) { - if ( - isset($application) || ( - stripos($e->getMessage(), ' handler class cannot be loaded') !== false || - stripos($e->getMessage(), ' was not found on handler ') !== false - ) - ) { - // Render default UI page when controller or action wasn't found - echo $application->handle('/ui/')->getContent(); - } else { - echo $e->getMessage(); - } +} catch (\Error | \Exception $e) { + error_log($e); + + header('Location: /crash_reporter.php', true, 303); }