Alternc  latest
Alternc logiel libre pour l'hébergement
 All Classes Namespaces Files Functions Variables Pages
m_authip Class Reference

$Id: m_authip.php

LICENSE More...

Public Member Functions

 list_ip_whitelist ()
 Retourne la liste des ip whitelist. More...
 
 hook_menu ()
 
 list_ip ($whitelist=false)
 Retourne la liste des ip spécifiées par cet utilisateur. More...
 
 ip_delete ($id)
 Supprime une IP des IP de l'utilisateur et supprime les droits attaché en cascade. More...
 
 get_allowed ($s)
 Liste les IP et subnet authorisés pour une classe donnée. More...
 
 is_wl ($ip)
 
 is_in_subnet ($o, $ip, $sub)
 Retourne si l'ip appartient au subnet. More...
 
 ip_save_whitelist ($id, $ipsub, $infos)
 Sauvegarde une IP dans les IP TOUJOURS authorisée. More...
 
 ip_save ($id, $ipsub, $infos, $uid=null)
 Sauvegarde une IP dans les IP authorisée. More...
 
 alternc_del_member ()
 Fonction appelée par Alternc lors de la suppression d'un utilisateur. More...
 
 get_auth_class ()
 Analyse les classes et récupéres les informations des classes voulant de la restriction IP. More...
 
 ip_affected_save ($authorised_ip_id, $protocol, $parameters, $id=null)
 Enregistre ou modifie une affectation ip<=>ressource Nota : lance des hooks sur la classe correspondante pour informer de l'édition/création. More...
 
 ip_affected_delete ($id)
 Supprime une affectation ip<=>ressource Nota : lance des hooks dans la classe correspondante pour informer de la suppression. More...
 
 call_hooks ($function, $affectation_id)
 Appel les hooks demandé avec en parametres les affectationt ip<=>ressource dont l'id est en parametre. More...
 
 list_affected ($ip_id=null)
 Liste les affectation ip<=>ressource d'un utilisateur. More...
 

Detailed Description

$Id: m_authip.php

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

To read the license please visit http://www.gnu.org/copyleft/gpl.html

Original Author of file: Fufroma

Classe de gestion des IP authorisée alternc

Definition at line 28 of file m_authip.php.

Member Function Documentation

m_authip::alternc_del_member ( )

Fonction appelée par Alternc lors de la suppression d'un utilisateur.

Parameters
globalint $cuid
globalm_mysql $db
Returns
boolean Retourne TRUE

Definition at line 275 of file m_authip.php.

References $cuid, $db, and ip_delete().

275  {
276  global $cuid, $db;
277  $db->query("SELECT id FROM authorised_ip WHERE uid = ?;", array($cuid));
278  while ($db->next_record()) {
279  $this->ip_delete($db->f('id'));
280  }
281  return true;
282  }
global $db
Definition: bootstrap.php:22
ip_delete($id)
Supprime une IP des IP de l'utilisateur et supprime les droits attaché en cascade.
Definition: m_authip.php:104
$cuid
Definition: bootstrap.php:43
m_authip::call_hooks (   $function,
  $affectation_id 
)

Appel les hooks demandé avec en parametres les affectationt ip<=>ressource dont l'id est en parametre.

Parameters
globalm_hooks $hooks
globalm_err $err
string$functionNom de la fonction a rechercher et appeller dans les classes
integer$affectation_idId de l'affectation correspondante
Returns
boolean Retourne TRUE

Definition at line 370 of file m_authip.php.

References $c, $d, $err, $hooks, get_auth_class(), and list_affected().

Referenced by ip_affected_delete(), ip_affected_save(), and ip_save().

