Changeset 4029 for extensions/Mail_supervisor/main.inc.php
- Timestamp:
- Oct 13, 2009, 1:40:08 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/Mail_supervisor/main.inc.php
r4023 r4029 1 1 <?php 2 // +-----------------------------------------------------------------------+ 3 // | Piwigo - a PHP based picture gallery | 4 // +-----------------------------------------------------------------------+ 5 // | Copyright(C) 2008-2009 Piwigo Team http://piwigo.org | 6 // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | 7 // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | 8 // +-----------------------------------------------------------------------+ 9 // | This program is free software; you can redistribute it and/or modify | 10 // | it under the terms of the GNU General Public License as published by | 11 // | the Free Software Foundation | 12 // | | 13 // | This program is distributed in the hope that it will be useful, but | 14 // | WITHOUT ANY WARRANTY; without even the implied warranty of | 15 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 // | General Public License for more details. | 17 // | | 18 // | You should have received a copy of the GNU General Public License | 19 // | along with this program; if not, write to the Free Software | 20 // | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | 21 // | USA. | 22 // +-----------------------------------------------------------------------+ 23 2 24 /* 3 25 Plugin Name: Mail supervisor 4 Version: 1.0. 126 Version: 1.0.2 5 27 Description: Mail supervisor surveille l'envoie des mails. 6 28 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315 … … 11 33 12 34 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 35 13 36 define('mail_superv_DIR' , basename(dirname(__FILE__))); 14 37 define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/'); … … 23 46 function clj_mail($result, $mailto, $subject, $content, $headers, $args) 24 47 { 25 global $conf, $user, $lang_info, $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message ;48 global $conf, $user, $lang_info, $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message,$infos_message; 26 49 // lecture config table ------------- 27 50 28 51 29 52 $mails_options = explode("," , $conf['mail_superv']); 30 53 $infos_message=""; 54 $message =""; 55 $erreur_messages=""; 56 31 57 // lecture données ------------- 32 58 $mails_données = Get_Datas(); 59 33 60 34 61 $nb_mails = $mails_données['nb_mails'] ; … … 36 63 37 64 $reste = $mails_données['reste'] ; 38 $reste_mail = $mails_données['reste_mail'] ; 39 $reste_spam = $mails_données['reste_spam'] ; 40 41 $mails_données['quarantaine'] = ( $mails_données['reste'] >0 ) ? "true" : "false" ; 42 43 44 $match=array("<",">"); 45 $string=array("<",">") ; 46 $search=array("D","H","M","S","W"); 47 $replace=array(" day"," Hour"," minute"," second"," week"); 48 49 $header_message='<pre> 50 Destinataire :'.$mailto.' 51 Headers : 52 '.str_replace( $match,$string, $headers).' 53 Sujet :'.$subject.' 54 </pre>'; 55 65 66 67 $rest_mail = $mails_données['rest_mail'] ; 68 if ($rest_mail <=0 || $mails_données['nb_mails'] ==0 ){ 69 $mails_données['nb_mails'] =0 ; 70 $mails_données['date_mail'] = time(); 71 } 72 73 $rest_spam = $mails_données['rest_spam'] ; 74 if ($rest_spam <=0 || $mails_données['nb_spams'] ==0 ){ 75 $mails_données['nb_spams'] =0 ; 76 $mails_données['date_spam'] = time(); 77 } 78 79 $alerte = ( $mails_données['reste'] >0 ) ? true : false ; 80 81 $alerte_mail = ( $mails_données['nb_mails'] > $mails_données['nb_mails_maxi'] ) ? true : false ; 82 $alerte_spam = ( $mails_données['nb_spams'] > $mails_données['nb_spams_maxi'] ) ? true : false ; 83 84 85 if ( ( !$alerte && !$alerte_spam && !$alerte_mail ) ) 86 { 87 56 88 $nb_destinataires=0; 89 57 90 if ($mailto<>"" ) $nb_destinataires +=1; 58 91 //================= réécriture de l'entête =============================== … … 61 94 if ($mailto=="") $mailto=$conf_mail['email_webmaster']; 62 95 } 63 if ($mails_options[1] == 'on') {64 96 if (!empty($args['Cc'])) 65 { 66 $nb_destinataires += count($args['Cc']); 67 $headers= corrige_header('Cc:',$headers); 97 {$nb_destinataires += count($args['Cc']); 98 if ($mails_options[1] == 'on') { $headers= corrige_header('Cc:',$headers);} 68 99 } 69 100 if (!empty($args['Bcc'])) 70 { 71 $nb_destinataires += count($args['Bcc']); 72 $headers = corrige_header('Bcc',$headers); 101 { $nb_destinataires += count($args['Bcc']); 102 if ($mails_options[1] == 'on') { $headers = corrige_header('Bcc',$headers);} 73 103 } 74 104 75 }76 105 77 106 if ($mails_options[2]=='on') { … … 89 118 $content =$texte .$content ; 90 119 } 91 92 120 93 121 $ret=false; 94 if ( ($mails_données['quarantaine']=="false") ) 95 { 96 //======== Non mise en quarantaine ============= 97 122 123 $infos_message .=$nb_destinataires; 124 125 126 //======== Non mise en quarantaine ============= 98 127 ob_start(); 99 $ret = mail($mailto, 'Plugin'.$subject, $content, $headers); 100 $message = ob_get_contents(); 101 ob_end_clean(); 128 $ret = false; 129 if ($nb_destinataires > 0) { 130 $ret = mail($mailto, $subject, $content, $headers); 131 132 }else{ 133 $message .='Nombre de destinataires = 0'; 134 } 135 $message .= ob_get_contents(); 136 ob_end_clean(); 137 $mails_données['message']=$message; 138 Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto); 102 139 103 $mails_données['message']=$message; 104 $est_un_spam =!(strpos(strtolower($message), 'spam') === false); 105 if ($est_un_spam == false) { 106 //--- Non détection de spam ------------------ 107 if ($mails_données['nb_mails']==0) { 108 $date_mail=time(); 109 110 $mails_periode="+".str_replace( $search, $replace, $mails_données['nb_mails_periode']); 111 $next_day = strtotime($mails_periode,time()); 112 $mails_données['date_mail'] = $next_day; 113 } 114 $next_day = time() + (0); 115 $mails_données['date_quarantaine'] = $next_day ; 140 141 142 } else { 143 144 //================== Est en quarantaine ======================= 145 $erreur_message .= l10n('To_day_is')."<br />"; 146 if ($alerte_spam ) { 147 $type="Spams"; 148 $d1=$mails_données['nb_spams']; 149 $d2=$mails_données['date_spam']; 150 $d3= $mails_données['rest_spam']; 151 $d4=time()+$d3 ; 152 } 153 154 if ($alerte_mail) { 155 $type="Mails"; 156 157 $d1=$mails_données['nb_mails']; 158 $d2=$mails_données['date_mail']; 159 $d3= $mails_données['rest_mail']; 160 $d4=time()+$d3 ; 161 } 162 if ($alerte) { 163 $type="Spams(Quarantaine)"; 164 $d1=$mails_données['nb_spams']; 165 $d2=$mails_données['date_quarantaine']; 166 $d3= $mails_données['reste']; 167 $d4=time()+$d3 ; 168 } 169 170 171 $d2=date(l10n('formatdate'),$d2); 172 $d3=int_to_heure($d3) ; 173 $d4=date(l10n('formatdate'),$d4); 174 175 $erreur_message .='<br />'.sprintf(l10n('mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />'; 176 } 177 sauve_données(); 178 return true ; 179 } 180 //=========================================================================================== 181 function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto) 182 { 183 global $conf, $user, $lang_info, $conf_mail,$mails_options,$mails_données , $template,$page ,$infos_message,$erreur_message,$args; 184 $match=array("<",">"); 185 $string=array("<",">") ; 186 187 188 $est_un_spam =!(strpos(strtolower($message), 'spam') === false); 189 $headers=str_replace( $match,$string, $headers); 190 191 if ( ($ret==false) || ($est_un_spam==true) || ($nb_destinataires == 0) ) { 192 ; // Bad recipient address syntax 193 $pos1 = strpos(strtolower($message), 'bad recipient address syntax'); 194 if ( !($pos1 === false) ){ 195 $erreur_message .='Détection de : Bad recipient address syntax .'; 196 $erreur_message .='Vérifiez les destinataires: (Bcc,Cc,To)<br />'; 197 } 198 199 $erreur_message .= sprintf(l10n('debug_message %s %s %s %s %s'),($ret==true)? "true" : "false",$message,$mailto,$headers,$nb_destinataires); 200 //=============== La fonction mail à retournéeune erreur ========================= 201 202 203 } 204 205 if ($est_un_spam == false) 206 { 207 if ($mails_données['nb_mails']==0) { $mails_données['date_mail'] = time(); } 116 208 $mails_données['nb_mails'] += $nb_destinataires; 117 // teste limite atteinte :118 119 if (($mails_données['nb_mails'] >= $mails_données['nb_mails_maxi']))120 {121 $erreur_message .= "ALERTE !!! DANGER DE MISE EN QUARANTAINE PAR VOTRE FAI <br />" ;122 $erreur_message .= "Vous avez dépassé le nombre de mails admissibles par semaine. <br /> <br />";123 $erreur_message .='Date du premier mail: ' . date('d-M-Y H:m:s',$mails_données['date_mail']);124 $rest_mail= $mails_données['date_mail']-time() ;125 $erreur_message .= '<br />Encore : '. int_to_heure($rest_mail) ;126 127 if ( (float) $rest_mail <= 0)128 {129 $mails_periode="+".str_replace( $search, $replace, $mails_données['nb_mails_periode']);130 $next_day = strtotime($mails_periode,time());131 $mails_données['date_mail'] = $next_day;132 133 }134 135 136 }137 if ($ret==false) {138 //=============== La fonction mail à retournée false=========================139 $erreur_message .= '<br />---- La fonction mail à retournée [false] ------<br />';140 $erreur_message .='-------- MESSAGE erreur : -------------<br />';141 $erreur_message .=$message ; // Bad recipient address syntax142 $pos1 = strpos(strtolower($message), 'bad recipient address syntax');143 if ( !($pos1 === false) ){144 $erreur_message .='Détection de : Bad recipient address syntax .';145 $erreur_message .='Vérifiez les destinataires: (Bcc,Cc,To)<br />';146 }147 $erreur_message .='mailto: "'.$mailto.'"<br />';148 149 $erreur_message .='--------HEADERS -----------------<br />150 ';151 $erreur_message .=$headers ;152 153 154 }155 156 }else{157 //--- Détection de spam ------------------158 159 if ($mails_données['nb_spams']==0) { $mails_données['date_spam']= time(); }160 $mails_données['nb_spams'] += $nb_destinataires;161 162 $est_un_spam =!(strpos(strtolower($message), 'trop de spam') === false);163 164 if ( $est_un_spam ) {165 $mails_données['quarantaine']=true;166 $spams_periode="+".str_replace($search, $replace, $mails_données['nb_spams_periode']);167 168 $next_day = strtotime( $spams_periode);169 170 // $next_day = strtotime('+2 day');171 $mails_données['date_quarantaine']= $next_day ;172 209 } 173 210 else 174 211 { 175 $mails_données['quarantaine']= ($mails_données['nb_spams'] >= $mails_données['nb_spams_maxi']); 176 } 177 // $next_day = time() + (2 * 24 * 60 * 60); 178 if ($mails_données['quarantaine']) 179 { 180 $erreur_message .= "ALERTE !!! DANGER DE MISE EN QUARANTAINE <br />" ; 181 $erreur_message .= "Vous avez dépassé le nombre de spmas admissibles. <br /> <br />"; 182 } 183 $erreur_message .="<br> Detection $message <br />". 184 "Nombre de spams détectés; ".$mails_données['nb_spams']; 212 $mails_données['nb_spams'] += $nb_destinataires; 213 //--- Détection de spam ------------------ 214 if ($mails_données['nb_spams']==0) {$mails_données['date_spam'] = time(); } 215 216 $trop_de_spam =!(strpos(strtolower($message), 'trop de spam') === false); 217 if ( $trop_de_spam ) { 218 $mails_données['nb_spams_maxi']=$mails_données['nb_spams']; 219 $quarantaine_periode="+".str_replace( $period_search, $period_match, $mails_données['quarantaine_periode']); 220 $next_day = strtotime($quarantaine_periode); // détection de 'Trop de spam 221 $mails_données['date_quarantaine']= time() ; 222 $mails_données['quarantaine']= true ; 223 $infos_message=memo_var($mails_données); 224 } 225 185 226 } 186 227 187 }else{ 188 //======== Mise en quarantaine ============= 189 $erreur_message = '<br /> 190 Nous sommes le : '. date('d-M-Y H:m:s') ."<br />"; 191 192 if ($reste >= 0) { 193 $erreur_message .= 194 "MISE EN QUARANTAINE !"."<br />". 195 "Nombre de spams envoyés :". $mails_données['nb_spams']."<br />". 196 "Depuis le :". date('d-M-Y H:m:s',$mails_données['date_spam'])."<br />". 197 "Il vous reste encore ". int_to_heure($mails_données['reste']) . " avant le déblocage par votre FAI<br /> 198 qui devrait avoir lieu le ".date('d-M-Y H:m:s',$mails_données['date_quarantaine'])."." ; 199 200 } 201 202 $erreur_message .= '</pre>'. 203 ' 204 205 '. 206 "Dernier message reçu.:<br />". $mails_données['message']. "<br /> "; 207 $ret = "break"; 208 } 209 210 sauve_données(); 228 229 230 231 211 232 $ret=true; 212 213 233 return $ret ; 214 234
Note: See TracChangeset
for help on using the changeset viewer.