LDAP Browser/1.1 - dn:
basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $ldap->ls(); echo "

Index of " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously)\n";
	if ($message)
		echo "$message\n";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; } while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function modifyAttributeForm() { global $attribute, $value, $dn, $valueNum; $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $ldap->ls(); echo "

Modifying attribute $attribute of " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously, your modifications will fail)\n";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) { if ($attribute == $attrs[$ctr] && $valueNum == $ctr2) { if ($attribute == "objectclass") echo ' ' . $attrs[$ctr] . "[$ctr2] = " . ' ' . "\n"; else echo ' ' . $attrs[$ctr] . "[$ctr2] = " . ' ' . "\n"; } else echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; } } while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function modifyAttribute() { global $attribute, $newvalue, $oldvalue, $dn; $ldap = new LDAP(); $ldap->cd($dn); if (!$ldap->cat($dn)) return(0); if ($newvalue == "") return("Attribute values may not be blank"); $attrs = $ldap->fetch(); for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { for ($ctr3 = 0, $ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) { if ($attrs[$ctr] == $attribute) { if ($attrs[$attribute][$ctr2] == $oldvalue) $new[$attribute][$ctr3++] = $newvalue; else $new[$attribute][$ctr3++] = $attrs[$attribute][$ctr2]; } } } $ldap->rename($new); } function addAttributeForm() { global $dn; $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $ldap->ls(); echo "

Adding attribute to to " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously, your modifications will fail)\n";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; echo ' '; for ($ctr = 0; $ctr < $attrs["objectclass"]["count"]; $ctr++) { $tmpAtt = $ldap->getAllows($attrs["objectclass"][$ctr]); for ($ctr2 = 0; $ctr2 < count($tmpAtt); $ctr2++) $availAttrs[$tmpAtt[$ctr2]] = 1; $tmpAtt = $ldap->getRequires($attrs["objectclass"][$ctr]); for ($ctr2 = 0; $ctr2 < count($tmpAtt); $ctr2++) $availAttrs[$tmpAtt[$ctr2]] = 1; } echo "= "; echo '' . "\n"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; } while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function addAttribute() { global $dn, $newAttribute, $newValue; $ldap = new LDAP(); $ldap->cd($dn); $ldap->cat($dn); $oldattrs = $ldap->fetch(); for ($ctr = 0; $ctr < $oldattrs[$newAttribute]["count"]; $ctr++) $attrs[$newAttribute][$ctr] = $oldattrs[$newAttribute][$ctr]; $attrs[$newAttribute][$ctr] = $newValue; $ldap->modify($attrs); return($ldap->error); } function addObjectClassForm() { global $dn; $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $ldap->ls(); echo "

Adding objectClass to " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously, your modifications will fail)\n";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; echo ' ' . "objectClass = "; $ocs = $ldap->getObjectClasses(); echo ""; echo '' . "\n"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; } while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function addObjectClassAttributesForm() { global $dn, $newObjectClass; $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $OCexists = 0; for ($ctr = 0; $ctr < count($attrs["objectclass"]); $ctr++) if (strcasecmp($newObjectClass, $attrs["objectclass"][$ctr]) == 0) { showDirectory("This directory already contains the $newObjectClass objectClass\n"); return(0); } $ldap->ls(); echo "

Adding objectClass $newObjectClass to " . dn2path($ldap->basedn) . "

\n
";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; $flag = 0; $requires = $ldap->getRequires($newObjectClass); echo "\nRequired\n
"; for ($ctr = 0; $ctr < count($requires); $ctr++) if (! $attrs[$requires[$ctr]]) { echo ' ' . $requires[$ctr] . ' = ' . "\n"; $flag = 1; } if (! $flag) echo "All required fields already exist\n"; $flag = 0; $allows = $ldap->getAllows($newObjectClass); echo "\nAllowed\n
"; for ($ctr = 0; $ctr < count($allows); $ctr++) if (! $attrs[$allows[$ctr]]) { echo ' ' . $allows[$ctr] . ' = ' . "\n"; $flag = 1; } if (! $flag) echo "All allowed fields already exist\n"; echo "\n" . ' '; echo "\nExisting\n
"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) { if (! ($ldap->isRequired($newObjectClass, $attrs[$ctr]) || $ldap->isAllowed($newObjectClass, $attrs[$ctr]))) echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; } } while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function addObjectClassAttributes() { global $dn, $newObjectClass; $ldap = new LDAP(); $ldap->cd($dn); $ldap->cat($dn); $attrs = $ldap->fetch(); $ctr = 0; for (reset($GLOBALS["HTTP_POST_VARS"]); $k = key($GLOBALS["HTTP_POST_VARS"]); next($GLOBALS["HTTP_POST_VARS"])) if (substr($k, 0, 9) == "ATTRFIELD" && $GLOBALS["HTTP_POST_VARS"][$k] != "") $attrAdded[substr($k, 9)][0] = $GLOBALS["HTTP_POST_VARS"][$k]; $attrAdded["objectclass"][0] = $newObjectClass; for ($ctr = 0; $ctr < $attrs["objectclass"]["count"]; $ctr++) $attrAdded["objectclass"][$ctr+1] = $attrs["objectclass"][$ctr]; if (!$ldap->modify($attrAdded)) return($ldap->error); return(""); } function dn2path($dn) { $tmp = ldap_explode_dn($dn, 1); for ($ctr = count($tmp)-1; $ctr >= 0; $ctr--) $path .= $tmp[$ctr] . "/"; return($path); } function deleteAttribute() { global $dn, $attribute, $oldvalue; if ($attribute == "objectclass") return(deleteObjectClassForm()); $ldap = new LDAP(); $ldap->getObjectClasses(); $ldap->cd($dn); if (!$ldap->cat($dn)) return("Couldn't read entry $dn"); $attrs = $ldap->fetch(); $flag = 0; for ($ctr = 0; $ctr < $attrs["objectclass"]["count"]; $ctr++) if ($ldap->isRequired($attrs["objectclass"][$ctr], $attribute)) $flag = 1; if ($flag) return("The '$attribute' attribute is required by one or more objectclasses"); $delAttrs[$attribute] = $oldvalue; $ldap->rm($delAttrs); } function deleteObjectClassForm() { global $dn, $attribute, $oldvalue; $delAttr = array(); $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->getObjectClasses(); $ldap->cd($dn); if (!$ldap->cat($dn)) return("Couldn't read entry $dn"); $attrs = $ldap->fetch(); $ldap->ls(); echo "

Index of " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously)\n";
	echo $message;
	echo "
\n"; $delOC = $oldvalue; for ($ctr = 0, $ctr2 = 0; $ctr < $attrs["objectclass"]["count"]; $ctr++) if ($attrs["objectclass"][$ctr] != $delOC) $keepOC[$ctr2++] = $attrs["objectclass"][$ctr]; for ($ctr = 0, $ctr3 = 0; $ctr < $attrs["count"]; $ctr++) { $flag = 0; if ($attrs[$ctr] == "objectclass") continue; for ($ctr2 = 0; $ctr2 < count($keepOC); $ctr2++) if ($ldap->isRequired($keepOC[$ctr2], $attrs[$ctr]) || $ldap->isAllowed($keepOC[$ctr2], $attrs[$ctr])) { $flag = 1; break; } if ($flag == 0) $deleteAttrs[$ctr3++] = $attrs[$ctr]; } echo "
Deleting the '$delOC' objectClass requires that the following attributes are deleted:
\n"; echo "
"; echo "
"; } function deleteObjectClass() { global $dn, $delOC; $ldap = new LDAP(); $ldap->cd($dn); for (reset($GLOBALS["HTTP_POST_VARS"]); $k = key($GLOBALS["HTTP_POST_VARS"]); next($GLOBALS["HTTP_POST_VARS"])) { if (substr($k, 0, 10) == "DELETEATTR") { $ind = substr($k, 10); for ($ctr = 0; $ctr < count($GLOBALS["HTTP_POST_VARS"][$k]); $ctr++) $delArray[$ind][$ctr] = $GLOBALS["HTTP_POST_VARS"][$k][$ctr]; } } $delArray["objectclass"][0] = $delOC; if (! $ldap->rm($delArray)) return(ldap_error($ldap->cid)); return(""); } function addDirectoryForm() { global $dn; $ldap = new LDAP(); if (!$dn) $dn = $ldap->basedn; $ldap->cd($dn); if ($ldap->cat($dn)) $attrs = $ldap->fetch(); $ldap->ls(); echo "

Adding subdirectory to " . dn2path($ldap->basedn) . "

\n
";
	if (!$ldap->binddn)
		echo "(You are logged in anonymously, your modifications will fail)\n";
	echo '      Name                          Add ObjectClass          Add Attribute        New Folder';
	echo "
\n"; if ($ldap->getParentDir()) echo ' Parent Directory' . "\n"; echo ' = ' . "\n"; for ($ctr = 0; $ctr < $attrs["count"]; $ctr++) for ($ctr2 = 0; $ctr2 < $attrs[$attrs[$ctr]]["count"]; $ctr2++) echo ' ' . $attrs[$ctr] . "[$ctr2] = " . $attrs[$attrs[$ctr]][$ctr2] . "\n"; while ($ldap->fetch()) { $shortDN = ldap_explode_dn($ldap->getDN(), 1); $shortDN = $shortDN[0]; echo ' ' . $shortDN . "/\n"; } echo "

"; } function addDirectory() { global $dn, $newAttr, $newValue; $ldap = new LDAP(); $ldap->cd($dn); if (!$ldap->mkdir($newAttr, $newValue)) return($ldap->error); return(""); } htmlStart(); switch ($mode) { case "browse": showDirectory(); break; case "addDirectory": addDirectoryForm(); break; case "submitAddDirectory": showDirectory(addDirectory()); break; case "modifyAttribute": modifyAttributeForm(); break; case "submitModifyAttribute": if ($submit == " Delete ") deleteAttribute(); else showDirectory(modifyAttribute()); break; case "addObjectClass": addObjectClassForm(); break; case "submitAddObjectClass"; addObjectClassAttributesForm(); break; case "submitAddObjectClassAttributes"; showDirectory(addObjectClassAttributes()); break; case "addAttribute"; addAttributeForm(); break; case "submitAddAttribute"; showDirectory(addAttribute()); break; case "confirmDeleteObjectClass"; if ($submit == " Cancel ") showDirectory("objectClass Deletion Canceled"); else showDirectory(deleteObjectClass()); break; } htmlEnd();