source: extensions/Mail_supervisor/main.inc.php @ 4023

Last change on this file since 4023 was 4023, checked in by cljosse, 15 years ago

[mail_supervisor] set Plugin URI:http://piwigo.org/ext/extension_view.php?eid=315

File size: 7.7 KB
Line 
1<?php
2/*
3Plugin Name: Mail supervisor
4Version: 1.0.1
5Description:  Mail supervisor surveille l'envoie des mails.
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315
7Author: cljosse
8Author URI:http://cljosse.e3b.org
9*/
10
11
12if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
13define('mail_superv_DIR' , basename(dirname(__FILE__)));
14define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
15include_once (MAIL_SUPERV_PATH.'include/constants.php'); 
16include_once (MAIL_SUPERV_PATH.'include/fonctions.php'); 
17
18/*
19EVENT_HANDLER_PRIORITY_NEUTRAL  */
20
21add_event_handler('send_mail', 'clj_mail',EVENT_HANDLER_PRIORITY_NEUTRAL - 1 , 6);
22
23function clj_mail($result, $mailto, $subject, $content, $headers, $args)
24{
25    global $conf, $user, $lang_info,  $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message; 
26        // lecture config table -------------
27
28
29        $mails_options = explode("," , $conf['mail_superv']);
30       
31        // lecture données       -------------
32    $mails_données = Get_Datas();
33       
34        $nb_mails         =     $mails_données['nb_mails'] ;
35        $next_day  =  $mails_données['date_mail'] ;
36       
37        $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("&lt;","&gt;") ;
46        $search=array("D","H","M","S","W");
47        $replace=array(" day"," Hour"," minute"," second"," week");
48       
49$header_message='<pre>
50Destinataire :'.$mailto.'
51Headers      :
52'.str_replace( $match,$string, $headers).'
53Sujet        :'.$subject.'
54</pre>'; 
55
56  $nb_destinataires=0;
57 if ($mailto<>"" )  $nb_destinataires +=1; 
58   //================= réécriture de l'entête ===============================
59
60if ($mails_options[0] == 'on') {
61        if ($mailto=="")        $mailto=$conf_mail['email_webmaster'];
62}
63if ($mails_options[1] == 'on') { 
64                if (!empty($args['Cc']))
65                {
66                  $nb_destinataires += count($args['Cc']);
67                  $headers= corrige_header('Cc:',$headers);
68                }
69                if (!empty($args['Bcc']))
70                {
71                  $nb_destinataires += count($args['Bcc']);
72                  $headers      = corrige_header('Bcc',$headers);
73                }
74
75  }
76
77if ($mails_options[2]=='on')   {
78
79        $texte = "This is a multi-part message in MIME format.\n"; 
80       
81        $texte .= "-----=".$conf_mail['boundary_key']."\n"; 
82        $texte .= "Ceci est un message est au format MIME.\n"; 
83        $texte .= 'Content-Type: text/plain; charset="UTF-8"'."\n"; 
84        $texte .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
85        $texte .= $mails_données['header_text']; // A voir texte brut...
86           
87                $texte .= "\n\n"; 
88       
89                $content =$texte .$content ;
90}
91
92       
93$ret=false;
94 if (    ($mails_données['quarantaine']=="false") ) 
95  {
96        //======== Non mise en quarantaine =============
97
98                ob_start();
99                        $ret = mail($mailto, 'Plugin'.$subject, $content, $headers);
100                        $message = ob_get_contents();
101        ob_end_clean();
102               
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 ;
116                        $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&eacute;pass&eacute; 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 &agrave; retourn&eacute;e [false]  ------<br />';
140                                        $erreur_message .='-------- MESSAGE erreur : -------------<br />';
141                                        $erreur_message .=$message ;                            // Bad recipient address syntax
142                                $pos1 = strpos(strtolower($message), 'bad recipient address syntax');
143                                if (  !($pos1 === false) ){
144                                $erreur_message .='D&eacute;tection de : Bad recipient address syntax .';
145                                        $erreur_message .='V&eacuterifiez 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                        }
173                        else
174                        {
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&eacute;pass&eacute; le nombre de spmas admissibles. <br /> <br />";
182                                }
183                        $erreur_message .="<br> Detection $message <br />".
184                                "Nombre de spams d&eacute;tect&eacutes; ".$mails_données['nb_spams'];
185                        }
186 
187        }else{
188                //======== Mise en quarantaine       =============
189$erreur_message =  '<br />
190Nous 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&eacute;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&eacute;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&ccedil;u.:<br />". $mails_données['message']. "<br /> ";
207          $ret = "break";
208 }
209
210  sauve_données();
211 $ret=true;
212 
213 return $ret ;
214 
215}
216
217//==========================================================================================
218function admin_menu($menu)
219{
220    array_push($menu, array('NAME' => 'Mail_Superv',
221      'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')));
222    return $menu;
223}
224
225
226add_event_handler('get_admin_plugin_menu_links', 'admin_menu');
227//add_event_handler('loc_end_page_tail', 'affiche_message');
228add_event_handler('loc_after_page_header', 'affiche_message');
229
230?>
Note: See TracBrowser for help on using the repository browser.