removed eronius comment
[ga4php.git] / example / adsearchtest / adtest.php
1 <?php
2
3 if($argc < 4) {
4         echo "usage: ".$argv[0]. " domain user password admingroup\n";
5         return 0;
6 }
7
8 $addom = $argv[1];
9 $adlogin = $argv[2];
10 $adpass = $argv[3];
11 $adgroup = $argv[4];
12
13 $servers = dns_get_record("_gc._tcp.$addom");
14 if(count($servers)<1) {
15         echo "AD servers cant be found, fail!\n";
16 }
17
18 echo count($servers)." AD servers returned, using ".$servers[0]["target"]."\n";
19
20 // we should check all servers, but lets just go with 0 for now
21 $cnt = ldap_connect($servers[0]["target"], $servers[0]["port"]);
22 echo "Connected\n";
23 $bind = ldap_bind($cnt, "$adlogin@$addom", "$adpass");
24 if($bind) {
25         echo "Bind passed\n";
26 } else {
27         echo "Bind Failed\n";
28 }
29
30 $ars = explode(".", $addom);
31
32 $tcn = "";
33 foreach($ars as $val) {
34         $tcn .= "DC=$val,";
35 }
36
37 $basecn = preg_replace("/,$/", "", $tcn);
38
39 //$sr = ldap_search($cnt, "$basecn", "(&(objectclass=person)(memberof=*Administrators*))");
40 $sr = ldap_search($cnt, "$basecn", "(&(objectclass=group)(CN=$adgroup))");
41 $info = ldap_get_entries($cnt, $sr);
42
43 if($info["count"] < 1) {
44         echo "Couldn't find a matching group\n";
45         return 0;
46 } else {
47         echo "Found a group, ".$info[0]["cn"][0]."\n";
48         echo "With a description of, ".$info[0]["description"][0]."\n";
49         echo "and a dn of, ".$info[0]["dn"]."\n";
50 }
51
52 //echo "info:\n";
53 //print_r($info);
54 echo "Users in this group:\n";
55 // this is the MS way of dealing with nested groups, much less painful then the possible alternatives
56 $sr = ldap_search($cnt, "$basecn", "(&(objectCategory=user)(memberof:1.2.840.113556.1.4.1941:=".$info[0]["dn"]."))");
57 $info = ldap_get_entries($cnt, $sr);
58 foreach($info as $kpot => $lpot) {
59         //print_r($kpot);
60         //print_r($lpot);
61         if(isset($lpot["samaccountname"])) {
62                 echo "User: ".$lpot["samaccountname"][0]."\n";
63         }
64         //echo "User: ".$kpot["samaaccountname"][0]."\n";
65         //echo "$kpot, $lpot\n";
66         //return 0;
67 }
68 ?>