Changeset 9702 for extensions/Mail_supervisor/main.inc.php
- Timestamp:
- Mar 15, 2011, 3:39:19 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/Mail_supervisor/main.inc.php
r8917 r9702 2 2 /* 3 3 Plugin Name: Mail supervisor 4 Version: 1.4.4 Beta4 Version: auto 5 5 Description: Mail supervisor surveille l'envoie des mails. 6 6 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315 … … 9 9 */ 10 10 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 11 if (!defined(' MAIL_SUPERV_DIR')) define('MAIL_SUPERV_DIR' , basename(dirname(__FILE__)));11 if (!defined('mail_superv_DIR')) define('mail_superv_DIR' , basename(dirname(__FILE__))); 12 12 if (!defined('MAIL_SUPERV_PATH')) define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/'); 13 $MAIL_SUPERV_PATH_ABS=str_replace('\\','/',dirname(__FILE__) ); 14 if (!defined('MAIL_SUPERV_PATH_ABS')) define( 'MAIL_SUPERV_PATH_ABS', $MAIL_SUPERV_PATH_ABS."/"); 15 global $conf,$mails_options ; 13 16 include_once (MAIL_SUPERV_PATH.'include/constants.php'); 14 15 /* EVENT_HANDLER_PRIORITY_NEUTRAL */ 16 17 global $conf ; 18 add_event_handler('send_mail', 'clj_mail',EVENT_HANDLER_PRIORITY_NEUTRAL - 1 , 6); 19 function clj_mail($result, $mailto, $subject, $content, $headers, $args) 20 { 21 global $conf, $user, $lang_info, $conf_mail,$mails_options,$mails_donnees , $template,$page ,$erreur_message,$infos_message, $lang; 17 include_once(MAIL_SUPERV_PATH.'mail_super.inc.php'); 18 $mail_supervisor = new mail_supervisor(); 19 add_event_handler('get_admin_plugin_menu_links', array(&$mail_supervisor,'admin_menu') ); 20 21 $mails_options = mail_supervisor::Get_Options($mails_options,"mail_superv"); 22 /* EVENT_HANDLER_PRIORITY_NEUTRAL */ 23 // 24 // 25 include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 26 //===============loc_begin_index==============loc_after_page_header============================================================= 27 add_event_handler('loc_after_page_header', array(&$mail_supervisor,'init') ); 28 add_event_handler('loc_begin_page_tail', array(&$mail_supervisor,'affiche_message') ); 29 30 //========================================================================================== 31 add_event_handler('send_mail', 'clj_mail',EVENT_HANDLER_PRIORITY_NEUTRAL - 10, 6); 32 function clj_mail($result, $mailto, $subject, $content, $headers, $args) { 33 global $conf, $user, $lang_info; 34 global $conf_mail,$mails_options,$mails_donnees ; 35 global $template,$page ,$erreur_message,$infos_message, $lang; 36 global $errors; 37 22 38 // lecture config table ------------- 23 include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 24 load_language('plugin.lang', MAIL_SUPERV_PATH); 25 26 if (isset($_POST["Submit"]) ) 27 { 28 if ($_POST["Submit"] != l10n('Sv_Envoyer') ) return true ; 29 } 30 $message =""; 31 if (!isset($infos_message)) 32 { 33 $infos_message = ""; 34 } 35 if (!isset($erreur_message)) 36 { 37 $erreur_message = ''; 38 } 39 $mails_options = explode("," , $conf['mail_superv']); 39 include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 40 load_language('plugin.lang', MAIL_SUPERV_PATH); 41 if (isset($_POST["Submit"]) ) { 42 if ($_POST["Submit"] != l10n('Sv_Envoyer') ) return true ; 43 } 44 // remove_event_handler('send_mail', 'pwg_send_mail'); 45 46 $message =""; 47 if (!isset($infos_message)) { $infos_message = ""; } 48 if (!isset($erreur_message)) { $erreur_message = ''; } 49 50 // $mails_options = explode("," , $conf['mail_superv']); 51 $envoie_ok=true ; 40 52 //======== verification si envoie de mail ou blocage connexion ===================== 41 if ($mails_options[no_mail_list]=='on' || $mails_options[no_connect] == 'on' ) 42 { 43 if (kill_list()) 44 { 45 $erreur_message .= "<BR />".l10n('Sv_is_a_spam') ; 46 if ($mails_options[no_connect] == 'on' ){ 47 if ($user['status'] == 'webmaster' ) 48 { 53 54 if ($mails_options['no_mail_list']=='on' || $mails_options['no_connect'] == 'on' ) { 55 if (kill_list()) { 56 $nb_destinataires=0; ; 57 $envoie_ok= false ; 58 $erreur_message .= "<BR />".l10n('Sv_is_a_spam') ; 59 $infos_message = l10n('Sv_mail_not_send')."<BR />"; 60 if ($mails_options['no_connect'] == 'on' ){ 61 if ($user['status'] == 'webmaster' ) { 49 62 //---------- continuer si web master ---------- 50 }else{ 63 64 }else{ 51 65 if (!isset($_GET['admin'])) { 52 66 die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!'); … … 55 69 die('blacklist Hacking attempt!'); 56 70 } 57 return true;71 58 72 } 59 73 60 74 } 61 62 } 75 76 return true; 77 } 63 78 } 64 65 66 79 // lecture donnees ------------- 67 $mails_donnees =Get_Datas();80 $mails_donnees = mail_supervisor::Get_Datas(); 68 81 69 82 $nb_mails = $mails_donnees['nb_mails'] ; … … 91 104 92 105 93 if ( ( !$alerte && !$alerte_spam && !$alerte_mail ) ) 94 { 95 96 $nb_destinataires=0; 97 if ($mails_options[check_mailto] == 'on') { 98 if ($mailto == "" ) $mailto = $conf_mail['email_webmaster']; 99 } 100 if ($mailto<>"" ) $nb_destinataires +=1; 101 102 if (!empty($args['Bcc'])) { $nb_destinataires += count($args['Bcc']); } 103 if (!empty($args['Cc'])) { $nb_destinataires += count($args['Cc']); } 106 if ( ( !$alerte && !$alerte_spam && !$alerte_mail ) ) { 107 $nb_destinataires=0; 108 if ($mails_options['check_mailto'] == 'on') { 109 if ($mailto == "" ) $mailto = $conf_mail['email_webmaster']; 110 } 111 if ($mailto<>"" ) $nb_destinataires +=1; 112 if (!empty($args['Bcc'])) { $nb_destinataires += count($args['Bcc']); } 113 if (!empty($args['Cc'])) { $nb_destinataires += count($args['Cc']); } 104 114 105 115 106 $infos_message .= "<hr> Theme :" . ($args['theme'] ) ."<br />";107 $infos_message .="nombre de destinataire:".$nb_destinataires." <br />" ;108 109 //================= reecriture de l'entete ===============================110 $match=array("<",">");111 $string=array("<",">") ;116 $infos_message .= "<hr> Theme :" . ($args['theme'] ) ."<br />"; 117 $infos_message .="nombre de destinataire:".$nb_destinataires." <br />" ; 118 119 //================= reecriture de l'entete =============================== 120 $match=array("<",">"); 121 $string=array("<",">") ; 112 122 113 if ( $nb_destinataires == 1 && $mailto != "" )114 {115 $infos_message .="--> Mailto: " . $mailto." \n" ;123 if ( $nb_destinataires == 1 && $mailto != "" ) 124 { 125 $infos_message .="--> Mailto: " . $mailto." \n" ; 116 126 117 if ($mailto != "" )118 {119 120 $mailto = $mailto ." \n" ;121 $headers = preg_replace('/.*Bcc(.*).\n/i', '', $headers);122 $headers = preg_replace('/.*Cc(.*).\n/i', '', $headers);127 if ($mailto != "" ) 128 { 129 130 $mailto = $mailto ." \n" ; 131 $headers = preg_replace('/.*Bcc(.*).\n/i', '', $headers); 132 $headers = preg_replace('/.*Cc(.*).\n/i', '', $headers); 123 133 124 134 125 }126 //=============================================================================135 } 136 //============================================================================= 127 137 128 138 129 if (!empty($args['Bcc']) ) $infos_message .="Bcc: " . memo_var($args['Bcc']) ." \n";130 if (!empty($args['Cc']) ) $infos_message .="Cc: " . memo_var($args['Cc'])." \n" ;131 $infos_message .="Mailto: [" . $mailto . "]"." \n".$headers;139 if (!empty($args['Bcc']) ) $infos_message .="Bcc: " . mail_supervisor::Memo_Var($args['Bcc']) ." \n"; 140 if (!empty($args['Cc']) ) $infos_message .="Cc: " . mail_supervisor::Memo_Var($args['Cc'])." \n" ; 141 $infos_message .="Mailto: [" . $mailto . "]"." \n".$headers; 132 142 133 }else{134 //=== plusieurs destinataires ===========135 $cl_list_mail="";136 137 if ($mailto !="") $infos_message .="To: " . $mailto . " "." /n" ;138 if (!empty($args['Cc'])) {139 $ret= corrige_header('Cc',$headers,$args,$cl_list_mail);140 $headers = $ret->headers;141 $infos_message .="Cc: " . ( $ret->list_mail)." <br />" ;142 }143 if (!empty($args['Bcc'])){144 $ret = corrige_header('Bcc',$headers,$args,$cl_list_mail);143 }else{ 144 //=== plusieurs destinataires =========== 145 $cl_list_mail=""; 146 147 if ($mailto !="") $infos_message .="To: " . $mailto . " "." /n" ; 148 if (!empty($args['Cc'])) { 149 $ret= corrige_header('Cc',$headers,$args,$cl_list_mail); 150 $headers = $ret->headers; 151 $infos_message .="Cc: " . ( $ret->list_mail)." <br />" ; 152 } 153 if (!empty($args['Bcc'])){ 154 $ret = corrige_header('Bcc',$headers,$args,$cl_list_mail); 145 155 146 $headers = $ret->headers ;147 $infos_message .="Bcc: " . ( $ret->list_mail) ." <br />";148 }156 $headers = $ret->headers ; 157 $infos_message .="Bcc: " . ( $ret->list_mail) ." <br />"; 158 } 149 159 150 $infos_message .= " " ; 151 } 152 // $infos_message .= $content ; 153 //============================================================================= 154 if ($mails_options[check_header_text]=='on') { 155 156 $texte = "This is a multi-part message in MIME format.\n"; 157 158 $texte .= "-----=".$conf_mail['boundary_key']."\n"; 159 $texte .= "Ceci est un message est au format MIME.\n"; 160 $texte .= 'Content-Type: text/plain; charset="UTF-8"'."\n"; 161 $texte .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 162 $texte .= $mails_donnees['header_text']; // A voir texte brut... 163 164 $texte .= "\n\n"; 165 166 $content =$texte .$content ; 167 } 168 169 $ret=false; 170 171 //======== Non mise en quarantaine ============= 172 ob_start(); 173 $ret = false; 174 if ($nb_destinataires > 0) { 175 // corrige erreur 'mail dropped, bare LF found' 176 $content = str_replace("\n.", "\n..", $content); 177 $headers = str_replace("\n.", "\n..", $headers); 178 $subject = str_replace("\n.", "\n..", $subject); 179 $mailto = str_replace("\n.", "\n..", $mailto); 180 $ret = mail($mailto, $subject, $content, $headers); 181 182 }else{ 183 $message .= l10n('Sv_no_receiver_available'); 184 } 185 $message .= ob_get_contents(); 186 ob_end_clean(); 187 $mails_donnees['message']=$message; 188 Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto); 189 190 191 192 } else { 193 194 //================== Est en quarantaine ======================= 195 $erreur_message .= l10n('Sv_To_day_is')."<br />"; 196 if ($alerte_spam ) { 197 $type="Spams"; 198 199 $d1=$mails_donnees['nb_spams'] . ' \\ ' . $mails_donnees['nb_spams_maxi']; 200 $d2=$mails_donnees['nb_spams']; 201 $d3= $mails_donnees['rest_spam']; 202 $d4=time()+$d3 ; 203 } 204 205 if ($alerte_mail) { 206 $type="Mails"; 207 208 $d1=$mails_donnees['nb_mails']. ' \\ ' . $mails_donnees['nb_mails_maxi'];; 209 $d2=$mails_donnees['date_mail']; 210 $d3= $mails_donnees['rest_mail']; 211 $d4=time()+$d3 ; 212 213 214 } 215 if ($alerte) { 160 $infos_message .= " " ; 161 } 162 // $infos_message .= $content ; 163 //============================================================================= 164 if ($mails_options['check_header_text']=='on') { 165 $texte = "This is a multi-part message in MIME format.\n"; 166 $texte .= "-----=".$conf_mail['boundary_key']."\n"; 167 $texte .= "Ceci est un message est au format MIME.\n"; 168 $texte .= 'Content-Type: text/plain; charset="UTF-8"'."\n"; 169 $texte .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 170 $texte .= $mails_donnees['header_text']; // A voir texte brut... 171 $texte .= "\n\n"; 172 $content =$texte .$content ; 173 } 174 175 $ret=false; 176 //======== Non mise en quarantaine ============= 177 ob_start(); 178 $ret = false; 179 if ($nb_destinataires > 0) { 180 // corrige erreur 'mail dropped, bare LF found' 181 $content = str_replace("\n.", "\n..", $content); 182 $headers = str_replace("\n.", "\n..", $headers); 183 $subject = str_replace("\n.", "\n..", $subject); 184 $mailto = str_replace("\n.", "\n..", $mailto); 185 if( $envoie_ok) $ret = mail($mailto, $subject, $content, $headers); 186 187 }else{ 188 $message .= l10n('Sv_no_receiver_available'); 189 } 190 $message .= ob_get_contents(); 191 ob_end_clean(); 192 $mails_donnees['message']=$message; 193 Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto); 194 } else { 195 //================== Est en quarantaine ======================= 196 $erreur_message .= l10n('Sv_To_day_is')."<br />"; 197 if ($alerte_spam ) { 198 $type="Spams"; 199 $d1=$mails_donnees['nb_spams'] . ' \\ ' . $mails_donnees['nb_spams_maxi']; 200 $d2=$mails_donnees['nb_spams']; 201 $d3= $mails_donnees['rest_spam']; 202 $d4=time()+$d3 ; 203 } 204 if ($alerte_mail) { 205 $type="Mails"; 206 $d1=$mails_donnees['nb_mails']. ' \\ ' . $mails_donnees['nb_mails_maxi'];; 207 $d2=$mails_donnees['date_mail']; 208 $d3= $mails_donnees['rest_mail']; 209 $d4=time()+$d3 ; 210 } 211 if ($alerte) { 216 212 $type="Spams(Quarantaine)"; 217 $d1=$mails_donnees['nb_spams'] . ' \\ ' . $mails_donnees['nb_spams_maxi']; 218 $d2=$mails_donnees['date_quarantaine']; 219 $d3= $mails_donnees['reste']; 220 $d4=time()+$d3 ; 221 } 222 223 224 $d2=date(l10n('Sv_formatdate'),$d2); 225 $d3=int_to_heure($d3) ; 226 $d4=date(l10n('Sv_formatdate'),$d4); 227 228 if ($alerte_mail) { 229 $erreur_message .='<br />'.sprintf(l10n('Sv_alerte_mail %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />'; 230 }else{ 231 $erreur_message .='<br />'.sprintf(l10n('Sv_mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />'; 232 233 } 234 $infos_message .= l10n('Sv_mail_not_send'); 235 236 } 237 sauve_donnees(); 238 return true ; 213 $d1=$mails_donnees['nb_spams'] . ' \\ ' . $mails_donnees['nb_spams_maxi']; 214 $d2=$mails_donnees['date_quarantaine']; 215 $d3= $mails_donnees['reste']; 216 $d4=time()+$d3 ; 217 } 218 $d2=date(l10n('Sv_formatdate'),$d2); 219 $d3=int_to_heure($d3) ; 220 $d4=date(l10n('Sv_formatdate'),$d4); 221 if ($alerte_mail) { 222 $erreur_message .='<br />'.sprintf(l10n('Sv_alerte_mail %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />'; 223 }else{ 224 $erreur_message .='<br />'.sprintf(l10n('Sv_mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />'; 225 } 226 $infos_message .= l10n('Sv_mail_not_send'); 227 } 228 mail_supervisor::sauve_donnees(); 229 mail_supervisor::affiche_message(); 230 return true ; 239 231 } 240 232 //=========================================================================================== 241 function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto) 242 { 233 function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto){ 243 234 global $conf, $user, $conf_mail,$mails_options,$mails_donnees , $template,$page ,$infos_message,$erreur_message,$args,$lang, $lang_info; 244 245 246 247 $match=array("<",">"); 235 $match=array("<",">"); 248 236 $string=array("<",">") ; 249 237 //Warning: mail() has been disabled for security reasons … … 266 254 $headers , 267 255 $nb_destinataires ); 268 //=============== La fonction mail retourneeune erreur ========================= 269 270 256 //=============== La fonction mail retourne une erreur ========================= 271 257 } 272 258 … … 288 274 $mails_donnees['date_quarantaine']= time() ; 289 275 $mails_donnees['quarantaine']= true ; 290 $infos_message .= memo_var($mails_donnees);276 $infos_message .= mail_supervisor::Memo_Var($mails_donnees); 291 277 } 292 293 278 } 294 279 $ret=true; 295 return $ret ; 296 280 return $ret ; 297 281 } 298 299 //==========================================================================================300 add_event_handler('get_admin_plugin_menu_links', 'admin_menu');301 function admin_menu($menu)302 {303 array_push($menu, array('NAME' => 'Mail_Superv',304 'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')));305 return $menu;306 }307 //==========================================================================================308 add_event_handler('loc_after_page_header','affiche_spam' );//309 function affiche_spam ()310 311 {312 include_once (MAIL_SUPERV_PATH.'include/fonctions.php');313 314 affiche_message();315 316 }317 include_once (MAIL_SUPERV_PATH.'include/fonctions.php');318 $mails_options = explode("," , $conf['mail_superv']);319 320 //==========================================================================================321 if ($mails_options[set_id]=='on' ) {322 add_event_handler('register_user_check', 'Test_spam_g', EVENT_HANDLER_PRIORITY_NEUTRAL +2 , 2);323 }324 function Test_spam_g ($err, $user)325 {326 327 if (count($err)!=0 ) return $err ;328 if ( !isset($_POST['submit_add']) && !isset($_POST['submit']) ) return $err ;329 //Liableelard330 include_once (MAIL_SUPERV_PATH.'include/fonctions.php');331 332 if ( isset($_POST['submit'])) {333 $mail = $_POST['mail_address'] ;334 $user_name = $_POST['login'] ;335 }else{336 $mail = $user['email'];337 $user_name = $user['username'];338 }339 $user_name =""; // suppression du test sur user name.340 $ip='0';341 342 if (test_spam($ip,$user_name ,$mail ))343 {344 //if (test_spam($ip,$user_name ,"" )) {345 // $err[] = $user_name . " ". l10n('Sv_is_a_login_spam') ;346 // }else347 $err[] = $user_name . " : " .$mail . " ". l10n('Sv_is_a_spam') ;348 }349 350 return $err ;351 }352 353 354 282 ?>
Note: See TracChangeset
for help on using the changeset viewer.