Skip to content
Snippets Groups Projects
Commit 0a9fe20d authored by Jared Hancock's avatar Jared Hancock
Browse files

Merge pull request #377 from protich/issue/366

Issue/366
parents e581eaff c7ce77f3
No related branches found
No related tags found
No related merge requests found
......@@ -90,31 +90,30 @@ $var['header']=$parser->getHeader();
$var['priorityId']=$cfg->useEmailPriority()?$parser->getPriority():0;
$ticket=null;
if(preg_match ("[[#][0-9]{1,10}]",$var['subject'],$regs)) {
if(preg_match ("[[#][0-9]{1,10}]", $var['subject'], $regs)) {
$extid=trim(preg_replace("/[^0-9]/", "", $regs[0]));
$ticket= new Ticket(Ticket::getIdByExtId($extid));
//Allow mismatched emails?? For now hell NO.
if(!is_object($ticket) || strcasecmp($ticket->getEmail(),$var['email']))
$ticket=null;
if(!($ticket=Ticket::lookupByExtId($extid, $var['email'])) || strcasecmp($ticket->getEmail(), $var['email']))
$ticket = null;
}
$errors=array();
$msgid=0;
if(!$ticket) { //New tickets...
$ticket=Ticket::create($var,$errors,'email');
if(!is_object($ticket) || $errors) {
api_exit(EX_DATAERR,'Ticket create Failed '.implode("\n",$errors)."\n\n");
}
if($ticket) {
//post message....postMessage does the cleanup.
if(!($msgid=$ticket->postMessage($var['message'], 'Email',$var['mid'],$var['header'])))
api_exit(EX_DATAERR, 'Unable to post message');
} elseif(($ticket=Ticket::create($var, $errors, 'email'))) { // create new ticket.
$msgid=$ticket->getLastMsgId();
} else { // failure....
if(isset($errors['errno']) && $errors['errno'] == 403)
api_exit(EX_SUCCESS); //report success on hard rejection
} else {
//post message....postMessage does the cleanup.
if(!($msgid=$ticket->postMessage($var['message'], 'Email',$var['mid'],$var['header']))) {
api_exit(EX_DATAERR, 'Unable to post message');
}
api_exit(EX_DATAERR,'Ticket create Failed '.implode("\n",$errors)."\n\n");
}
//Ticket created...save attachments if enabled.
if($cfg->allowEmailAttachments() && ($attachments=$parser->getAttachments())) {
if($ticket && $cfg->allowEmailAttachments() && ($attachments=$parser->getAttachments())) {
foreach($attachments as $attachment) {
if($attachment['filename'] && $ost->isFileTypeAllowed($attachment['filename']))
$ticket->saveAttachment(array('name' => $attachment['filename'], 'data' => $attachment['body']), $msgid, 'M');
......
......@@ -417,6 +417,10 @@ class MailFetcher {
} elseif (($ticket=Ticket::create($var, $errors, 'Email'))) {
$msgid = $ticket->getLastMsgId();
} else {
//Report success if the email was absolutely rejected.
if(isset($errors['errno']) && $errors['errno'] == 403)
return true;
//TODO: Log error..
return null;
}
......
......@@ -2019,6 +2019,7 @@ class Ticket {
//Make sure the email address is not banned
if(TicketFilter::isBanned($vars['email'])) {
$errors['err']='Ticket denied. Error #403';
$errors['errno'] = 403;
$ost->logWarning('Ticket denied', 'Banned email - '.$vars['email']);
return 0;
}
......@@ -2044,6 +2045,7 @@ class Ticket {
if($ticket_filter
&& ($filter=$ticket_filter->shouldReject())) {
$errors['err']='Ticket denied. Error #403';
$errors['errno'] = 403;
$ost->logWarning('Ticket denied',
sprintf('Ticket rejected ( %s) by filter "%s"',
$vars['email'], $filter->getName()));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment