par
salento9 » 30 janv. 2012, 15:46
Merci pour la réponse,
ça doit être ici:
Code : Tout sélectionner
<?php
include('adodb-time.inc.php');
function dirNameToUserName($dirname){
$start = strpos($dirname,'=')+1;
$end = strpos($dirname,',');
return(substr($dirname,$start,$end-$start));
}
function sfile($file){
$tmp = file($file);
foreach($tmp as $line){
$ttmp = explode(';',$line);
$result[$ttmp[0]] = $ttmp[1];
}
return $result;
}
function showoptions($options,$selectedoption){
natcasesort($options);
foreach($options as $optionname => $anoption){
if(trim($anoption)){
if(strtolower(trim($optionname))==strtolower($selectedoption)){
$selected = ' selected';
$seloptexists = 1;
}else{
$selected = '';
}
$result .= '<option'.$selected.' value="'.$optionname.'">'.trim($anoption)."\n";
}
}
if($selectedoption == ''){
$result = '<option selected value="">'.$result;
}
if(($selectedoption)and($seloptexists == '')){
$result = '<option selected value="">[unknown] '.$selectedoption.$result."\n";
}
return($result);
}
function createrandompassword(){
$chars = "abcdefghijkmnpqrstuvwxyz23456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 8) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
function createreasypassword(){
$chars = "AEIUY";
$chars1 = "BCDFGHJKMNPQRSTVWXZ";
srand((double)microtime()*1000000);
$pass = substr($chars1,(rand() % 33),1).substr($chars,(rand() % 33),1).substr($chars1,(rand() % 33),1).substr($chars,(rand() % 33),1);
return $pass;
}
function get_ldap_users(){
$cachefile = 'cache/users.txt';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
$cache_timeout = 15; // In seconds
// CHECK AGE and EXISTENCE OF CACHE
$filename = $cachefile;
if (file_exists($filename)) {
if(($cache_timeout) > (time() - filemtime($filename))){
$cached = 1;
}else{
$cached = 0;
}
}else{
$cached = 0;
}
// GET DATA
if($cached){
// READ CACHE FILE TO ARRAY
$users = sfile($cachefile);
}else{
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "sn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all entries
for ($i=0; $i<$info["count"]; $i++) {
$users[$info[$i]['cn'][0]] = $info[$i]['sn'][0].', '.$info[$i]['givenname'][0];
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
// WRITE CACHE FILE FROM ARRAYS
$cfile = fopen($cachefile,"w");
foreach($users as $n => $dn){
fwrite($cfile, $n.';'.$dn."\n");
}
fclose($cfile);
}
return($users);
}
function get_ldap_users_details(){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "sn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($info);
}
function get_ldap_groups($ou){
$cachefile = 'cache/groups.txt';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $ou.','.$GLOBALS['domain'];
$cache_timeout = 15; // In seconds
// CHECK AGE and EXISTENCE OF CACHE
$filename = $cachefile;
if (file_exists($filename)) {
if(($cache_timeout) > (time() - filemtime($filename))){
$cached = 1;
}else{
$cached = 0;
}
}else{
$cached = 0;
}
// GET DATA
if($cached){
// READ CACHE FILE TO ARRAY
$groups = sfile($cachefile);
}else{
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search groupname entry
$sr=ldap_search($ds, $ou, "cn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all entries
for ($i=0; $i<$info["count"]; $i++) {
$groups[$info[$i]['cn'][0]] = $info[$i]['cn'][0];
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
// WRITE CACHE FILE FROM ARRAYS
$cfile = fopen($cachefile,"w");
foreach($groups as $n => $dn){
fwrite($cfile, $n.';'.$dn."\n");
}
fclose($cfile);
}
return($groups);
}
function get_ldap_user_details($userCn){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "cn=".$userCn);
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info[0] as $detailname => $detail){
for ($i=0; $i<$detail["count"]; $i++) {
$userdetails[$detailname][$i] = $detail[$i];
}
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($userdetails);
}
function ldap_user_exists($userCn){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "cn=".$userCn);
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info as $user){
$result .= $user;
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($result);
}
function get_memberships($user){
$userdetails = @get_ldap_user_details($user);
foreach($userdetails['memberof'] as $group){
//echo '<b>=='.$group.'==</b><br>';
$gr = substr($group,0,strpos($group,','));
$grou = substr($group,strpos($group,',')+1);
$subgroups = array_merge((array)get_groups_memberships($gr,$grou),(array)$subgroups);
}
$result = @array_merge($userdetails['memberof'],$subgroups);
return $result;
}
function get_groups_memberships($gr,$grou){
$groupdetails = get_ldap_group_details($gr,$grou);
if(is_array($groupdetails['memberof'])){
foreach($groupdetails['memberof'] as $subgroup){
$subgroups[] = $subgroup;
$sgr = substr($subgroup,0,strpos($subgroup,','));
$sgrou = substr($subgroup,strpos($subgroup,',')+1);
$subsubgroups = array_merge((array)get_groups_memberships($sgr,$sgrou),(array)$subsubgroups);
}
$result = array_merge($subgroups,$subsubgroups);
return $result;
}
}
function get_ldap_group_details($group,$ou){
//echo '<font color="red"><b>'.$group.'#'.$ou.'</b></font><br>';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
if($sr=@ldap_search($ds, $ou, $group)){
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info[0] as $detailname => $detail){
for ($i=0; $i<$detail["count"]; $i++) {
$groupdetails[$detailname][$i] = $detail[$i];
}
}
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($groupdetails);
}
Merci pour la réponse,
ça doit être ici:
[code]<?php
include('adodb-time.inc.php');
function dirNameToUserName($dirname){
$start = strpos($dirname,'=')+1;
$end = strpos($dirname,',');
return(substr($dirname,$start,$end-$start));
}
function sfile($file){
$tmp = file($file);
foreach($tmp as $line){
$ttmp = explode(';',$line);
$result[$ttmp[0]] = $ttmp[1];
}
return $result;
}
function showoptions($options,$selectedoption){
natcasesort($options);
foreach($options as $optionname => $anoption){
if(trim($anoption)){
if(strtolower(trim($optionname))==strtolower($selectedoption)){
$selected = ' selected';
$seloptexists = 1;
}else{
$selected = '';
}
$result .= '<option'.$selected.' value="'.$optionname.'">'.trim($anoption)."\n";
}
}
if($selectedoption == ''){
$result = '<option selected value="">'.$result;
}
if(($selectedoption)and($seloptexists == '')){
$result = '<option selected value="">[unknown] '.$selectedoption.$result."\n";
}
return($result);
}
function createrandompassword(){
$chars = "abcdefghijkmnpqrstuvwxyz23456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 8) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
function createreasypassword(){
$chars = "AEIUY";
$chars1 = "BCDFGHJKMNPQRSTVWXZ";
srand((double)microtime()*1000000);
$pass = substr($chars1,(rand() % 33),1).substr($chars,(rand() % 33),1).substr($chars1,(rand() % 33),1).substr($chars,(rand() % 33),1);
return $pass;
}
function get_ldap_users(){
$cachefile = 'cache/users.txt';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
$cache_timeout = 15; // In seconds
// CHECK AGE and EXISTENCE OF CACHE
$filename = $cachefile;
if (file_exists($filename)) {
if(($cache_timeout) > (time() - filemtime($filename))){
$cached = 1;
}else{
$cached = 0;
}
}else{
$cached = 0;
}
// GET DATA
if($cached){
// READ CACHE FILE TO ARRAY
$users = sfile($cachefile);
}else{
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "sn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all entries
for ($i=0; $i<$info["count"]; $i++) {
$users[$info[$i]['cn'][0]] = $info[$i]['sn'][0].', '.$info[$i]['givenname'][0];
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
// WRITE CACHE FILE FROM ARRAYS
$cfile = fopen($cachefile,"w");
foreach($users as $n => $dn){
fwrite($cfile, $n.';'.$dn."\n");
}
fclose($cfile);
}
return($users);
}
function get_ldap_users_details(){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "sn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($info);
}
function get_ldap_groups($ou){
$cachefile = 'cache/groups.txt';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $ou.','.$GLOBALS['domain'];
$cache_timeout = 15; // In seconds
// CHECK AGE and EXISTENCE OF CACHE
$filename = $cachefile;
if (file_exists($filename)) {
if(($cache_timeout) > (time() - filemtime($filename))){
$cached = 1;
}else{
$cached = 0;
}
}else{
$cached = 0;
}
// GET DATA
if($cached){
// READ CACHE FILE TO ARRAY
$groups = sfile($cachefile);
}else{
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search groupname entry
$sr=ldap_search($ds, $ou, "cn=*");
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all entries
for ($i=0; $i<$info["count"]; $i++) {
$groups[$info[$i]['cn'][0]] = $info[$i]['cn'][0];
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
// WRITE CACHE FILE FROM ARRAYS
$cfile = fopen($cachefile,"w");
foreach($groups as $n => $dn){
fwrite($cfile, $n.';'.$dn."\n");
}
fclose($cfile);
}
return($groups);
}
function get_ldap_user_details($userCn){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "cn=".$userCn);
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info[0] as $detailname => $detail){
for ($i=0; $i<$detail["count"]; $i++) {
$userdetails[$detailname][$i] = $detail[$i];
}
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($userdetails);
}
function ldap_user_exists($userCn){
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
$ou = $GLOBALS['userou'].','.$GLOBALS['domain'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
$sr=ldap_search($ds, $ou, "cn=".$userCn);
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info as $user){
$result .= $user;
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($result);
}
function get_memberships($user){
$userdetails = @get_ldap_user_details($user);
foreach($userdetails['memberof'] as $group){
//echo '<b>=='.$group.'==</b><br>';
$gr = substr($group,0,strpos($group,','));
$grou = substr($group,strpos($group,',')+1);
$subgroups = array_merge((array)get_groups_memberships($gr,$grou),(array)$subgroups);
}
$result = @array_merge($userdetails['memberof'],$subgroups);
return $result;
}
function get_groups_memberships($gr,$grou){
$groupdetails = get_ldap_group_details($gr,$grou);
if(is_array($groupdetails['memberof'])){
foreach($groupdetails['memberof'] as $subgroup){
$subgroups[] = $subgroup;
$sgr = substr($subgroup,0,strpos($subgroup,','));
$sgrou = substr($subgroup,strpos($subgroup,',')+1);
$subsubgroups = array_merge((array)get_groups_memberships($sgr,$sgrou),(array)$subsubgroups);
}
$result = array_merge($subgroups,$subsubgroups);
return $result;
}
}
function get_ldap_group_details($group,$ou){
//echo '<font color="red"><b>'.$group.'#'.$ou.'</b></font><br>';
// GET LDAP DATA CONFIG
$user_dn = $GLOBALS['ldapUserDn'];
$ldappass = $GLOBALS['ldapUserPwd'];
$base_dn = $GLOBALS['domain'];
$server = $GLOBALS['ldapserver'];
// READ ALL INFO DIRECTLY FROM LDAP/AD
$ds=ldap_connect($server);
if ($ds) {
// binding to ldap server
$r = ldap_bind($ds, $user_dn, $ldappass);
// verify binding
if (!$r) {
echo "LDAP bind failed..."."\n";
}
// Search surname entry
if($sr=@ldap_search($ds, $ou, $group)){
// Get entries
$info = ldap_get_entries($ds, $sr);
// Get all details in simple array
foreach($info[0] as $detailname => $detail){
for ($i=0; $i<$detail["count"]; $i++) {
$groupdetails[$detailname][$i] = $detail[$i];
}
}
}
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>"."\n";
}
return($groupdetails);
}
[/code]