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

Authorized-ip class. 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

Authorized-ip class.

Definition at line 26 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 283 of file m_authip.php.

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

283  {
284  global $cuid, $db;
285  $db->query("SELECT id FROM authorised_ip WHERE uid = ?;", array($cuid));
286  while ($db->next_record()) {
287  $this->ip_delete($db->f('id'));
288  }
289  return true;
290  }
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:106
$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_messages $msg
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 382 of file m_authip.php.

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

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

382  {
383  global $hooks, $msg;
384 
385  // On récure l'objet dont on parle
386  $d = $this->list_affected();
387  if (!isset($d[$affectation_id])) {
388  $msg->raise("ERROR", 'authip', _("Object not available"));
389  return false;
390  }
391 
392  $affectation = $d[$affectation_id];
393 
394  // On en déduis la classe qui le concerne
395  $e = $this->get_auth_class();
396  if (!isset($e[$affectation['protocol']])) {
397  $msg->raise("ERROR", 'authip', sprintf(_("Can't identified class for the protocole %s"), $affectation['protocol']));
398  return false;
399  }
400  $c = $e[$affectation['protocol']]['class'];
401 
402  // On appelle le hooks de cette classe
403  $hooks->invoke($function, Array($affectation), Array($c));
404 
405  return true;
406  }
$hooks
Definition: bootstrap.php:74
get_auth_class()
Analyse les classes et récupéres les informations des classes voulant de la restriction IP...
Definition: m_authip.php:299
list_affected($ip_id=null)
Liste les affectation ip<=>ressource d'un utilisateur.
Definition: m_authip.php:417
$msg
Definition: config.php:155
$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 131 of file m_authip.php.

References $cuid, $db, $msg, and $r.

131  {
132  global $db, $cuid, $msg;
133  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))) {
134  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
135  return false;
136  }
137  $r = Array();
138  while ($db->next_record()) {
139  $r[] = Array("ip" => $db->f("ip"), "subnet" => $db->f("subnet"), "infos" => $db->f("infos"), "parameters" => $db->f("parameters"));
140  }
141  return $r;
142  }
global $db
Definition: bootstrap.php:22
$r
Definition: aws_add.php:75
$msg
Definition: config.php:155
$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 299 of file m_authip.php.

References $hooks.

Referenced by call_hooks().

299  {
300  global $hooks;
301  $authclass = $hooks->invoke('authip_class');
302 
303  // Je rajoute la class DANS l'objet parce que
304  // ca m'interesse
305  foreach ($authclass as $k => $v) {
306  $authclass[$k]['class'] = $k;
307  }
308 
309  return $authclass;
310  }
$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 357 of file m_authip.php.

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

Referenced by ip_delete().

357  {
358  global $db, $msg;
359  $id = intval($id);
360 
361  // Call hooks
362  $this->call_hooks("authip_on_delete", $id);
363 
364  if (!$db->query("delete from authorised_ip_affected where id= ? limit 1;", array($id))) {
365  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
366  return false;
367  }
368  return true;
369  }
global $db
Definition: bootstrap.php:22
$msg
Definition: config.php:155
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:382
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 325 of file m_authip.php.

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

325  {
326  global $db, $msg;
327  $authorised_ip_id = intval($authorised_ip_id);
328 
329  if ($id) {
330  $id = intval($id);
331  $this->call_hooks("authip_on_delete", $id);
332  if (!$db->query("update authorised_ip_affected set authorised_ip_id= ?, protocol= ?, parameters= ? where id = ? limit 1;", array($authorised_ip_id, $protocol, $parameters, $id))) {
333  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
334  return false;
335  }
336  $this->call_hooks("authip_on_create", $id);
337  } else {
338  if (!$db->query("insert into authorised_ip_affected (authorised_ip_id, protocol, parameters) values (?, ?, ?);", array($authorised_ip_id, $protocol, $parameters))) {
339  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
340  return false;
341  }
342  $this->call_hooks("authip_on_create", $db->lastid());
343  }
344  return true;
345  }
global $db
Definition: bootstrap.php:22
$msg
Definition: config.php:155
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:382
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 106 of file m_authip.php.

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

Referenced by alternc_del_member().

106  {
107  global $db, $cuid, $msg;
108  $id = intval($id);
109 
110  $db->query("SELECT id FROM authorised_ip_affected where authorised_ip_id = ?;", array($id));
111  while ($db->next_record()) {
112  $this->ip_affected_delete($db->f('id'));
113  }
114  if (!$db->query("delete from authorised_ip where id= ? and ( uid= ? or uid=0) limit 1;", array($id, $cuid))) {
115  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
116  return false;
117  }
118  return true;
119  }
global $db
Definition: bootstrap.php:22
$msg
Definition: config.php:155
$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:357
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 214 of file m_authip.php.

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

Referenced by ip_save_whitelist().

