<?php 
 
require_once('_include.php'); 
 
$config = SimpleSAML_Configuration::getInstance(); 
 
/* This page will redirect to itself after processing a POST request and sending the email. */ 
if($_SERVER['REQUEST_METHOD'] !== 'POST') { 
    /* The message has been sent. Show error report page. */ 
 
    $t = new SimpleSAML_XHTML_Template($config, 'errorreport.php', 'errors'); 
    $t->show(); 
    exit; 
} 
 
$reportId = (string)$_REQUEST['reportId']; 
$email = (string)$_REQUEST['email']; 
$text = htmlspecialchars((string)$_REQUEST['text']); 
 
try { 
    $session = SimpleSAML_Session::getSessionFromRequest(); 
    $data = $session->getData('core:errorreport', $reportId); 
} catch (Exception $e) { 
    SimpleSAML_Logger::error('Error loading error report data: ' . var_export($e->getMessage(), TRUE)); 
} 
 
if ($data === NULL) { 
    $data = array( 
        'exceptionMsg' => 'not set', 
        'exceptionTrace' => 'not set', 
        'reportId' => $reportId, 
        'trackId' => 'not set', 
        'url' => 'not set', 
        'version' => $config->getVersion(), 
        'referer' => 'not set', 
    ); 
 
    if (isset($session)) { 
        $data['trackId'] = $session->getTrackID(); 
    } 
} 
 
foreach ($data as $k => $v) { 
    $data[$k] = htmlspecialchars($v); 
} 
 
/* Build the email message. */ 
 
$message = '<h1>SimpleSAMLphp Error Report</h1> 
 
<p>Message from user:</p> 
<div class="box" style="background: yellow; color: #888; border: 1px solid #999900; padding: .4em; margin: .5em">' . htmlspecialchars($text) . '</div> 
 
<p>Exception: <strong>' . $data['exceptionMsg'] . '</strong></p> 
<pre>' . $data['exceptionTrace'] . '</pre> 
 
<p>URL:</p> 
<pre><a href="' . $data['url'] . '">' . $data['url'] . '</a></pre> 
 
<p>Host:</p> 
<pre>' . htmlspecialchars(php_uname('n')) . '</pre> 
 
<p>Directory:</p> 
<pre>' . dirname(dirname(__FILE__)) . '</pre> 
 
<p>Track ID:</p> 
<pre>' . $data['trackId'] . '</pre> 
 
<p>Version: <tt>' . $data['version'] . '</tt></p> 
 
<p>Report ID: <tt>' . $data['reportId'] . '</tt></p> 
 
<p>Referer: <tt>' . htmlspecialchars($data['referer']) . '</tt></p> 
 
<hr /> 
<div class="footer">This message was sent using simpleSAMLphp. Visit the <a href="http://simplesamlphp.org/">simpleSAMLphp homepage</a>.</div> 
 
'; 
 
 
/* Add the email address of the submitter as the Reply-To address. */ 
$email = trim($email); 
/* Check that it looks like a valid email address. */ 
if (!preg_match('/\s/', $email) && strpos($email, '@') !== FALSE) { 
    $replyto = $email; 
    $from = $email; 
} else { 
    $replyto = NULL; 
    $from = '[email protected]'; 
} 
 
/* Send the email. */ 
$toAddress = $config->getString('technicalcontact_email', '[email protected]'); 
if ($config->getBoolean('errorreporting', TRUE) && $toAddress !== '[email protected]') { 
    $email = new SimpleSAML_XHTML_EMail($toAddress, 'simpleSAMLphp error report', $from); 
    $email->setBody($message); 
    $email->send(); 
    SimpleSAML_Logger::error('Report with id ' . $reportId . ' sent to <' . $toAddress . '>.'); 
} 
 
/* Redirect the user back to this page to clear the POST request. */ 
SimpleSAML_Utilities::redirectTrustedURL(SimpleSAML_Utilities::selfURLNoQuery()); 
 
 |