370  {
371  global $hooks, $err;
372 
373  // On récure l'objet dont on parle
374  $d = $this->list_affected();
375  if (!isset($d[$affectation_id])) {
376  $err->raise('authip', _("Object not available"));
377  return false;
378  }
379 
380  $affectation = $d[$affectation_id];
381 
382  // On en déduis la classe qui le concerne
383  $e = $this->get_auth_class();
384  if (!isset($e[$affectation['protocol']])) {
385  $err->raise('authip', sprintf(_("Can't identified class for the protocole %s"), $affectation['protocol']));
386  return false;
387  }
388  $c = $e[$affectation['protocol']]['class'];
389 
390  // On appelle le hooks de cette classe
391  $hooks->invoke($function, Array($affectation), Array($c));
392 
393  return true;
394  }
$hooks
Definition: bootstrap.php:74
$err
Definition: bootstrap.php:72
get_auth_class()
Analyse les classes et récupéres les informations des classes voulant de la restriction IP...
Definition: m_authip.php:290
list_affected($ip_id=null)
Liste les affectation ip<=>ressource d'un utilisateur.
Definition: m_authip.php:404
$c
Definition: bootstrap.php:47
$d
m_authip::get_allowed (   $s)

Liste les IP et subnet authorisés pour une classe donnée.

Parameters
globalm_mysql $db
globalint $cuid
string$sClasse concernée
Returns
array

Definition at line 128 of file m_authip.php.

References $cuid, $db, and $r.

128  {
129  global $db, $cuid;
130  if (!$db->query("select ai.ip, ai.subnet, ai.infos, aia.parameters from authorised_ip ai, authorised_ip_affected aia where aia.protocol= ? and aia.authorised_ip_id = ai.id and ai.uid= ?;", array($s, $cuid))) {
131  echo "query failed: " . $db->Error;
132  return false;
133  }
134  $r = Array();
135  while ($db->next_record()) {
136  $r[] = Array("ip" => $db->f("ip"), "subnet" => $db->f("subnet"), "infos" => $db->f("infos"), "parameters" => $db->f("parameters"));
137  }
138  return $r;
139  }
global $db
Definition: bootstrap.php:22
$r
Definition: aws_add.php:77
$cuid
Definition: bootstrap.php:43
m_authip::get_auth_class ( )

Analyse les classes et récupéres les informations des classes voulant de la restriction IP.

Returns
array Retourne un tableau compliqué

Definition at line 290 of file m_authip.php.

References $hooks.

Referenced by call_hooks().

290  {
291  global $hooks;
292  $authclass = $hooks->invoke('authip_class');
293 
294  // Je rajoute la class DANS l'objet parce que
295  // ca m'interesse
296  foreach ($authclass as $k => $v) {
297  $authclass[$k]['class'] = $k;
298  }
299 
300  return $authclass;
301  }
$hooks
Definition: bootstrap.php:74
m_authip::hook_menu ( )
Returns
array

Definition at line 48 of file m_authip.php.

48  {
49  $obj = array(
50  'title' => _("FTP Access Security"),
51  'ico' => 'images/ip.png',
52  'link' => 'ip_main.php',
53  'pos' => 120,
54  );
55 
56  return $obj;
57  }
m_authip::ip_affected_delete (   $id)

Supprime une affectation ip<=>ressource Nota : lance des hooks dans la classe correspondante pour informer de la suppression.

Parameters
globalm_mysql $db
int$idid de la ligne à supprimer
Returns
boolean Retourne FALSE si erreur, sinon TRUE

Definition at line 346 of file m_authip.php.

References $db, $id, and call_hooks().

Referenced by ip_delete().

346  {
347  global $db;
348  $id = intval($id);
349 
350  // Call hooks
351  $this->call_hooks("authip_on_delete", $id);
352 
353  if (!$db->query("delete from authorised_ip_affected where id= ? limit 1;", array($id))) {
354  echo "query failed: " . $db->Error;
355  return false;
356  }
357  return true;
358  }
global $db
Definition: bootstrap.php:22
call_hooks($function, $affectation_id)
Appel les hooks demandé avec en parametres les affectationt ip<=>ressource dont l'id est en parametre...
Definition: m_authip.php:370
if(!isset($is_include)) if(!$key &&!$crt) $id
m_authip::ip_affected_save (   $authorised_ip_id,
  $protocol,
  $parameters,
  $id = null 
)

