From 6a47977c544b90afe581078d0d9ae893febada7c Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Thu, 6 Mar 2003 14:37:05 +0000 Subject: [PATCH] implemented all functions --- lam/lib/ldap.php | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/lam/lib/ldap.php b/lam/lib/ldap.php index 2f6294f3..3232e844 100644 --- a/lam/lib/ldap.php +++ b/lam/lib/ldap.php @@ -28,6 +28,9 @@ class Ldap{ // object of Config to access preferences var $conf; + + // server handle + var $server; // constructor // $config has to be an object of Config (../config/config.php) @@ -39,26 +42,66 @@ class Ldap{ // returns an array of strings with the DN entries // $base is optional and specifies the root from where to search for entries function getUsers($base = "") { + if ($base == "") $base = $this->conf->get_UserSuffix(); + $filter = "(&(|(objectClass=posixAccount) (objectClass=sambaAccount)) (!(uid=*$)))"; + $attrs = array(); + $sr = ldap_search($this->server, $base, $filter, $attrs); + $info = ldap_get_entries($this->server, $sr); + $ret = array(); + for ($i = 0; $i < $info["count"]; $i++) $ret[$i] = $info[$i]["dn"]; + return $ret; } // returns an array of strings with the DN entries // $base is optional and specifies the root from where to search for entries function getGroups($base = "") { + if ($base == "") $base = $this->conf->get_GroupSuffix(); + $filter = "(objectClass=posixGroup)"; + $attrs = array(); + $sr = ldap_search($this->server, $base, $filter, $attrs); + $info = ldap_get_entries($this->server, $sr); + $ret = array(); + for ($i = 0; $i < $info["count"]; $i++) $ret[$i] = $info[$i]["dn"]; + return $ret; } // returns an array of strings with the DN entries // $base is optional and specifies the root from where to search for entries function getMachines($base = "") { + if ($base == "") $base = $this->conf->get_HostSuffix(); + $filter = "(&(objectClass=sambaAccount) (uid=*$))"; + $attrs = array(); + $sr = ldap_search($this->server, $base, $filter, $attrs); + $info = ldap_get_entries($this->server, $sr); + $ret = array(); + for ($i = 0; $i < $info["count"]; $i++) $ret[$i] = $info[$i]["dn"]; + return $ret; } // connects to the server using the given username and password // $base is optional and specifies the root from where to search for entries function connect($user, $passwd) { + if ($this->conf->get_SSL() == "True") $this->server = ldap_connect("ldaps://" . $this->conf->get_Host(), $this->conf->get_Port()); + else $this->server = ldap_connect("ldap://" . $this->conf->get_Host(), $this->conf->get_Port()); + if ($this->server) { + if (ldap_bind($this->server, $user, $passwd)) { + return True; + } + else { + echo _("Unable to bind to Server!"); + exit; + } + } + else { + echo _("Unable to connect to Server!"); + exit; + } } // closes connection to server // $base is optional and specifies the root from where to search for entries function close() { + ldap_close($this->server); } }