search_units($_POST['usersuff_n']))) {
// add new ou
$ou = array();
$ou['objectClass'] = "organizationalunit";
$ou['ou'] = $_POST['newsuff_u'];
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
if ($ret) {
$message = _("New OU created successfully.");
}
else {
$error = _("Unable to create new OU!");
}
}
else $error = _("OU already exists!");
}
// show errormessage if ou is invalid
else {
$error = _("OU is invalid!") . " " . $_POST['newsuff_u'];
}
}
// delete ou, user was sure
elseif (($_POST['type'] == "del_usr") && ($_POST['sure'])) {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['usersuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['usersuff_d']);
if ($ret) {
$message = _("OU deleted successfully.");
}
else {
$error = _("Unable to delete OU!");
}
}
else {
$error = _("OU is not empty!");
}
}
// do not delete ou
elseif (($_POST['type'] == "del_usr") && ($_POST['abort'])) {
display_main();
exit;
}
// ask if user is sure to delete
elseif ($_POST['type'] == "del_usr") {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['usersuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$text = "
\n" .
"
" . _("Do you really want to delete this OU?") . " " . "\n" .
"
\n
" . $_POST['usersuff_d'] . "
\n" .
"
\n" .
"";
}
else {
$error = _("OU is not empty!");
}
}
// group operations
// new group ou
if ($_POST['type'] == "new_grp") {
// create ou if valid
if (eregi("^[a-z0-9_\\-]+$", $_POST['newsuff_g'])) {
// check if ou already exists
$new_dn = "ou=" . $_POST['newsuff_g'] . "," . $_POST['groupsuff_n'];
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['groupsuff_n']))) {
// add new ou
$ou = array();
$ou['objectClass'] = "organizationalunit";
$ou['ou'] = $_POST['newsuff_g'];
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
if ($ret) {
$message = _("New OU created successfully.");
}
else {
$error = _("Unable to create new OU!");
}
}
else $error = _("OU already exists!");
}
// show errormessage if ou is invalid
else {
$error = _("OU is invalid!") . " " . $_POST['newsuff_g'];
}
}
// delete ou, user was sure
elseif (($_POST['type'] == "del_grp") && ($_POST['sure'])) {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['groupsuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['groupsuff_d']);
if ($ret) {
$message = _("OU deleted successfully.");
}
else {
$error = _("Unable to delete OU!");
}
}
else {
$error = _("OU is not empty!");
}
}
// do not delete ou
elseif (($_POST['type'] == "del_grp") && ($_POST['abort'])) {
display_main();
exit;
}
// ask if user is sure to delete
elseif ($_POST['type'] == "del_grp") {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['groupsuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$text = "
\n" .
"" . _("Do you really want to delete this OU?") . " " . "\n" .
"
\n
" . $_POST['groupsuff_d'] . "
\n" .
"
\n" .
"";
}
else {
$error = _("OU is not empty!");
}
}
// host operations
// new host ou
if ($_POST['type'] == "new_hst") {
// create ou if valid
if (eregi("^[a-z0-9_\\-]+$", $_POST['newsuff_h'])) {
// check if ou already exists
$new_dn = "ou=" . $_POST['newsuff_h'] . "," . $_POST['hostsuff_n'];
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['hostsuff_n']))) {
// add new ou
$ou = array();
$ou['objectClass'] = "organizationalunit";
$ou['ou'] = $_POST['newsuff_h'];
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
if ($ret) {
$message = _("New OU created successfully.");
}
else {
$error = _("Unable to create new OU!");
}
}
else $error = _("OU already exists!");
}
// show errormessage if ou is invalid
else {
$error = _("OU is invalid!") . " " . $_POST['newsuff_h'];
}
}
// delete ou, user was sure
elseif (($_POST['type'] == "del_hst") && ($_POST['sure'])) {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['hostsuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['hostsuff_d']);
if ($ret) {
$message = _("OU deleted successfully.");
}
else {
$error = _("Unable to delete OU!");
}
}
else {
$error = _("OU is not empty!");
}
}
// do not delete ou
elseif (($_POST['type'] == "del_hst") && ($_POST['abort'])) {
display_main();
exit;
}
// ask if user is sure to delete
elseif ($_POST['type'] == "del_hst") {
// check for sub entries
$sr = ldap_list($_SESSION['ldap']->server(), $_POST['hostsuff_d'], "ObjectClass=*", array(""));
$info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
if ($info['count'] == 0) {
$text = "
\n" .
"" . _("Do you really want to delete this OU?") . " " . "\n" .
"
\n
" . $_POST['hostsuff_d'] . "
\n" .
"
\n" .
"";
}
else {
$error = _("OU is not empty!");
}
}
// print header
echo ("\n");
echo ("\n");
echo ("\n");
echo ("\n");
echo ("OU-Editor\n");
echo ("\n");
echo ("\n");
echo ("\n");
// display messages
if ($error || $message || $text) {
if ($text) echo $text;
elseif ($error) {
StatusMessage("ERROR", "", $error);
echo ("
" . _("Back to OU-Editor") . "\n");
}
else {
StatusMessage("INFO", "", $message);
echo ("
" . _("Back to OU-Editor") . "\n");
}
}
echo ("\n");
exit;
}
else display_main();
function display_main() {
// generate lists of possible suffixes
$usr_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_UserSuffix());
$grp_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_GroupSuffix());
$hst_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_HostSuffix());
// display main page
echo ("\n");
echo ("\n");
echo ("\n");
echo ("\n");
echo ("OU-Editor\n");
echo ("\n");
echo ("\n");
echo ("\n");
echo ("\n");
echo ("\n");
}