Enregistre ou modifie une affectation ip<=>ressource Nota : lance des hooks sur la classe correspondante pour informer de l'édition/création.

Parameters
globalm_mysql $db
int$authorised_ip_idid de l'ip affecté
string$protocolnom du protocole (définie dans la classe correspondante)
string$parametersinformation propre au protocole
int$id$id présent si c'est une édition
Returns
boolean Retourne FALSE si erreur, sinon TRUE

Definition at line 315 of file m_authip.php.

References $db, $id, $parameters, and call_hooks().

315  {
316  global $db;
317  $authorised_ip_id = intval($authorised_ip_id);
318 
319  if ($id) {
320  $id = intval($id);
321  $this->call_hooks("authip_on_delete", $id);
322  if (!$db->query("update authorised_ip_affected set authorised_ip_id= ?, protocol= ?, parameters= ? where id = ? limit 1;", array($authorised_ip_id, $protocol, $parameters, $id))) {
323  echo "query failed: " . $db->Error;
324  return false;
325  }
326  $this->call_hooks("authip_on_create", $id);
327  } else {
328  if (!$db->query("insert into authorised_ip_affected (authorised_ip_id, protocol, parameters) values (?, ?, ?);", array($authorised_ip_id, $protocol, $parameters))) {
329  echo "query failed: " . $db->Error;
330  return false;
331  }
332  $this->call_hooks("authip_on_create", $db->lastid());
333  }
334  return true;
335  }
global $db
Definition: bootstrap.php:22
call_hooks($function, $affectation_id)
Appel les hooks demandé avec en parametres les affectationt ip<=>ressource dont l'id est en parametre...
Definition: m_authip.php:370
if(!isset($is_include)) if(!$key &&!$crt) $id
m_authip::ip_delete (   $id)

Supprime une IP des IP de l'utilisateur et supprime les droits attaché en cascade.

Parameters
integer$id
Returns
boolean
Parameters
globalm_mysql $db
globalint $cuid
int$idid de la ligne à supprimer
Returns
boolean Retourne FALSE si erreur, sinon TRUE

Definition at line 104 of file m_authip.php.

References $cuid, $db, $id, and ip_affected_delete().

Referenced by alternc_del_member().

104  {
105  global $db, $cuid;
106  $id = intval($id);
107 
108  $db->query("SELECT id FROM authorised_ip_affected where authorised_ip_id = ?;", array($id));
109  while ($db->next_record()) {
110  $this->ip_affected_delete($db->f('id'));
111  }
112  if (!$db->query("delete from authorised_ip where id= ? and ( uid= ? or uid=0) limit 1;", array($id, $cuid))) {
113  echo "query failed: " . $db->Error;
114  return false;
115  }
116  return true;
117  }
global $db
Definition: bootstrap.php:22
$cuid
Definition: bootstrap.php:43
ip_affected_delete($id)
Supprime une affectation ip<=>ressource Nota : lance des hooks dans la classe correspondante pour inf...
Definition: m_authip.php:346
if(!isset($is_include)) if(!$key &&!$crt) $id
m_authip::ip_save (   $id,
  $ipsub,
  $infos,
  $uid = null 
)

Sauvegarde une IP dans les IP authorisée.

Parameters
globalm_mysql $db
globalm_mem $mem
globalint $cuid
int$idid de la ligne à modifier. Si vide ou égal à 0, alors c'est une insertion
string$ipsubIP (v4 ou v6), potentiellement avec un subnet ( /24)
string$infosCommentaire pour l'utilisateur
int$uidSi $uid=0 et qu'on est super-admin, insertion avec uid=0 ce qui correspond a une ip toujours authorisée
Returns
boolean Retourne FALSE si erreur, sinon TRUE

Definition at line 207 of file m_authip.php.

References $cuid, $db, $id, $infos, $mem, $uid, call_hooks(), checkip(), checkipv6(), and list_affected().

Referenced by ip_save_whitelist().

