source: extensions/Mail_supervisor/include/fonctions.php @ 4361

Last change on this file since 4361 was 4361, checked in by cljosse, 14 years ago

[mail_supervisor] update function test_spam.

File size: 25.6 KB
Line 
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
24if (!defined('PHPWG_ROOT_PATH'))
25{
26  die('Hacking attempt!');
27}
28
29if (!defined('MAIL_SUPERV_PATH')) define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
30
31
32 if (!isset($_COOKIE[session_name()]))
33{
34
35
36
37}
38include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
39include_once(PHPWG_ROOT_PATH.'include/functions.inc.php');
40include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
41global $lang ;
42
43
44include_once (MAIL_SUPERV_PATH.'include/function_test_send.php'); 
45
46
47    load_language('plugin.lang', MAIL_SUPERV_PATH);
48
49
50global  $superv_champs , $superv_type ,$superv_bl_champs , $superv_bl_type ; 
51         
52//==========================================================
53function sauve_options()
54{
55global $mails_options ;
56 if ( isset($mails_options) )
57        {
58          if ( count($mails_options) > 6 ) 
59           {
60                $valeurs = implode( ',',$mails_options);
61                $query = '
62                UPDATE '.CONFIG_TABLE.'
63                SET value="'. $valeurs . '"
64                WHERE param = "mail_superv"
65                LIMIT 1';
66                        pwg_query($query);
67          }
68        }
69}
70//=================================================================================
71function sauve_données()
72{
73
74global $mails_données,$superv_champs,$superv_type,$erreur_message ;
75//=====================================================================
76        $clefs = $superv_champs ;
77        $valeurs = array();
78
79foreach ( $clefs as $champ)
80   {
81     $champ = trim($champ);
82     
83         if ( isset($mails_données[  $champ ]) ) {
84           $sep= (is_string($mails_données[ $champ ])) ? '"' : '' ;
85       array_push($valeurs , "`".$champ."`" . ' = ' . $sep . $mails_données[  $champ ] . $sep)  ;
86         }else{
87         
88            array_push($valeurs , "`".$champ."`" . ' = ' .  "0"  )  ;
89         }
90    }
91$valeurs = implode(", ",$valeurs) ;
92//=====================================================================
93$query = '
94        UPDATE '.MAIL_SUPERV_TABLE.'
95        SET '. $valeurs .'
96                WHERE `id` = 1 LIMIT 1 ';
97                ;
98        ob_start();
99                $ret=  pwg_query($query)    ;
100                $m= ob_get_contents();
101        ob_end_clean() ;
102        $erreur_message .= $m ;
103
104}
105         
106//=================================================================================
107function affiche_message()
108{
109 global $template,$infos_message,$erreur_message, $user ;;
110
111global $mails_options,$conf,$lang ;
112
113$mails_options = explode("," , $conf['mail_superv']);
114
115 if ( count($_POST)==5 || count($_POST)==0 ) {
116        if (kill_list())
117                 {
118                  $erreur_message .= "<BR />".l10n('is_a_spam') ;
119                 if ($mails_options[4] == 'on' ){
120               
121//[status] => guest
122//[status] => normal
123//[status] => webmaster
124                 
125                        if ($user['status'] != 'webmaster'  )
126                                if (!isset($_GET['admin'])) {
127                                                 die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
128                                }elseif   ($_GET['admin'] != 'piwigo')
129                                        {
130                                                 die('blacklist Hacking attempt!');
131                                        }
132           }
133        }
134 }       
135
136 //==============================================================
137  if (isset($erreur_message))
138                {       
139 
140                if ($erreur_message <> "")
141                        {
142                            $erreur_message=str_replace("\n",'<br />',$erreur_message) ;
143                                $template->assign('errors',$erreur_message);
144                                $erreur_message="";
145                        }
146                }
147               
148       
149  if (isset($infos_message))
150                {       
151               
152                if ($infos_message <> "")
153                        {
154                                $infos_message=str_replace("\n",'<br />',$infos_message) ;
155                                $template->assign('infos',$infos_message);
156                                $infos_message="";
157                        }
158                }
159                //=============================================================
160       
161       
162return;         
163               
164}
165
166function Get_geo()
167{
168global $ip,$pays,$region,$ville, $latitude ,$longitude,$mails_options;
169         //===================================================================================
170        $info_geo = pwg_get_session_var('info_geo');
171       
172        if (count($info_geo) > 0) 
173        {
174               
175                $pays  = $info_geo[0];
176                $region  = $info_geo[1];
177                $ville  = $info_geo[2];
178                $latitude = $info_geo[3];
179                $longitude = $info_geo[4];
180                $ip = $info_geo[5];
181                return true;
182        }
183//=======================================================================
184
185 if (isset($_POST['pays'])) { 
186                        $pays = isset($_POST['pays']) ? $_POST['pays'] : "";
187                        $region =  isset($_POST['region']) ? $_POST['region'] :"";                             
188                        $ville = (isset($_POST['ville']))   ? $_POST['ville']: ""; 
189                        $latitude =  isset($_POST['latitude']) ? $_POST['latitude'] : "";       
190                        $longitude =  isset($_POST['longitude']) ? $_POST['longitude'] : "";
191                               
192                        $info_geo = array(   $pays ,$region , $ville ,$latitude, $longitude,$_SERVER['REMOTE_ADDR']  );
193                        pwg_set_session_var('info_geo', $info_geo); 
194                        return true;
195 
196 }else{
197
198            $result="";
199            $src =  "http://j.maxmind.com/app/geoip.js" ;
200        if ( !clj_fetchRemote($src , $result,1))
201                { 
202?>
203<script language="JavaScript" type="text/javascript">
204            var pays     =  "EARTH";
205                        var ville     =  "NOWHERE";
206                        var region    =  "UNIVERS";
207                        var latitude  =  '0';
208                        var longitude =  '0';
209</script>
210<?php     
211       
212                }else{
213               
214       
215?>
216<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js" type="text/javascript" >
217</script>         
218<script language="JavaScript" type="text/javascript">
219            var pays     =  geoip_country_name();
220                        var ville     =  geoip_city();
221                        var region    =  geoip_region_name() ;
222                        var latitude  =  geoip_latitude() ;
223                        var longitude =  geoip_longitude() ;
224                       
225</script>
226<?php
227                }
228       
229?>             
230<form action="" method="post" name="form_connexion" id="form_connexion" style="visibility:hidden">
231<script language="JavaScript" type="text/javascript">                  
232                document.write ("<input name=\"pays\"  type=\"text\" value =  "+ pays + "  id = \"pays\"  > ");
233                document.write ("<input name=\"ville\"  type=\"text\" value = "+ ville + "  id = \"ville\"   >  ");
234                document.write ("<input name=\"region\"  type=\"text\" value =  "+ region + "   id = \"region\"   > ");
235                document.write ("<input name=\"latitude\"  type=\"text\" value =  "+ latitude + " id = \"latitude\"   > ");
236                document.write ("<input name=\"longitude\"  type=\"text\" value = "+ longitude + " id = \"longitude\"  >  ");
237</script>       
238
239</form >       
240<script language="JavaScript" type="text/javascript"> 
241  document.getElementById("form_connexion").submit();
242</script>
243<?php   
244   
245 }
246//=====================================================================================         
247}
248
249//=================================================================================
250function Get_Datas()
251{
252global $superv_champs ;
253$champs = implode(",",$superv_champs );
254    $query = "SELECT ".$champs."
255    FROM ".MAIL_SUPERV_TABLE."
256        ;";
257                         $result = @pwg_query($query);
258 
259        if (!$result) {
260                                        vérif_base();
261                                        $result = @pwg_query($query);
262                                        }
263
264                                       
265    $data = mysql_fetch_array($result,MYSQL_ASSOC);
266        //====================================================================================
267        $next_day = Str_To_Time( $data['nb_mails_periode'], $data['date_mail'] );;
268        $data['rest_mail']=    $next_day - time() ;
269
270        $next_day =  + Str_To_Time( $data['nb_spams_periode'],$data['date_spam']);
271        $data['rest_spam']=  $next_day - time() ;
272
273
274        $next_day = Str_To_Time($data['quarantaine_periode'] ,$data['date_quarantaine']);       
275       
276        if ($data['quarantaine'] == 'true' ) {
277                        $data['reste'] =   ( $next_day )-time() ;
278        }else{
279                        $data['reste'] = 0;
280        }
281       
282         return $data;
283}
284//===============================================
285
286function corrige_header($Carbonne,$headers,$args)
287        {
288        global $mails_options,$conf_mail,$mailto,$infos_message;
289
290 if (!empty($args[$Carbonne]))
291         {
292 
293                if ( count($args[$Carbonne]) > 0 ) 
294                {
295                 if ($mails_options[1] == 'on') {
296                        $list_mail  = str_replace(","," ,",get_strict_email_list(implode(',', $args[$Carbonne])))." \n" ;
297                        $headers = preg_replace('/.*'.$Carbonne.'(.*).\n/i', $Carbonne.': '.$list_mail, $headers);
298                 }
299                }
300        } else {
301        // Raz Bcc, Cc dans headers
302                        $headers = preg_replace('/.*'.$Carbonne.'(.*).\n/i', "" , $headers);
303        }
304               
305               
306return $headers;
307
308               
309        }
310       
311function int_to_heure($int)
312{
313
314        $delta=(7*24*60*60) ;
315        $week = (int) ($int/$delta); 
316        $int= $int-($week*$delta) ; 
317
318        $delta=(24*60*60) ;
319        $day= (int) ($int/$delta); 
320        $int=$int-($day*$delta);
321
322        $delta=(60*60) ;
323        $heures=(int) ($int/$delta);
324        $int=$int-($heures*$delta);
325
326        $delta=(60) ;
327        $minutes=(int) ($int/$delta);
328        $int= $int - ($minutes*$delta);
329
330        $secondes=(int) ($int);
331        $day      = substr ('00'.    $day,-2,2);   
332        $heures   = substr ('00'. $heures,-2,2);   
333        $minutes  = substr ('00'.$minutes,-2,2);
334        $secondes = substr ('00'.$secondes,-2,2);
335
336   
337if ($week > 0 )
338{
339        return $week. " " .l10n('Week'). " " .  $day . " " .l10n('Day'). "s ". $heures . " ". l10n('Hour'). "s " .    $minutes. " " .l10n('minute'). "s ".  $secondes." " .l10n('seconde')."s";
340}
341return $day . " " .l10n('Day'). "s ". $heures . " ". l10n('Hour'). "s " . $minutes. " " .l10n('Minute'). "s ".  $secondes." " .l10n('Seconde')."s";
342
343}       
344
345function memo_var($variables)
346{
347                ob_start();
348                echo '<pre>';
349                print_r($variables);
350                echo '</pre>';
351                $m= ob_get_contents();
352
353        ob_end_clean();
354                return $m;
355               
356}
357   
358
359       
360function vérif_base()
361{
362
363global $lang,$superv_champs,$superv_type,$superv_bl_champs,$superv_bl_type;
364    load_language('plugin.lang', MAIL_SUPERV_PATH);
365//==============================================================================               
366    create_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type) ;
367        ajust_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type)  ; 
368//==============================================================================               
369        create_table(MAIL_SUPERV_TABLE,$superv_champs,$superv_type) ;
370        ajust_table(MAIL_SUPERV_TABLE,$superv_champs,$superv_type)  ;
371//==============================================================================               
372    $valeurs= array (   1,
373                                                0,
374                           time(),
375                         2000,
376         '"1 '.l10n('Week').'"' ,
377                            0,
378                  time(),
379                           10,
380          '"2 '.l10n('Day').'"',
381                       '"false"',
382                time(),
383          '"2 '.l10n('Day').'"',
384       
385                      '"Init"',
386   '"'.l10n('supervisor').'"',
387        '"'.l10n('hello').'"',
388         )
389        ;
390//==================================================================================
391        ajout_ligne(MAIL_SUPERV_TABLE,$superv_champs, $valeurs,false ) ;
392       
393
394}
395
396//=========================================
397function Get_colonnes_de($table)
398{
399    $query = 'DESC '.$table.';';
400    $result = mysql_query($query);
401    $columns_of= array();
402    while ($row = mysql_fetch_row($result))
403    {
404      array_push($columns_of, $row[0]);
405    }
406 
407  return $columns_of;
408}
409
410function get_liste($group_id)
411{
412global $conf ;
413
414  $query = '
415SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
416                u.'.$conf['user_fields']['username'].' AS username,
417                u.'.$conf['user_fields']['email'].' AS email,
418                ui.status,
419                ui.adviser,
420                ui.enabled_high,
421                ui.level
422  FROM '.USERS_TABLE.' AS u
423    INNER JOIN '.USER_INFOS_TABLE.' AS ui
424      ON u.'.$conf['user_fields']['id'].' = ui.user_id
425    LEFT JOIN '.USER_GROUP_TABLE.' AS ug
426      ON u.'.$conf['user_fields']['id'].' = ug.user_id
427  WHERE ug.group_id='.$group_id.' ';
428
429
430 
431 $groups=array();
432  $datas = pwg_query($query);
433 
434 
435  if (!empty($datas))
436  {
437    while ($group = mysql_fetch_array($datas,MYSQL_ASSOC))
438    {
439
440       
441      if (!empty($group['email']))
442      {
443        array_push($groups, format_email($group['username'], $group['email'] ));
444      }
445    }
446  } 
447  return $groups ;
448 
449}
450//=================================================================================
451
452function create_table($nom_table,$champs,$types)  //MAIL_SUPERV_TABLE
453{
454        $i=0;
455        $valeurs=array();
456foreach ( $champs as $champ)
457   {
458        $champ = trim($champ);
459                array_push($valeurs , " `".$champ."`" . '  ' . $types[ $i] )  ;
460                $i +=1;
461    }
462
463
464       
465        if ( count($valeurs) == 0) return ;
466
467    $valeurs=implode(", ",$valeurs) ;
468        //===============================================================================
469                $query = "CREATE TABLE IF NOT EXISTS  `" . $nom_table . "` (". $valeurs . " , PRIMARY KEY  (`id` ) ) ;"; 
470                         if ( pwg_query($query) ) return ; 
471                                die("ERREUR CREATION ".$query);         
472     
473         
474}
475function ajust_table($nom_table,$champs,$types)  //MAIL_SUPERV_TABLE
476{
477global $infos_message ;
478$colonnes = Get_colonnes_de($nom_table);
479        $data =         $types ;
480        $i=0;
481        $valeurs=array();
482foreach ( $champs as $champ)
483   {
484     $champ = trim($champ);
485          if (!in_array( $champ,$colonnes)) {
486         array_push($valeurs , " ADD `".$champ."`" . '  ' . $data[  $i] )  ;
487         }
488         $i +=1;
489         
490    }
491//=============================================================================
492        if ( count($valeurs) == 0) return ;
493       
494  $infos_message .=  "AJUSTE TABLE : ". $nom_table . "<br />" . "NB (col) : ". count($colonnes) . memo_var($valeurs) . "<br />" ;
495       
496     $valeurs=implode(", ",$valeurs) ;
497        //===============================================================================
498                $query = "ALTER TABLE `" . $nom_table . "` ". $valeurs ;
499                        if (   pwg_query($query)) return ;           
500                die($query);
501}
502//==============================================================================       
503function ajout_ligne($nom_table,$champs,$valeurs,$force)
504{
505  if (!$force) {
506     $query = "
507                SELECT `id` , COUNT(`id`) as total
508                FROM `".$nom_table."`
509                ;";     
510          list($count) = mysql_fetch_row(pwg_query($query));
511
512               
513}else{
514
515        $count = 0 ;
516}
517 
518  if ($count == 0)
519  {
520      $n_champs=implode(",",$champs);
521      $n_valeurs=implode(",",$valeurs);
522           $query = "
523        INSERT INTO `".$nom_table."` (". $n_champs.")
524        VALUES ( ".     $n_valeurs .")";
525               
526                if (pwg_query($query)) return ;
527                die($query);
528               
529  }
530}
531//=====================================================================
532
533function Str_To_Time( $ajout,$init_date)
534{
535//========================================================
536  global $erreur_message;
537$a_ajouter=$ajout ;
538
539        $period_search=array("W","D","H","M","S");
540                       array_push($period_search,l10n('Week').'s',l10n('Day').'s',l10n('Hour').'s',l10n('Minute').'s',l10n('Seconde').'s');
541                               array_push($period_search,l10n('Week'),l10n('Day'),l10n('Hour'),l10n('Minute'),l10n('Seconde'));
542
543
544       
545        $period_match = array(' week ',' day ',' hour ',' minute ',' seconde ');       
546                        array_push($period_match,' week ',' day ',' hour ',' minute ',' seconde ');
547                        array_push($period_match,' week ',' day ',' hour ',' minute ',' seconde ');
548       
549
550       
551$a_ajouter = "+ " .  str_replace($period_search, $period_match, $a_ajouter) ;
552$a_ajouter=sup_double_espace($a_ajouter);
553
554$v1 = array('- ','+ ','week','day','hour','minute','seconde',' -',' +',' ');
555$v2 = array('-','+', (7*24*60*60) ,  (24*60*60),  (60*60),  60,1,'|-','|+',"*" );
556$new_valeur =  str_replace($v1,$v2,$a_ajouter) ;
557$new_valeur =  str_replace('++','+',$new_valeur ) ;
558
559$new_valeur = explode( "|",$new_valeur );
560$p = $init_date ;
561
562        //$new_valeur = $a_ajouter + $init_date ;
563        foreach($new_valeur as $nv)
564        {
565        $return = matheval($nv) ;
566                 if (strpos("error",$return)===false) {
567                    $p += $return ;
568                 }else {
569                 $erreur_message .= $return . " nv : " .  $nv ;
570                 }
571                       
572         
573        }
574return  $p ;
575 
576}
577//=====================================================================================
578function matheval($equation) 
579  { 
580
581  $return="error";
582
583 
584    $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation); 
585    $equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation); 
586    $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation); 
587    $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation); 
588       
589    if ( $equation == "" ) 
590    { 
591      $return = 0; 
592    }     else  { 
593       @eval("\$return=" . $equation . ";" ); 
594    }
595 return $return; 
596   
597  } 
598
599//======================================================================================
600function sup_double_espace($chaine){
601global $erreur_message;
602        $str_temp = $chaine." ";
603        $sep=" ";
604        $chaine = trim($chaine);
605        $existe = (strpos($sep.$sep,$chaine )===false) ;
606         while  ($existe ){
607         $str_temp = str_replace($sep.$sep, $sep, $chaine ); 
608                if($str_temp == $chaine ) return $chaine ;
609//                      $erreur_message .= memo_var($str_temp) ;
610                $chaine  = $str_temp;
611                        $existe =  (strpos($sep.$sep,$chaine )===false) ;
612                }
613        return $chaine;
614}
615
616
617
618function kill_list()
619{
620 //==================== TEST black_liste ============================================   
621 global $pays,$region,$ville,$ip ;
622 global $erreur_message,$infos_message,$conf;   
623 global $conf, $user, $page;
624 global $mails_options ;
625 global $superv_bl_champs,$superv_bl_type ; 
626 global $nb ;
627 
628if (count($mails_options) < 7 ) return false ;
629  Get_Geo();
630     $champs=implode(',',$superv_bl_champs);
631     $query = "
632                SELECT ".$champs.",COUNT(`ip`) as total
633                FROM `".MAIL_BLACK_LISTE_TABLE."`
634                    WHERE '".$ip."' LIKE `ip`
635                ;";     
636                 $result = @pwg_query($query);
637        if (!$result) {
638                                        vérif_base();
639                                        $result = @pwg_query($query);
640                                }
641        $datas = mysql_fetch_array($result,MYSQL_ASSOC);
642        $nb = $datas['total']; 
643//=======================================================================       
644
645if ($mails_options[5] == 'on')
646{
647 // $ip="94.102.63.13"; ' Spammeurs
648 // $ip="94.102.63.15";
649 // $mail=matusowraber93813@gmail.com ;
650 // $username=fretgpsolodens ;
651global $user_name,$mail_adresse;
652
653  if (test_spam($ip,$user['username'] ,$user['email']))
654  {
655
656  if ($nb==0) {
657        $valeurs=array( 'NULL',
658                            "'".$ip."'",
659                                        "'".$pays."'",
660                                        "'".$region."'",       
661                                        "'".$ville."'",
662                                        "'".$user['email']."'",
663                                        "'".$user['username']."'",     
664                                        $nb+1
665        );
666          ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,$nb==0) ;     
667        }else{ 
668       
669        $nb +=1;
670       
671                 $query ="
672                        UPDATE " . MAIL_BLACK_LISTE_TABLE . "
673                        SET ";
674                    if (isset($_POST['pays'])) 
675                 $query .= "   
676                        `pays` = '". $pays ."',
677                        `region` = '" . $region ."',
678                        `ville` = '" . $ville . "',
679                       
680                        ";
681                       
682                 $query .= "
683                    `adresse` = '".$user['email']."',           
684                        `fai` = '".$user['username']."',               
685                        `nb` = " . $nb . "
686                    WHERE '".$ip."' like `ip`
687                ";
688               
689                                pwg_query($query );     
690        }
691          $erreur_message .=  $mails_options[6] ." ".$user['username']." ".$user['email'] . ' -----> ' . l10n('black_list') ;
692        // die($nb." ".$ip." ".$user['username']." ".$user['email']); 
693        return true ;   
694
695    }
696 
697}
698 //==============================================================================
699 if ( $mails_options[6] == $ip ) return ($nb > 0) ;     
700   $mails_options[6] =   $ip ; 
701   sauve_options();
702 
703        if (  $nb > 0 )
704        {
705               $query = "
706                SELECT ".$champs.",COUNT(`id`) as total
707                FROM `".MAIL_BLACK_LISTE_TABLE."`
708                    WHERE '".$ip."' = `ip`
709                ;";     
710                 $result = @pwg_query($query);
711 
712        if (!$result) {
713                                        vérif_base();
714                                        $result = @pwg_query($query);
715                                        }
716            $datas = mysql_fetch_array($result,MYSQL_ASSOC);
717                 $nb = $datas['total']; 
718                 
719            $row  = mysql_fetch_row(pwg_query($query));
720            $nb =  ($row[7]);
721      $erreur_message .= $ip . ' | ' . $pays . ' | ' . $region . ' | ' . $ville . ' ' . $nb . ' ==> '; 
722 
723         if ($nb == 0)
724                 {
725                        $valeurs=array( 'NULL',
726                            "'".$ip."'",
727                                        "'".$pays."'",
728                                        "'".$region."'",       
729                                        "'".$ville."'",
730                                        "'".$user['email']."'",         
731                               "'".$user['username']."'",               
732                                        1
733              );
734                  ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,true) ;       
735                 
736                 } else {
737                  $nb += 1;
738         $query ="
739                        UPDATE " . MAIL_BLACK_LISTE_TABLE . "
740                        SET ";
741                if (isset($_POST['pays']))     
742                 $query .= "   
743                        `pays` = '". $pays ."',
744                        `region` = '" . $region ."',
745                        `ville` = '" . $ville . "',
746                        ";
747                 $query .= "   
748                    `adresse` = '".$user['email']."',
749                        `fai` = '".$user['username']."',                       
750                        `nb` = " . $nb . "
751                    WHERE '".$ip."' = `ip`
752                ";
753               
754                                pwg_query($query );     
755                                }
756        //================================================================================     
757               
758        }
759 
760
761return ($nb > 0) ;
762}
763//=====================================================================================
764function test_spam($ip =0,$user_name ='', $mail_adresse = "")
765{
766$buffer="";
767// fretgpsolodens
768$src =  "http://www.stopforumspam.com/api?";
769$type=array();
770$result="";
771if (strlen($ip)>3) { 
772//==================  Vérifie si l'IP est correct  ================================
773if (clj_is_ip($ip)){     
774     
775} else { 
776//==================  Vérifie si l'adresse mail est correcte  ================================
777      if( clj_is_mail($ip) ){ 
778              $mail_adresse=$ip ;
779              $ip="";
780         }
781         else
782         {
783//==================  Login  ================
784           $user_name=$ip;
785           $ip="";
786         }
787}   
788//=============================================================================
789}
790$user_name=str_replace(" ","%20",trim($user_name));
791if ($user_name==l10n('guest')) $user_name="";
792
793$mail_adresse =str_replace(" ","%20",trim($mail_adresse));
794
795if ( strlen($user_name) > 3)      $type[]="username=$user_name" ;
796if ( strlen($mail_adresse) > 3)   $type[]="email=".$mail_adresse ;
797if ( strlen($ip) > 3)   $type[]="ip=".$ip ; 
798 
799         foreach  ( $type as $fil )
800     {   
801           $resultat="";
802           if (  fetchRemote($src.$fil , $resultat,1))
803                  {
804                  $result .= $resultat.'<br />'  ; 
805                  }  else {
806                 
807                  }
808      }
809
810return !(strpos(  $result ,'yes' ) === false) ;
811 
812}
813//==================================================================
814function lire_fichier_distant($fichier)
815{
816 $buffer="";
817        $handle =  @fopen($fichier,"r"); 
818        if ($handle) {
819                       while (!feof($handle)) { 
820                       $buffer .= fgets($handle, 4096);
821                                  }   
822                                   fclose($handle);
823                                }
824                                 
825        return  $buffer ;
826
827}
828//================================================
829function clj_is_ip($ip)
830{
831if (ereg("^(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9])\.){1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9])\.){2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))$",$ip))    return true ;
832                 
833}
834
835function clj_is_mail($mail)
836{     
837  if(preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#' ,$mail)) return true ;     
838}         
839
840 
841function clj_fetchRemote($src, &$dest, $timeout=1, $user_agent='Piwigo', $step=0)
842{
843  // Try to retrieve data from local file?
844  if (!url_is_remote($src))
845  {
846    $content = @file_get_contents($src);
847    if ($content !== false)
848    {
849      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
850      return true;
851    }
852    else
853    {
854      return false;
855    }
856  }
857
858  // After 3 redirections, return false
859  if ($step > 3) return false;
860
861  // Initialize $dest
862  is_resource($dest) or $dest = '';
863
864  // Try curl to read remote file
865  if (function_exists('curl_init'))
866  {
867    $ch = @curl_init();
868    @curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
869    @curl_setopt($ch, CURLOPT_URL, $src);
870    @curl_setopt($ch, CURLOPT_HEADER, 1);
871    @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
872    @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
873    $content = @curl_exec($ch);
874    $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
875    $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
876    @curl_close($content);
877    if ($content !== false and $status >= 200 and $status < 400)
878    {
879      if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
880      {
881        return autoupdate_fetchRemote($m[1], $dest,$timeout, $user_agent, $step+1);
882      }
883      $content = substr($content, $header_length);
884      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
885      return true;
886    }
887  }
888
889  // Try file_get_contents to read remote file
890  if (ini_get('allow_url_fopen'))
891  {
892
893    $opts['http'] = array('timeout' => $timeout);
894    $ctx = stream_context_create($opts);
895    $content = @file_get_contents($src, 0, $ctx);
896    if ($content !== false)
897    {
898      is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
899      return true;
900    }
901  }
902
903  return false;
904}
905
906       
907?>
Note: See TracBrowser for help on using the repository browser.