From 61b9efbb39e8b8aaf89038f09950040435a3e80a Mon Sep 17 00:00:00 2001 From: Alan Garcia Date: Mon, 16 May 2011 11:57:13 +0000 Subject: [PATCH] Fix #1254 --- .gitattributes | 1 + bureau/admin/adm_authip_whitelist.php | 103 ++++++++++++++++++++++++++ bureau/admin/adm_panel.php | 1 + bureau/class/m_authip.php | 40 +++++++++- 4 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 bureau/admin/adm_authip_whitelist.php diff --git a/.gitattributes b/.gitattributes index 9c8e962d..e21eef47 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13,6 +13,7 @@ aide/sommaire.sgml -text aide/stats.sgml -text aide/test.sgml -text bureau/admin/adm_add.php -text +bureau/admin/adm_authip_whitelist.php -text bureau/admin/adm_cancel.php -text bureau/admin/adm_deactivate.php -text bureau/admin/adm_defquotas.php -text diff --git a/bureau/admin/adm_authip_whitelist.php b/bureau/admin/adm_authip_whitelist.php new file mode 100644 index 00000000..3054df13 --- /dev/null +++ b/bureau/admin/adm_authip_whitelist.php @@ -0,0 +1,103 @@ + array ("get", "integer", ""), + "id" => array ("post", "integer", 0), + "ipsub" => array ("post", "string", ""), + "infos" => array ("post", "string" ,""), + "s_ipsub" => array ("post", "integer", ""), + "s_protocol" => array ("post", "string", ""), +); +getFields($fields); + +if (!empty($delete_id)) { + if (! $authip->ip_delete($delete_id)) { + $error="Error during deletion"; + } +} + +if (!empty($ipsub)) { + if (! $authip->ip_save_whitelist($id, $ipsub, $infos)) { + $error="Error during recording"; + } +} + +$list_ip = $authip->list_ip_whitelist(); +?> + +

+
+
+ + +

+ + +

+

+ - );" > + +
+ + +

+ IPv4, IPv6 and subnet allowed"); ?>
+ +

+

+
+ +

+ " /> +
+
+
+ +

+ + + "; + ?> + + + + + +
$txt{$i['ip_human']}{$i['infos']}
+ + + diff --git a/bureau/admin/adm_panel.php b/bureau/admin/adm_panel.php index f36164c2..a6a4292f 100644 --- a/bureau/admin/adm_panel.php +++ b/bureau/admin/adm_panel.php @@ -52,6 +52,7 @@ include_once("head.php");
  • +
  • diff --git a/bureau/class/m_authip.php b/bureau/class/m_authip.php index c0b49fe8..d02e8920 100644 --- a/bureau/class/m_authip.php +++ b/bureau/class/m_authip.php @@ -24,13 +24,30 @@ **/ class m_authip { + /* + * Retourne la liste des ip whitelist + * + * @return array retourne un tableau indexé des ip de l'utilisateur + */ + function list_ip_whitelist() { + global $mem; + if (!$mem->checkRight()) return false; + return $this->list_ip(true); + } + /* * Retourne la liste des ip spécifiées par cet utilisateur * * @return array retourne un tableau indexé des ip de l'utilisateur */ - function list_ip() { - global $db, $cuid; + function list_ip($whitelist=false) { + global $db, $mem; + + if ($whitelist && $mem->checkRight() ) { + $cuid=0; + } else { + global $cuid; + } $r = array(); $db->query("SELECT * FROM authorised_ip WHERE uid='$cuid';"); @@ -47,6 +64,8 @@ class m_authip { return $r; } + + /* * Supprime une IP des IP de l'utilisateur * et supprime les droits attaché en cascade @@ -69,6 +88,23 @@ class m_authip { return true; } + /* + * Sauvegarde une IP dans les IP TOUJOURS authorisée + * + * @param integer $id id de la ligne à modifier. Si vide ou + * égal à 0, alors c'est une insertion + * @param string $ipsub IP (v4 ou v6), potentiellement avec un subnet ( /24) + * @param string $infos commentaire pour l'utilisateur + * @param integer $uid Si $uid=0 et qu'on est super-admin, insertion avec uid=0 + * ce qui correspond a une ip toujours authorisée + * @return boolean Retourne FALSE si erreur, sinon TRUE + */ + function ip_save_whitelist($id, $ipsub, $infos) { + global $mem; + if (!$mem->checkRight()) return false; + return $this->ip_save($id, $ipsub, $infos, 0); + } + /* * Sauvegarde une IP dans les IP authorisée *