put mail cron related debug info into a log file specified in config.php

--HG--
branch : quitta-gsoc-2013
This commit is contained in:
Quitta 2013-08-20 04:33:23 +02:00
parent ebce7ae90c
commit 3bebfe4492
2 changed files with 26 additions and 13 deletions

View file

@ -69,15 +69,15 @@ class Mail_Handler{
//the main function //the main function
function cron() { function cron() {
global $cfg; global $cfg;
global $MAIL_LOG_PATH;
$default_groupemail = $cfg['mail']['default_groupemail']; $default_groupemail = $cfg['mail']['default_groupemail'];
$default_groupname = $cfg['mail']['default_groupname']; $default_groupname = $cfg['mail']['default_groupname'];
/* /*
$inbox_host = $cfg['mail']['host']; $inbox_host = $cfg['mail']['host'];
$oms_reply_to = "Ryzom Ticketing Support <ticketing@".$inbox_host.">";*/ $oms_reply_to = "Ryzom Ticketing Support <ticketing@".$inbox_host.">";*/
global $MAIL_DIR; global $MAIL_DIR;
error_log("========================================================\n", 3, $MAIL_LOG_PATH);
echo("\n========================================================\n"); error_log("mailing cron Job started at: ". Helpers::outputTime(time(),0) . "\n", 3, $MAIL_LOG_PATH);
echo("mailing cron Job started at: ". Helpers::outputTime(time(),0) . "\n");
//creates child process //creates child process
$pid = self::mail_fork(); $pid = self::mail_fork();
@ -130,10 +130,10 @@ class Mail_Handler{
if(mail($email['Recipient'], $email['Subject'], $email['Body'], $headers)) { if(mail($email['Recipient'], $email['Subject'], $email['Body'], $headers)) {
$status = "DELIVERED"; $status = "DELIVERED";
echo("Emailed {$email['Recipient']}\n"); error_log("Emailed {$email['Recipient']}\n", 3, $MAIL_LOG_PATH);
} else { } else {
$status = "FAILED"; $status = "FAILED";
echo("Email to {$email['Recipient']} failed\n"); error_log("Email to {$email['Recipient']} failed\n", 3, $MAIL_LOG_PATH);
} }
//change the status of the emails. //change the status of the emails.
$this->db->execute('update email set Status = ?, MessageId = ?, Attempts = Attempts + 1 where MailId = ?', array($status, $message_id, $email['MailId'])); $this->db->execute('update email set Status = ?, MessageId = ?, Attempts = Attempts + 1 where MailId = ?', array($status, $message_id, $email['MailId']));
@ -174,7 +174,7 @@ class Mail_Handler{
if($tkey) { if($tkey) {
//TODO: base file on Ticket + timestamp //TODO: base file on Ticket + timestamp
$file = fopen($MAIL_DIR."/ticket".$tkey, 'w'); $file = fopen($MAIL_DIR."/ticket".$tkey, 'w');
print("Email was written to ".$MAIL_DIR."/ticket".$tkey."\n"); error_log("Email was written to ".$MAIL_DIR."/ticket".$tkey."\n", 3, $MAIL_LOG_PATH);
fwrite($file, imap_fetchheader($mbox, $i) . imap_body($mbox, $i)); fwrite($file, imap_fetchheader($mbox, $i) . imap_body($mbox, $i));
fclose($file); fclose($file);
@ -188,8 +188,8 @@ class Mail_Handler{
imap_close($mbox); imap_close($mbox);
} }
} }
print("\nChild Cron job finished at ". Helpers::outputTime(time(),0) . "\n"); error_log("Child Cron job finished at ". Helpers::outputTime(time(),0) . "\n", 3, $MAIL_LOG_PATH);
echo("========================================================\n"); error_log("========================================================\n", 3, $MAIL_LOG_PATH);
} }
@ -226,6 +226,8 @@ class Mail_Handler{
function incoming_mail_handler($mbox,$i,$group){ function incoming_mail_handler($mbox,$i,$group){
global $MAIL_LOG_PATH;
$header = imap_header($mbox, $i); $header = imap_header($mbox, $i);
$subject = self::decode_utf8($header->subject); $subject = self::decode_utf8($header->subject);
$entire_email = imap_fetchheader($mbox, $i) . imap_body($mbox, $i); $entire_email = imap_fetchheader($mbox, $i) . imap_body($mbox, $i);
@ -262,14 +264,17 @@ class Mail_Handler{
//if email is sent from an existing email address in the db (else it will give an error while loading the user object) //if email is sent from an existing email address in the db (else it will give an error while loading the user object)
if($from != "FALSE"){ if($from != "FALSE"){
$user = new Ticket_User(); $user = new Ticket_User();
$user->load_With_TUserId($from); $user->load_With_TUserId($from);
//if user has access to it! //if user has access to it!
if((Ticket_User::isMod($user) or ($ticket->getAuthor() == $user->getTUserId())) and $txt != ""){ if((Ticket_User::isMod($user) or ($ticket->getAuthor() == $user->getTUserId())) and $txt != ""){
Ticket::createReply($txt, $user->getTUserId(), $ticket->getTId(), 0); Ticket::createReply($txt, $user->getTUserId(), $ticket->getTId(), 0);
print("Email found that is a reply to a ticket at:".$group->getGroupEmail()."\n"); error_log("Email found that is a reply to a ticket at:".$group->getGroupEmail()."\n", 3, $MAIL_LOG_PATH);
}else{ }else{
//if user has no access to it //if user has no access to it
//Warn real ticket owner + person that send the mail //Warn real ticket owner + person that send the mail
@ -283,10 +288,12 @@ class Mail_Handler{
This action is notified to the real ticket owner!" ; This action is notified to the real ticket owner!" ;
Mail_Handler::send_mail($from, $subject_warnSender , $body_warnSender, $ticket->getTId(), NULL); Mail_Handler::send_mail($from, $subject_warnSender , $body_warnSender, $ticket->getTId(), NULL);
print("Email found that was a reply to a ticket, though send by another user to ".$group->getGroupEmail()."\n"); error_log("Email found that was a reply to a ticket, though send by another user to ".$group->getGroupEmail()."\n", 3, $MAIL_LOG_PATH);
} }
}else{ }else{
//if a reply to a ticket is being sent by a non-user! //if a reply to a ticket is being sent by a non-user!
//Warn real ticket owner + person that send the mail //Warn real ticket owner + person that send the mail
$subject_warnAuthor = "Someone tried to reply to your ticket: [Ticket #" . $ticket->getTId() ."]"; $subject_warnAuthor = "Someone tried to reply to your ticket: [Ticket #" . $ticket->getTId() ."]";
@ -298,7 +305,8 @@ class Mail_Handler{
$body_warnSender = "It seems you tried to reply to someone's ticket, However this email address isn't linked to any account, please use the matching email address to that account!\n\n $body_warnSender = "It seems you tried to reply to someone's ticket, However this email address isn't linked to any account, please use the matching email address to that account!\n\n
This action is notified to the real ticket owner!" ; This action is notified to the real ticket owner!" ;
Mail_Handler::send_mail($fromEmail, $subject_warnSender , $body_warnSender, $ticket->getTId(), NULL); Mail_Handler::send_mail($fromEmail, $subject_warnSender , $body_warnSender, $ticket->getTId(), NULL);
print("Email found that was a reply to a ticket, though send by an unknown email address to ".$group->getGroupEmail()."\n");
error_log("Email found that was a reply to a ticket, though send by an unknown email address to ".$group->getGroupEmail()."\n", 3, $MAIL_LOG_PATH);
} }
@ -312,13 +320,14 @@ class Mail_Handler{
//if not default group, then forward it by giving the $group->getSGroupId's param //if not default group, then forward it by giving the $group->getSGroupId's param
$newTicketId = Ticket::create_Ticket($subject, $txt,1, $from, $from, $group->getSGroupId()); $newTicketId = Ticket::create_Ticket($subject, $txt,1, $from, $from, $group->getSGroupId());
print("Email regarding new ticket found at:".$group->getGroupEmail()."\n"); error_log("Email regarding new ticket found at:".$group->getGroupEmail()."\n", 3, $MAIL_LOG_PATH);
return $newTicketId .".".time(); return $newTicketId .".".time();
}else{ }else{
//if it's a email that has nothing to do with ticketing, return 0; //if it's a email that has nothing to do with ticketing, return 0;
print("Email found that isn't a reply or new ticket, at:".$group->getGroupEmail()."\n"); error_log("Email found that isn't a reply or new ticket, at:".$group->getGroupEmail()."\n", 3, $MAIL_LOG_PATH);
return 0; return 0;
} }

View file

@ -51,8 +51,12 @@ $cfg['mail']['host'] = "ryzomcore.com";
//Defines mailing related stuff //Defines mailing related stuff
$SUPPORT_GROUP_IMAP_CRYPTKEY = "azerty"; $SUPPORT_GROUP_IMAP_CRYPTKEY = "azerty";
$TICKET_MAILING_SUPPORT = true; $TICKET_MAILING_SUPPORT = true;
//You have to create this dir at first!
$MAIL_DIR = "/tmp/mail"; $MAIL_DIR = "/tmp/mail";
$MAIL_LOG_PATH = "/tmp/mail/cron_mail.log";
$cfg['crypt']['key'] = 'Sup3rS3cr3tStuff'; $cfg['crypt']['key'] = 'Sup3rS3cr3tStuff';
$cfg['crypt']['enc_method'] = 'AES-256-CBC'; $cfg['crypt']['enc_method'] = 'AES-256-CBC';
$cfg['crypt']['hash_method'] = "SHA512"; $cfg['crypt']['hash_method'] = "SHA512";