Ignore:
Timestamp:
Mar 15, 2011, 3:39:19 PM (13 years ago)
Author:
cljosse
Message:

[Mail supervisor] add class.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/Mail_supervisor/main.inc.php

    r8917 r9702  
    22/*
    33Plugin Name: Mail supervisor
    4 Version: 1.4.4 Beta
     4Version: auto
    55Description: Mail supervisor surveille l'envoie des mails.
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315
     
    99*/
    1010if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    11 if (!defined('MAIL_SUPERV_DIR')) define('MAIL_SUPERV_DIR' , basename(dirname(__FILE__)));
     11if (!defined('mail_superv_DIR')) define('mail_superv_DIR' , basename(dirname(__FILE__)));
    1212if (!defined('MAIL_SUPERV_PATH')) define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
     13$MAIL_SUPERV_PATH_ABS=str_replace('\\','/',dirname(__FILE__) );
     14if (!defined('MAIL_SUPERV_PATH_ABS')) define(  'MAIL_SUPERV_PATH_ABS',   $MAIL_SUPERV_PATH_ABS."/");
     15global $conf,$mails_options ;
    1316include_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;
     17include_once(MAIL_SUPERV_PATH.'mail_super.inc.php');
     18$mail_supervisor = new mail_supervisor();
     19add_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//
     25include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 
     26//===============loc_begin_index==============loc_after_page_header=============================================================
     27add_event_handler('loc_after_page_header',  array(&$mail_supervisor,'init')  );
     28add_event_handler('loc_begin_page_tail',  array(&$mail_supervisor,'affiche_message')  );
     29
     30//==========================================================================================
     31add_event_handler('send_mail', 'clj_mail',EVENT_HANDLER_PRIORITY_NEUTRAL - 10, 6);
     32function 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 
    2238        // 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 ;
    4052//======== 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'  )                { 
    4962                          //---------- continuer si web master ----------
    50                         }else{
     63
     64                          }else{
    5165                                  if (!isset($_GET['admin'])) {
    5266                                                 die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
     
    5569                                                 die('blacklist Hacking attempt!');
    5670                                        }
    57                       return true;
     71                     
    5872                          }
    5973                         
    6074                        }
    61                        
    62                  }
     75
     76         return true;
     77                }
    6378        }
    64        
    65 
    6679        // lecture donnees       -------------
    67     $mails_donnees = Get_Datas();
     80 $mails_donnees = mail_supervisor::Get_Datas();
    6881 
    6982        $nb_mails         =     $mails_donnees['nb_mails'] ;
     
    91104       
    92105 
    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']);        }
    104114
    105115   
    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("&lt;","&gt;") ;     
     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("&lt;","&gt;") ;     
    112122       
    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" ;
    116126   
    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);
    123133               
    124134                       
    125                   }
    126      //=============================================================================
     135                                }
     136                    //=============================================================================
    127137             
    128138           
    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;             
    132142         
    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);
    145155         
    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                    }
    149159     
    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) {
    216212                        $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 ;
    239231}
    240232//===========================================================================================   
    241 function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto)
    242 {                       
     233function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto){                     
    243234         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("<",">");
    248236    $string=array("&lt;","&gt;") ;       
    249237//Warning: mail() has been disabled for security reasons
     
    266254        $headers ,
    267255        $nb_destinataires );
    268        //=============== La fonction mail   retourneeune erreur =========================               
    269 
    270                                
     256       //=============== La fonction mail retourne une erreur =========================         
    271257                                }       
    272258                               
     
    288274                                                $mails_donnees['date_quarantaine']= time()  ;   
    289275                                                $mails_donnees['quarantaine']= true    ;       
    290                                                 $infos_message .=memo_var($mails_donnees);
     276                                                $infos_message .= mail_supervisor::Memo_Var($mails_donnees);
    291277                                        }
    292 
    293278                        }
    294279 $ret=true;
    295  return $ret ;
    296  
     280 return $ret ;
    297281}
    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 //Liableelard
    330 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                 // }else                 
    347                     $err[] = $user_name . " : " .$mail . " ". l10n('Sv_is_a_spam')   ;
    348                  }
    349                  
    350 return $err ;
    351 }
    352 
    353 
    354282?>
Note: See TracChangeset for help on using the changeset viewer.