source: extensions/HistoryIPExcluder/branches/2.4/main.inc.php @ 15762

Last change on this file since 15762 was 15762, checked in by Eric, 12 years ago

merge r15761 from trunk to branch 2.4

  • Property svn:eol-style set to LF
File size: 4.8 KB
RevLine 
[5099]1<?php
2/*
[5162]3Plugin Name: History IP Excluder
[15762]4Version: 2.4.2
[10045]5Description: Permet l'exclusion d'une IP ou d'une plage d'IP de l'historique et de les blacklister à l'inscription / Excludes one IP or a range of IP from the history and to blacklist them on registration
[10042]6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=147
[5099]7Author: Nicco, Eric
8Author URI: http://gallery-nicco.no-ip.org - http://www.infernoweb.net
9*/
10
[5615]11/*
12:: HISTORY
13
141.0.x to 1.6.x          - Plugin only for PWG 1.7.x
15
162.0.0             - Compliance with Piwigo 2.0.x
17
182.1.0             - Compliance with Piwigo 2.1.x
19                  - Multiple database support
20                  - Removing "nbc_" prefix in plugin code and display in piwigo's plugin manager
21                  - Displaying the good plugin name and current version in admin panel
[6758]22                 
232.1.1             - Bug 1792 fixed (Thx to TOnin)
24                  - Bug 1511 fixed - New function to blacklist excluded IPs or ranged IPs for registration
[5615]25
[9870]262.2.0             - Compliance with Piwigo 2.2.x
27                  - Plugin directory renamed from nbc_HistoryIPExcluder to HistoryIPExcluder
28
[9882]292.2.1             - Bug fixed on plugin upgrade from 2.1.x version
30
[10042]312.2.2             - Another bug fixed on plugin upgrade from 2.2.x version
32
[10045]332.2.3             - Improved update mechanism. When no structural update of database is necessary, it sets the correct version number in plugin's configuration
[12150]34
[12288]352.3.0             - Piwigo 2.3.0 compliant (alpha release for Piwigo 2.3.0RC)
[12150]36                  - Use data serialization for database storage
37                  - Use pwg_db_real_escape_string() instead of addslashes()
[14222]38
392.4.0             - Piwigo 2.4 compliant
40                  - Add pl_PL translation (thanks to larky)
[15050]41
[15762]422.4.1             - Add  cs_CZ translation (thanks to lanius and ZdenekMaterna)
43                  - Add  ru_RU translation (thanks to nadusha)
44
452.4.2             - Update ru_RU translation (thanks to nadusha)
[14222]46                 
[5615]47--------------------------------------------------------------------------------
48*/
49
[5099]50if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
51
52if (!defined('HIPE_PATH')) define('HIPE_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
53
[5615]54include_once (HIPE_PATH.'/include/functions.inc.php');
55
[5099]56load_language('plugin.lang', HIPE_PATH);
57
58add_event_handler('get_admin_plugin_menu_links', 'HIPE_admin_menu');
59
60/* Set the administration panel of the plugin */
61function HIPE_admin_menu($menu)
62{
[5162]63// +-----------------------------------------------------------------------+
64// |                      Getting plugin name                              |
65// +-----------------------------------------------------------------------+
[5615]66  $plugin =  HIPE_infos(HIPE_PATH);
[5162]67  $name = $plugin['name'];
68 
[5099]69  array_push($menu,
70    array(
[5162]71      'NAME' => $name,
[9870]72      'URL' => get_root_url().'admin.php?page=plugin-'.basename(HIPE_PATH)
[5099]73    )
74  );
75   
76  return $menu;
77}
78
[9870]79// IP exclusion from logs
80add_event_handler('pwg_log_allowed', 'HIPE_IP_Filtrer');
[5099]81
82function HIPE_IP_Filtrer($do_log)
83{
84  global $conf;
85
[5162]86  $conf_HIPE = explode("," , $conf['HistoryIPExcluder']);
[5099]87
[5113]88  if (!$do_log)
[5099]89    return $do_log;
90  else
91  {
[5113]92    $IP_Client = explode('.', $_SERVER['REMOTE_ADDR']);
[5099]93 
[5113]94    foreach ($conf_HIPE as $Exclusion)
[5099]95    {
[5113]96      $IP_Exclude = explode('.', $Exclusion);
[5099]97 
98      if (
99        (($IP_Client[0] == $IP_Exclude[0]) or ($IP_Exclude[0] == '%')) and
100        (!isset($IP_Exclude[1]) or ($IP_Client[1] == $IP_Exclude[1]) or ($IP_Exclude[1] == '%')) and
101        (!isset($IP_Exclude[2]) or ($IP_Client[2] == $IP_Exclude[2]) or ($IP_Exclude[2] == '%')) and
102        (!isset($IP_Exclude[3]) or ($IP_Client[3] == $IP_Exclude[3]) or ($IP_Exclude[3] == '%'))
103      )
104      {
105        $do_log = false;
106      }   
107    }
108     
109    return $do_log;
110  }
111}
[6758]112
113/* Check users registration */
114add_event_handler('register_user_check', 'HIPE_RegistrationCheck', EVENT_HANDLER_PRIORITY_NEUTRAL +2, 2);
115
116function HIPE_RegistrationCheck($err, $user)
117{
118  global $errors, $conf;
119  load_language('plugin.lang', HIPE_PATH);
120 
121  if (count($err)!=0 ) return $err;
122 
123  $IP_Client = explode('.', $_SERVER['REMOTE_ADDR']);
124  $HIPE_Config = unserialize($conf['HistoryIPConfig']);
125  $conf_HIPE = explode("," , $conf['HistoryIPExcluder']);
126 
127  if (isset($HIPE_Config['Blacklist']) and $HIPE_Config['Blacklist'] == true)
128  {
129    foreach ($conf_HIPE as $Exclusion)
130    {
131      $IP_Exclude = explode('.', $Exclusion);
132 
133      if (
134        (($IP_Client[0] == $IP_Exclude[0]) or ($IP_Exclude[0] == '%')) and
135        (!isset($IP_Exclude[1]) or ($IP_Client[1] == $IP_Exclude[1]) or ($IP_Exclude[1] == '%')) and
136        (!isset($IP_Exclude[2]) or ($IP_Client[2] == $IP_Exclude[2]) or ($IP_Exclude[2] == '%')) and
137        (!isset($IP_Exclude[3]) or ($IP_Client[3] == $IP_Exclude[3]) or ($IP_Exclude[3] == '%'))
138      )
139      {
140        $err = l10n('Error_HIPE_BlacklistedIP');
141      }
142    }
143    return $err;
144  }
145}
[5121]146?>
Note: See TracBrowser for help on using the repository browser.