207  {
208  global $db, $mem;
209 
210  // If we ask for uid=0, we have to check to be super-user
211  // else, juste use global cuid;
212  if ($uid === 0 && $mem->checkRight()) {
213  $cuid = 0;
214  } else {
215  global $cuid;
216  }
217 
218  $id = intval($id);
219  $infos = mysql_real_escape_string($infos);
220 
221  // Extract subnet from ipsub
222  $tmp = explode('/', $ipsub);
223  $ip = $tmp[0];
224 
225  // Error if $ip not an IP
226  if (!checkip($ip) && !checkipv6($ip)) {
227  echo "Failed : not an IP address";
228  return false;
229  }
230 
231  // Check the subnet, if not defined, give a /32 or a /128
232  if (isset($tmp[1])) {
233  $subnet = intval($tmp[1]);
234  } else {
235  if (checkip($ip)) {
236  $subnet = 32;
237  } else {
238  $subnet = 128;
239  }
240  }
241 
242  // An IPv4 can't have subnet > 32
243  if (checkip($ip) && $subnet > 32) {
244  $subnet = 32;
245  }
246 
247  if ($id) { // Update
248  $list_affected = $this->list_affected($id);
249  foreach ($list_affected as $k => $v) {
250  $this->call_hooks("authip_on_delete", $k);
251  }
252  if (!$db->query("update authorised_ip set ip= ?, subnet= ?, infos= ? where id= ? and uid=? ;", array($id, $subnetn, $infos, $id, $cuid))) {
253  echo "query failed: " . $db->Error;
254  return false;
255  }
256  foreach ($list_affected as $k => $v) {
257  $this->call_hooks("authip_on_create", $k);
258  }
259  } else { // Insert
260  if (!$db->query("insert into authorised_ip (uid, ip, subnet, infos) values (?, ?, ?, ?);", array($cuid, $ip, $subnet, $infos))) {
261  echo "query failed: " . $db->Error;
262  return false;
263  }
264  }
265  return true;
266  }
$uid
global $db
Definition: bootstrap.php:22
list_affected($ip_id=null)
Liste les affectation ip<=>ressource d'un utilisateur.
Definition: m_authip.php:404
$cuid
Definition: bootstrap.php:43
checkipv6($ip)
Check that $ip is a correct ipv6 ip.
Definition: functions.php:215
call_hooks($function, $affectation_id)
Appel les hooks demandé avec en parametres les affectationt ip<=>ressource dont l'id est en parametre...
Definition: m_authip.php:370
if(!isset($is_include)) if(!$key &&!$crt) $id
$mem
Definition: bootstrap.php:71
checkip($ip)
Check that $ip is a correct 4 Dotted ip.
Definition: functions.php:205
m_authip::ip_save_whitelist (   $id,
  $ipsub,
  $infos 
)

Sauvegarde une IP dans les IP TOUJOURS authorisée.

Parameters
globalm_mem $mem

Definition at line 184 of file m_authip.php.

References $id, $infos, $mem, and ip_save().

184  {
185  global $mem;
186  if (!$mem->checkRight()) {
187  return false;
188  }
189  return $this->ip_save($id, $ipsub, $infos, 0);
190  }
if(!isset($is_include)) if(!$key &&!$crt) $id
$mem
Definition: bootstrap.php:71
ip_save($id, $ipsub, $infos, $uid=null)
Sauvegarde une IP dans les IP authorisée.
Definition: m_authip.php:207
m_authip::is_in_subnet (   $o,
  $ip,
  $sub 
)

Retourne si l'ip appartient au subnet.

Parameters
string$o
string$ip
string$sub
Returns
boolean

Definition at line 168 of file m_authip.php.

References $sub.

Referenced by is_wl().

168  {
169  $o = inet_pton($o);
170  $ip = inet_pton($ip);
171  $sub = pow(2, $sub);
172 
173  if ($o >= $ip && $o <= ($ip + $sub)) {
174  return true;
175  }
176  return false;
177  }
$sub
m_authip::is_wl (   $ip)
Parameters
globalm_mysql $db
string$ip
Returns
boolean

Definition at line 147 of file m_authip.php.

References $db, and is_in_subnet().

147  {
148  global $db;
149  if (!$db->query("select ai.ip, ai.subnet from authorised_ip ai where ai.uid='0';")) {
150  echo "query failed: " . $db->Error;
151  return false;
152  }
153  while ($db->next_record()) {
154  if ($this->is_in_subnet($ip, $db->f('ip'), $db->f('subnet')))
155  return true;
156  }
157  return false;
158  }
global $db
Definition: bootstrap.php:22
is_in_subnet($o, $ip, $sub)
Retourne si l'ip appartient au subnet.
Definition: m_authip.php:168
m_authip::list_affected (   $ip_id = null)

Liste les affectation ip<=>ressource d'un utilisateur.

Parameters
globalm_mysql $db
globalint $cuid
int$ip_id
Returns
array Retourne un tableau de valeurs

Definition at line 404 of file m_authip.php.

References $cuid, $db, and $r.

Referenced by call_hooks(), and ip_save().

404  {
405  global $db, $cuid;
406 
407  $r = array();
408  if (is_null($ip_id)) {
409  $db->query("select aia.* from authorised_ip_affected aia, authorised_ip ai where ai.uid= ? and aia.authorised_ip_id = ai.id order by protocol, parameters;", array($cuid));
410  } else {
411  $db->query("select aia.* from authorised_ip_affected aia, authorised_ip ai where ai.uid= ? and aia.authorised_ip_id = ? order by protocol, parameters;", array($cuid, intval($ip_id)));
412  }
413  while ($db->next_record()) {
414  $r[$db->f('id')] = $db->Record;
415  }
416  return $r;
417  }
global $db
Definition: bootstrap.php:22
$r
Definition: aws_add.php:77
$cuid
Definition: bootstrap.php:43
m_authip::list_ip (   $whitelist = false)

Retourne la liste des ip spécifiées par cet utilisateur.

Parameters
globalm_mysql $db
globalm_mem $mem
globalint $cuid
boolean$whitelist
Returns
array Retourne un tableau indexé des ip de l'utilisateur

Definition at line 69 of file m_authip.php.

References $cuid, $db, $mem, $r, checkip(), and checkipv6().

Referenced by list_ip_whitelist().

69  {
70  global $db, $mem;
71 
72  if ($whitelist && $mem->checkRight()) {
73  $cuid = 0;
74  } else {
75  global $cuid;
76  }
77 
78  $r = array();
79  $db->query("SELECT * FROM authorised_ip WHERE uid= ? order by ip,subnet;", array($cuid));
80  while ($db->next_record()) {
81  $r[$db->f('id')] = $db->Record;
82  if ((checkip($db->f('ip')) && $db->f('subnet') == 32) ||
83  (checkipv6($db->f('ip')) && $db->f('subnet') == 128)) {
84  $r[$db->f('id')]['ip_human'] = $db->f('ip');
85  } else {
86  $r[$db->f('id')]['ip_human'] = $db->f('ip') . "/" . $db->f('subnet');
87  }
88  }
89  return $r;
90  }
global $db
Definition: bootstrap.php:22
$r
Definition: aws_add.php:77
$cuid
Definition: bootstrap.php:43
checkipv6($ip)
Check that $ip is a correct ipv6 ip.
Definition: functions.php:215
$mem
Definition: bootstrap.php:71
checkip($ip)
Check that $ip is a correct 4 Dotted ip.
Definition: functions.php:205
m_authip::list_ip_whitelist ( )

Retourne la liste des ip whitelist.

Parameters
globalm_mem $mem
Returns
array retourne un tableau indexé des ip de l'utilisateur

Definition at line 36 of file m_authip.php.

References $mem, and list_ip().

36  {
37  global $mem;
38  if (!$mem->checkRight()) {
39  return false;
40  }
41  return $this->list_ip(true);
42  }
list_ip($whitelist=false)
Retourne la liste des ip spécifiées par cet utilisateur.
Definition: m_authip.php:69
$mem
Definition: bootstrap.php:71

The documentation for this class was generated from the following file: