source: extensions/HistoryIPExcluder/trunk/main.inc.php @ 10045

Last change on this file since 10045 was 10045, checked in by Eric, 13 years ago

Improved update mechanism. When no structural update of database is necessary, it sets the correct version number in plugin's configuration

  • Property svn:eol-style set to LF
File size: 4.3 KB
Line 
1<?php
2/*
3Plugin Name: History IP Excluder
4Version: 2.2.3
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
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=147
7Author: Nicco, Eric
8Author URI: http://gallery-nicco.no-ip.org - http://www.infernoweb.net
9*/
10
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
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
25
262.2.0             - Compliance with Piwigo 2.2.x
27                  - Plugin directory renamed from nbc_HistoryIPExcluder to HistoryIPExcluder
28
292.2.1             - Bug fixed on plugin upgrade from 2.1.x version
30
312.2.2             - Another bug fixed on plugin upgrade from 2.2.x version
32
332.2.3             - Improved update mechanism. When no structural update of database is necessary, it sets the correct version number in plugin's configuration
34
35--------------------------------------------------------------------------------
36*/
37
38if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
39
40if (!defined('HIPE_PATH')) define('HIPE_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
41
42include_once (HIPE_PATH.'/include/functions.inc.php');
43
44load_language('plugin.lang', HIPE_PATH);
45
46add_event_handler('get_admin_plugin_menu_links', 'HIPE_admin_menu');
47
48/* Set the administration panel of the plugin */
49function HIPE_admin_menu($menu)
50{
51// +-----------------------------------------------------------------------+
52// |                      Getting plugin name                              |
53// +-----------------------------------------------------------------------+
54  $plugin =  HIPE_infos(HIPE_PATH);
55  $name = $plugin['name'];
56 
57  array_push($menu,
58    array(
59      'NAME' => $name,
60      'URL' => get_root_url().'admin.php?page=plugin-'.basename(HIPE_PATH)
61    )
62  );
63   
64  return $menu;
65}
66
67// IP exclusion from logs
68add_event_handler('pwg_log_allowed', 'HIPE_IP_Filtrer');
69
70function HIPE_IP_Filtrer($do_log)
71{
72  global $conf;
73
74  $conf_HIPE = explode("," , $conf['HistoryIPExcluder']);
75
76  if (!$do_log)
77    return $do_log;
78  else
79  {
80    $IP_Client = explode('.', $_SERVER['REMOTE_ADDR']);
81 
82    foreach ($conf_HIPE as $Exclusion)
83    {
84      $IP_Exclude = explode('.', $Exclusion);
85 
86      if (
87        (($IP_Client[0] == $IP_Exclude[0]) or ($IP_Exclude[0] == '%')) and
88        (!isset($IP_Exclude[1]) or ($IP_Client[1] == $IP_Exclude[1]) or ($IP_Exclude[1] == '%')) and
89        (!isset($IP_Exclude[2]) or ($IP_Client[2] == $IP_Exclude[2]) or ($IP_Exclude[2] == '%')) and
90        (!isset($IP_Exclude[3]) or ($IP_Client[3] == $IP_Exclude[3]) or ($IP_Exclude[3] == '%'))
91      )
92      {
93        $do_log = false;
94      }   
95    }
96     
97    return $do_log;
98  }
99}
100
101/* Check users registration */
102add_event_handler('register_user_check', 'HIPE_RegistrationCheck', EVENT_HANDLER_PRIORITY_NEUTRAL +2, 2);
103
104function HIPE_RegistrationCheck($err, $user)
105{
106  global $errors, $conf;
107  load_language('plugin.lang', HIPE_PATH);
108 
109  if (count($err)!=0 ) return $err;
110 
111  $IP_Client = explode('.', $_SERVER['REMOTE_ADDR']);
112  $HIPE_Config = unserialize($conf['HistoryIPConfig']);
113  $conf_HIPE = explode("," , $conf['HistoryIPExcluder']);
114 
115  if (isset($HIPE_Config['Blacklist']) and $HIPE_Config['Blacklist'] == true)
116  {
117    foreach ($conf_HIPE as $Exclusion)
118    {
119      $IP_Exclude = explode('.', $Exclusion);
120 
121      if (
122        (($IP_Client[0] == $IP_Exclude[0]) or ($IP_Exclude[0] == '%')) and
123        (!isset($IP_Exclude[1]) or ($IP_Client[1] == $IP_Exclude[1]) or ($IP_Exclude[1] == '%')) and
124        (!isset($IP_Exclude[2]) or ($IP_Client[2] == $IP_Exclude[2]) or ($IP_Exclude[2] == '%')) and
125        (!isset($IP_Exclude[3]) or ($IP_Client[3] == $IP_Exclude[3]) or ($IP_Exclude[3] == '%'))
126      )
127      {
128        $err = l10n('Error_HIPE_BlacklistedIP');
129      }
130    }
131    return $err;
132  }
133}
134?>
Note: See TracBrowser for help on using the repository browser.