214  {
215  global $db, $mem, $msg;
216 
217  // If we ask for uid=0, we have to check to be super-user
218  // else, juste use global cuid;
219  if ($uid === 0 && $mem->checkRight()) {
220  $cuid = 0;
221  } else {
222  global $cuid;
223  }
224 
225  $id = intval($id);
226  $infos = $db->quote(trim($infos));
227 
228  // Extract subnet from ipsub
229  $tmp = explode('/', $ipsub);
230  $ip = $tmp[0];
231 
232  // Error if $ip not an IP
233  if (!checkip($ip) && !checkipv6($ip)) {
234  $msg->raise("ERROR", 'authip', _("Failed : not an IP address"));
235  return false;
236  }
237 
238  // Check the subnet, if not defined, give a /32 or a /128
239  if (isset($tmp[1])) {
240  $subnet = intval($tmp[1]);
241  } else {
242  if (checkip($ip)) {
243  $subnet = 32;
244  } else {
245  $subnet = 128;
246  }
247  }
248 
249  // An IPv4 can't have subnet > 32
250  if (checkip($ip) && $subnet > 32) {
251  $subnet = 32;
252  }
253 
254  if ($id) { // Update
255  $list_affected = $this->list_affected($id);
256  foreach ($list_affected as $k => $v) {
257  $this->call_hooks("authip_on_delete", $k);
258  }
259  if (!$db->query("update authorised_ip set ip= ?, subnet= ?, infos= ? where id= ? and uid=? ;", array($ip, $subnet, $infos, $id, $cuid))) {
260  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
261  return false;
262  }
263  foreach ($list_affected as $k => $v) {
264  $this->call_hooks("authip_on_create", $k);
265  }
266  } else { // Insert
267  if (!$db->query("insert into authorised_ip (uid, ip, subnet, infos) values (?, ?, ?, ?);", array($cuid, $ip, $subnet, $infos))) {
268  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
269  return false;
270  }
271  }
272  return true;
273  }
$uid
global $db
Definition: bootstrap.php:22
list_affected($ip_id=null)
Liste les affectation ip<=>ressource d'un utilisateur.
Definition: m_authip.php:417
$msg
Definition: config.php:155
$cuid
Definition: bootstrap.php:43
checkipv6($ip)
Check that $ip is a correct ipv6 ip.
Definition: functions.php:221
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:382
if(!isset($is_include)) if(!$key &&!$crt) $id
if(in_array($action, array('start', 'stop', 'monit'))) switch($action) if($lxc->error &&!$script) $infos
Definition: vm.php:32
$mem
Definition: bootstrap.php:71
checkip($ip)
Check that $ip is a correct 4 Dotted ip.
Definition: functions.php:210
m_authip::ip_save_whitelist (   $id,
  $ipsub,
  $infos 
)

Sauvegarde une IP dans les IP TOUJOURS authorisée.

Parameters
globalm_mem $mem

Definition at line 190 of file m_authip.php.

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

190  {
191  global $mem;
192  if (!$mem->checkRight()) {
193  return false;
194  }
195  return $this->ip_save($id, $ipsub, $infos, 0);
196  }
if(!isset($is_include)) if(!$key &&!$crt) $id
if(in_array($action, array('start', 'stop', 'monit'))) switch($action) if($lxc->error &&!$script) $infos
Definition: vm.php:32
$mem
Definition: bootstrap.php:71
ip_save($id, $ipsub, $infos, $uid=null)
Sauvegarde une IP dans les IP authorisée.
Definition: m_authip.php:214
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 173 of file m_authip.php.

References $sub.

Referenced by is_wl().

173  {
174  $o = inet_pton($o);
175  $ip = inet_pton($ip);
176  $sub = pow(2, $sub);
177 
178  if ($o >= $ip && $o <= ($ip + $sub)) {
179  return true;
180  }
181  return false;
182  }
$sub
m_authip::is_wl (   $ip)
Parameters
globalm_mysql $db
string$ip
Returns
boolean

Definition at line 151 of file m_authip.php.

References $db, $msg, and is_in_subnet().

151  {
152  global $db, $msg;
153  if (!$db->query("select ai.ip, ai.subnet from authorised_ip ai where ai.uid='0';")) {
154  $msg->raise("ERROR", 'authip', _("query failed: " . $db->Error));
155  return false;
156  }
157  while ($db->next_record()) {
158  if ($this->is_in_subnet($ip, $db->f('ip'), $db->f('subnet')))
159  return true;
160  }
161  return false;
162  }
global $db
Definition: bootstrap.php:22
$msg
Definition: config.php:155
is_in_subnet($o, $ip, $sub)
Retourne si l'ip appartient au subnet.
Definition: m_authip.php:173
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 417 of file m_authip.php.

References $cuid, $db, and $r.

Referenced by call_hooks(), and ip_save().

417  {
418  global $db, $cuid;
419 
420  $r = array();
421  if (is_null($ip_id)) {
422  $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));
423  } else {
424  $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)));
425  }
426  while ($db->next_record()) {
427  $r[$db->f('id')] = $db->Record;
428  }
429  return $r;
430  }
global $db
Definition: bootstrap.php:22
$r
Definition: aws_add.php:75
$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 70 of file m_authip.php.

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

Referenced by list_ip_whitelist().

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

References $mem, and list_ip().

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

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