Commit 9bbb7d50 authored by dockx thibault's avatar dockx thibault
Browse files

Merge branch...

Merge branch '6333-core-phpsetup-removal-of-the-error-collector-mail-to-considered-not-useful-anymore' into 'dev'

Resolve "[Core] - PhpSetup removal of the error collector mail to - considered not useful anymore"

See merge request fusiondirectory/fd!1077
Showing with 49 additions and 76 deletions
+49 -76
......@@ -45,11 +45,11 @@ function htmlunescape (string $html): string
function html_trace ($errstr = "")
{
static $hideArgs = [
'LDAP/init' => [3],
'userinfo/loginUser' => [1],
'change_password' => [1],
'cred_decrypt' => [0,1],
'LDAP/__construct' => [1],
'LDAP/init' => [3],
'userinfo/loginUser' => [1],
'change_password' => [1],
'cred_decrypt' => [0, 1],
'LDAP/__construct' => [1],
];
if (!function_exists('debug_backtrace')) {
return ['', ''];
......@@ -58,24 +58,24 @@ function html_trace ($errstr = "")
$loc = '';
if (isset($trace[0]['file'])) {
$loc = ' - '._('File').': '.$trace[0]['file'];
$loc = ' - ' . _('File') . ': ' . $trace[0]['file'];
if (isset($trace[0]['line'])) {
$loc .= ' ('._('Line').' '.$trace[0]['line'].')';
$loc .= ' (' . _('Line') . ' ' . $trace[0]['line'] . ')';
}
}
$return_html = '<table width="100%" style="background-color:#402005;color:white;border:2px solid red;border-spacing:0;border-collapse:collapse;">'.
'<tr><td colspan="3">'.
'<h1 style="color:white">'.htmlescape(_('PHP error').' "'.$errstr.'"'.$loc).'</h1>'.
'</td></tr>';
$return_mailto = rawurlencode('=== Trace ===');
$return_html = '<table width="100%" style="background-color:#402005;color:white;border:2px solid red;border-spacing:0;border-collapse:collapse;">' .
'<tr><td colspan="3">' .
'<h1 style="color:white">' . htmlescape(_('PHP error') . ' "' . $errstr . '"' . $loc) . '</h1>' .
'</td></tr>';
$return_mailto = rawurlencode('=== Trace ===');
/* Generate trace history */
for ($index = 1, $c = count($trace); $index < $c; $index++) {
$ct = $trace[$index];
$loc = '';
$func = '';
if (isset($ct['class'])) {
$loc .= _('class').' '.$ct['class'];
$loc .= _('class') . ' ' . $ct['class'];
$func .= $ct['class'];
if (isset($ct['function'])) {
$loc .= ' / ';
......@@ -83,7 +83,7 @@ function html_trace ($errstr = "")
}
}
if (isset($ct['function'])) {
$loc .= _('function').' '.$ct['function'];
$loc .= _('function') . ' ' . $ct['function'];
$func .= $ct['function'];
}
if (isset($ct['type'])) {
......@@ -110,8 +110,7 @@ function html_trace ($errstr = "")
} else {
$hideArgsIndexes = [];
}
$f = function ($index, $arg) use (&$f, $hideArgsIndexes)
{
$f = function ($index, $arg) use (&$f, $hideArgsIndexes) {
static $i = 0;
if (($i == 0) && in_array($index, $hideArgsIndexes)) {
return '***';
......@@ -120,17 +119,17 @@ function html_trace ($errstr = "")
return '…';
}
if (is_object($arg)) {
return 'CLASS:&nbsp;'.get_class($arg);
return 'CLASS:&nbsp;' . get_class($arg);
} elseif (is_array($arg)) { /* Avoid converting array to string errors */
$i++;
$ret = 'array('.implode(',', array_map($f, array_keys($arg), $arg)).')';
$ret = 'array(' . implode(',', array_map($f, array_keys($arg), $arg)) . ')';
$i--;
return $ret;
} else {
if (strlen("$arg") > 512) {
$arg = substr("$arg", 0, 512)."…";
$arg = substr("$arg", 0, 512) . "…";
}
return '"'.htmlescape("$arg").'"';
return '"' . htmlescape("$arg") . '"';
}
};
$args = implode(',', array_map($f, array_keys($ct['args']), $ct['args']));
......@@ -148,23 +147,23 @@ function html_trace ($errstr = "")
} else {
$line = '';
}
$color = ($index & 1) ? '#404040' : '606060';
$return_html .= "<tr style='background-color:$color'><td style='padding-left:20px' width=\"30%\">".htmlescape(_("Trace")."[$index]: $loc").'</td>';
$return_html .= "<td>".htmlescape(_("File").": $file ("._('Line')." $line)").'</td><td width="10%">'.htmlescape(_("Type").": $type").'</td></tr>';
$return_html .= "<tr style='background-color:$color'><td colspan=3 style='padding-left:20px;'>".htmlescape(_("Arguments").": $args").'</td></tr>';
$color = ($index & 1) ? '#404040' : '606060';
$return_html .= "<tr style='background-color:$color'><td style='padding-left:20px' width=\"30%\">" . htmlescape(_("Trace") . "[$index]: $loc") . '</td>';
$return_html .= "<td>" . htmlescape(_("File") . ": $file (" . _('Line') . " $line)") . '</td><td width="10%">' . htmlescape(_("Type") . ": $type") . '</td></tr>';
$return_html .= "<tr style='background-color:$color'><td colspan=3 style='padding-left:20px;'>" . htmlescape(_("Arguments") . ": $args") . '</td></tr>';
/* Add trace part to mailto body */
$return_mailto .= rawurlencode(
"\nTrace[".$index."]:".$loc.
"\nFile : ".$file.
"\nLine : ".$line.
"\nType : ".$type.
"\n ".$args.
"\n");
"\nTrace[" . $index . "]:" . $loc .
"\nFile : " . $file .
"\nLine : " . $line .
"\nType : " . $type .
"\n " . $args .
"\n");
}
$return_html .= "</table>";
$return_mailto .= rawurlencode("=== /Trace ===");
$return_html .= "</table>";
$return_mailto .= rawurlencode("=== /Trace ===");
return [$return_html, $return_mailto];
}
......@@ -182,7 +181,7 @@ function html_trace ($errstr = "")
*/
function gosaRaiseError ($errno, $errstr, $errfile, $errline)
{
global $error_collector,$config, $error_collector_mailto;
global $error_collector, $config, $error_collector_mailto;
// To avoid recursion - restore original error handler.
restore_error_handler();
......@@ -207,7 +206,7 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
/* Send all errors to logging class, except "Ldap : No such object" messages*/
if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
logging::log('error', 'php', $errfile, [], 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
logging::log('error', 'php', $errfile, [], 'Type:' . $errno . ', Message:' . $errstr . ', File:' . $errfile . ', Line: ' . $errline);
}
/* Error messages are hidden in FusionDirectory, so we only send them to the logging class and abort here */
......@@ -219,39 +218,19 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
/* Create header as needed */
if ($error_collector == "") {
/* Mailto body header */
$version = FD_VERSION;
$error_collector_mailto .= rawurlencode(
"Oups. Seems like you've catched some kind of bug inside FusionDirectory/PHP. You may want to help ".
"us to improve the software stability. If so, please provide some more information below.".
"\n\n".
"*** FusionDirectory bug report ***".
"\nFusionDirectory Version: $version".
"\n\n".
"Please describe what you did to produce this error as detailed as possible.".
"\n\n".
"*** PHP error information ***\n\n");
$error_collector = '
<div class="error">
<table width="100%">
<tr>
<td>
<img src="geticon.php?context=status&amp;icon=dialog-warning&amp;size=16" alt="" class="center"/>&nbsp;
<strong style="font-size:14px">'.
htmlescape(_('Generating this page caused the PHP interpreter to raise some errors!')).'
<strong style="font-size:14px">' .
htmlescape(_('Generating this page caused the PHP interpreter to raise some errors!')) . '
</strong>
</td>
<td align=right>
<a href="mailto:bugs@fusiondirectory.org?subject=FusionDirectory%20bugreport&amp;body=%BUGBODY%">
<img src="geticon.php?context=applications&amp;icon=internet-mail&amp;size=16" title="'.htmlescape(_('Send bug report to the FusionDirectory Team')).
'" class="center" alt="'.htmlescape(_('Mail icon')).'">&nbsp;'.htmlescape(_('Send bug report')).'
</a>
</td>
<td align="right">
<button onClick="$(\'errorbox\').toggle();">'.
htmlescape(_('Toggle information')).'
<button onClick="$(\'errorbox\').toggle();">' .
htmlescape(_('Toggle information')) . '
</button>
</td>
</tr>
......@@ -260,14 +239,8 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
<div id="errorbox" style="position:absolute; z-index:150; display: none;">';
}
/* Create error header */
$error_collector_mailto .= rawurlencode("=== Error === \n");
$error_collector_mailto .= rawurlencode("PHP error: $errstr ($errfile, line $errline)\n");
$error_collector_mailto .= rawurlencode("=== /Error === \n\n");
list($html_trace, $mailto_trace) = html_trace($errstr);
$error_collector .= $html_trace;
$error_collector_mailto .= $mailto_trace;
$error_collector .= $html_trace;
/* Flush in case of fatal errors */
if (preg_match('/^fatal/i', $errstr) || (PHP_ERROR_FATAL == 'TRUE')) {
......@@ -276,7 +249,7 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
if (PHP_ERROR_FATAL == 'TRUE') {
$error_collector = str_replace('display: none;', '', $error_collector);
}
echo $error_collector."</div>";
echo $error_collector . "</div>";
flush();
exit;
}
......@@ -292,7 +265,7 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
function fusiondirectoryExceptionHandler (Throwable $throwable)
{
try {
logging::log('error', 'fatal', '', [], 'Uncaught '.get_class($throwable).': '.$throwable->getMessage());
logging::log('error', 'fatal', '', [], 'Uncaught ' . get_class($throwable) . ': ' . $throwable->getMessage());
} catch (Throwable $t) {
/* Ignore exceptions/errors here */
}
......@@ -306,7 +279,7 @@ function fusiondirectoryExceptionHandler (Throwable $throwable)
}
} catch (Throwable $t) {
/* Minimal display if exceptions happens when building the pretty one */
echo 'Uncaught '.get_class($throwable).': '.$throwable->getMessage();
echo 'Uncaught ' . get_class($throwable) . ': ' . $throwable->getMessage();
}
exit(255);
......@@ -321,7 +294,7 @@ function dummy_error_handler ()
/* Bail out for incompatible/old PHP versions */
if (!version_compare(phpversion(), PHP_MIN_VERSION, ">=")) {
echo "PHP version needs to be ".PHP_MIN_VERSION." or above to run FusionDirectory. Aborted.";
echo "PHP version needs to be " . PHP_MIN_VERSION . " or above to run FusionDirectory. Aborted.";
exit();
}
......@@ -330,7 +303,7 @@ date_default_timezone_set("GMT");
/* Get base dir for reference */
$BASE_DIR = dirname(dirname(__FILE__));
$ROOT_DIR = $BASE_DIR."/html";
$ROOT_DIR = $BASE_DIR . "/html";
error_reporting(E_ALL | E_STRICT);
/* Register error handler */
......@@ -341,18 +314,18 @@ set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER
set_exception_handler('fusiondirectoryExceptionHandler');
$variables_order = 'ES';
ini_set('track_vars', '1');
ini_set('display_errors', '1');
ini_set('report_memleaks', '1');
ini_set('include_path', ".:$BASE_DIR/include:".PHP_DIR.':'.PEAR_DIR);
ini_set('track_vars', '1');
ini_set('display_errors', '1');
ini_set('report_memleaks', '1');
ini_set('include_path', ".:$BASE_DIR/include:" . PHP_DIR . ':' . PEAR_DIR);
/* Do smarty setup */
require(SMARTY);
$smarty = new Smarty;
$smarty->setTemplateDir($BASE_DIR.'/ihtml/');
$smarty->caching = Smarty::CACHING_OFF;
$smarty->setTemplateDir($BASE_DIR . '/ihtml/');
$smarty->caching = Smarty::CACHING_OFF;
$smarty->assign('css_files', []);
$smarty->assign('js_files', []);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment