1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-15 03:56:20 +02:00

Bounce-handling test option added. Correct path issue in perms notification.

This commit is contained in:
Cameron
2014-11-21 16:29:57 -08:00
parent e7ad72b3a2
commit 0dbb7cecdb
3 changed files with 113 additions and 39 deletions

View File

@ -383,7 +383,7 @@ class cron_admin_ui extends e_admin_ui
elseif (!$active) // show instructions elseif (!$active) // show instructions
{ {
$setpwd_message = $frm->open("generate")."<small>" $setpwd_message = $frm->open("generate")."<small>"
.LAN_CRON_15.":</small><br /><pre style='color:black'>".rtrim($_SERVER['DOCUMENT_ROOT'], '/').e_HTTP."cron.php token=".$pref['e_cron_pwd'].' >/dev/null 2>&1'; .LAN_CRON_15.":</small><br /><pre style='color:black'>".e_ROOT."cron.php token=".$pref['e_cron_pwd'].' >/dev/null 2>&1';
$setpwd_message .= "</pre><small>". LAN_CRON_16."</small>"; $setpwd_message .= "</pre><small>". LAN_CRON_16."</small>";
if(e_DOMAIN && file_exists("/usr/local/cpanel/version")) if(e_DOMAIN && file_exists("/usr/local/cpanel/version"))

View File

@ -421,6 +421,10 @@ class mailout_main_ui extends e_admin_ui
{ {
$this->sendTestEmail(); // Send test email - uses standard 'single email' handler $this->sendTestEmail(); // Send test email - uses standard 'single email' handler
} }
if(!empty($_POST['send_bounce_test']))
{
$this->sendTestBounce();
}
elseif (isset($_POST['updateprefs'])) elseif (isset($_POST['updateprefs']))
{ {
$this->saveMailPrefs($mes); // TODO check if functional, $emessage -> $mes $this->saveMailPrefs($mes); // TODO check if functional, $emessage -> $mes
@ -431,6 +435,29 @@ class mailout_main_ui extends e_admin_ui
} }
private function sendTestBounce()
{
$mes = e107::getMessage();
$pref = e107::getPref();
$sendto = $pref['mail_bounce_email'];
$eml = array('subject'=>'Test Bounce', 'body' => 'Test Bounce Email address','e107_header'=>99999999, 'extra_header' => 'X-Bounce-Test: true');
if(e107::getEmail()->sendEmail($sendto, 'Bounce handler', $eml))
{
$mes->addSuccess('Test Bounce sent to '.$sendto);
}
else
{
$mes->addError('Failed Bounce email sent to '.$sendto);
}
}
private function sendTestEmail() private function sendTestEmail()
{ {
$mes = e107::getMessage(); $mes = e107::getMessage();
@ -840,7 +867,7 @@ class mailout_main_ui extends e_admin_ui
$lastload = e107::getCache()->retrieve('emailLastBounce',FALSE,TRUE,TRUE); $lastload = e107::getCache()->retrieve('emailLastBounce',FALSE,TRUE,TRUE);
$lastBounce = round((time() - $lastload) / 60); $lastBounce = round((time() - $lastload) / 60);
$lastBounceText = ($lastBounce > 1256474) ? "<b>Never</b>" : "<b>".$lastBounce . " minutes </b>ago."; $lastBounceText = ($lastBounce > 1256474) ? "<span class='label label-important'>Never</span>" : "<span class='label label-success'>".$lastBounce . " minutes ago.</span>";
$text = " $text = "
<form method='post' action='".e_SELF."?".e_QUERY."' id='mailsettingsform'> <form method='post' action='".e_SELF."?".e_QUERY."' id='mailsettingsform'>
@ -1065,22 +1092,45 @@ class mailout_main_ui extends e_admin_ui
<tbody> <tbody>
<tr> <tr>
<td>".LAN_MAILOUT_32."</td> <td>".LAN_MAILOUT_32."</td>
<td>".$frm->text('mail_bounce_email2', $pref['mail_bounce_email'], 40, 'size=xxlarge')."</td> <td><div class='input-append'>".$frm->text('mail_bounce_email2', $pref['mail_bounce_email'], 40, 'size=xlarge');
if(!empty($pref['mail_bounce_email']))
{
$text .= $frm->admin_button('send_bounce_test','Send Test','primary','Test');
}
$text .= "</div></td>
</tr> </tr>
<tr> <tr>
<td>".LAN_MAILOUT_233."</td><td><b>".(e_DOCROOT).e107::getFolder('handlers')."bounce_handler.php</b>"; <td>".LAN_MAILOUT_233."</td><td><b>".(e_ROOT).e107::getFolder('handlers')."bounce_handler.php</b>";
$status = '';
if(!is_readable(e_HANDLER.'bounce_handler.php')) if(!is_readable(e_HANDLER.'bounce_handler.php'))
{ {
$text .= "<br /><span class='required'>".LAN_MAILOUT_161.'</span>'; $status = LAN_MAILOUT_161;
} }
elseif(!is_executable(e_HANDLER.'bounce_handler.php')) // Seems to give wrong answers on Windoze elseif(!is_executable(e_HANDLER.'bounce_handler.php')) // Seems to give wrong answers on Windoze
{ {
$text .= "<br /><span class='required'>".LAN_MAILOUT_162.'</span>'; $status = LAN_MAILOUT_162;
} }
$text .= "<br /><span class='field-help'>".LAN_MAILOUT_235."</span></td></tr> else
{
// $text .= " ".ADMIN_TRUE_ICON;
}
if(!empty($status))
{
$text .= "&nbsp;&nbsp;<span class='label label-warning'>".$status."</span>";
}
$text .= "<div>".LAN_MAILOUT_235."</div>
</td></tr>
<tr><td>".LAN_MAILOUT_236."</td><td>".$lastBounceText."</td></tr> <tr><td>".LAN_MAILOUT_236."</td><td>".$lastBounceText."</td></tr>
</tbody></table>"; </tbody></table>";

View File

@ -3,55 +3,79 @@
// WARNING, any echoed output from this script will be returned to the sender as a bounce message. // WARNING, any echoed output from this script will be returned to the sender as a bounce message.
$_E107['debug'] = false; $_E107['debug'] = true;
if (!defined('e107_INIT')) if (!defined('e107_INIT'))
{ {
$_E107['cli'] = TRUE; $_E107['cli'] = true;
$class2 = realpath(dirname(__FILE__)."/../")."/class2.php"; $_E107['allow_guest'] = true; // allow to run while in members-only mode.
require_once($class2); $_E107['no_forceuserupdate'] = true;
} $_E107['no_maintenance'] = true;
if(ADMIN && varset($_GET['eml'])) $class2 = realpath(dirname(__FILE__)."/../")."/class2.php";
{
$_E107['debug'] = true; @require_once($class2);
} }
$bnc = new e107Bounce; $bnc = new e107Bounce;
$process = (varset($_GET['eml']) && $_E107['debug']) ? $_GET['eml'].".eml" : FALSE; $bnc->process();
$bnc->process($process);
class e107Bounce class e107Bounce
{ {
private $debug = false;
private $source = false;
function __construct()
{
if(ADMIN && vartrue($_GET['eml']))
{
$this->debug = true;
$this->source = $_GET['eml'].".eml";
}
}
function process($source='') function process($source='')
{ {
global $_E107,$pref;
$pref = e107::getPref();
e107::getCache()->CachePageMD5 = '_'; e107::getCache()->CachePageMD5 = '_';
e107::getCache()->set('emailLastBounce',time(),TRUE,FALSE,TRUE); e107::getCache()->set('emailLastBounce',time(),TRUE,FALSE,TRUE);
$strEmail= (!$source) ? $this->mailRead(-1) : file_get_contents(e_HANDLER."eml/".$source); $strEmail= ($this->source == false) ? $this->mailRead(-1) : file_get_contents(e_HANDLER."eml/".$this->source);
if(!$strEmail) if(strpos($strEmail,'X-Bounce-Test: true')!==false) // Bounce Test from Admin Area.
{ {
if($_E107['debug'] === true) $this->debug = true;
}
if(empty($strEmail)) // Failed.
{
if($this->debug === true && !empty($this->source))
{ {
echo "Couldn't get email data"; echo "Couldn't get email data";
} }
return; else
{
$message = "Empty Email!";
}
}
else
{
$multiArray = Bouncehandler::get_the_facts($strEmail);
$head = BounceHandler::parse_head($strEmail);
$message = null;
$identifier = deftrue('MAIL_IDENTIFIER', 'X-e107-id');
$e107_userid = (isset($head[$identifier])) ? $head[$identifier] : $this->getHeader($strEmail, $identifier);
} }
$multiArray = Bouncehandler::get_the_facts($strEmail);
$head = BounceHandler::parse_head($strEmail);
$message = null;
$identifier = deftrue('MAIL_IDENTIFIER', 'X-e107-id'); if($this->debug === true)
$e107_userid = (isset($head[$identifier])) ? $head[$identifier] : $this->getHeader($strEmail, $identifier);
if($_E107['debug'])
{ {
require_once(e_HANDLER."mail.php"); require_once(e_HANDLER."mail.php");
$message = "Your Bounce Handler is working. The data of the email you sent is displayed below.<br />"; $message = "Your Bounce Handler is working. The data of the email you sent is displayed below.<br />";
@ -61,13 +85,13 @@ class e107Bounce
$message .= "A user-id was detected in the email you sent: <b>".$e107_userid."</b><br />"; $message .= "A user-id was detected in the email you sent: <b>".$e107_userid."</b><br />";
} }
$message .= "<br /><h4>Head</h4>"; // $message .= "<br /><h4>Head</h4>";
$message .= print_a($head,true); // $message .= print_a($head,true);
$message .= "<h4>Emails Found</h4><pre>".print_r($multiArray,TRUE). "</pre>"; // $message .= "<h4>Emails Found</h4><pre>".print_r($multiArray,TRUE). "</pre>";
$message .= "<pre>".$strEmail. "</pre>"; $message .= "<pre>".$strEmail. "</pre>";
if(varset($_GET['eml'])) if(!empty($this->source ))
{ {
echo $message; echo $message;
} }
@ -82,7 +106,7 @@ class e107Bounce
{ {
if($errors = $this->setUser_Bounced($e107_userid)) if($errors = $this->setUser_Bounced($e107_userid))
{ {
$mesage .= print_a($errors); // $message .= print_a($errors,true);
} }
} }