implemented adding and editing of domains

This commit is contained in:
Roland Gruber 2003-07-27 14:22:13 +00:00
parent 135c6ed96f
commit 06c7745c84
1 changed files with 115 additions and 1 deletions

View File

@ -148,11 +148,20 @@ if (($_GET['action'] == "edit") || ($_GET['action'] == "new")) {
// next RID
echo "<td><b>" . _("Algorithmic RID Base") . ": </b></td>\n";
echo "<td>\n";
echo "<input type=\"text\" name=\"dom_RIDbase\" value=\"" . $domain->RIDbase . "\">\n";
if ($_GET['action'] == "edit") echo $domain->RIDbase . "\n";
else echo "<input type=\"text\" name=\"dom_RIDbase\" value=\"" . $domain->RIDbase . "\">\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</fieldset>\n";
// post DN and old RID values
echo "<input type=\"hidden\" name=\"dom_DN\" value=\"" . $domain->dn . "\">";
echo "<input type=\"hidden\" name=\"dom_oldnextRID\" value=\"" . $domain->nextRID . "\">";
echo "<input type=\"hidden\" name=\"dom_oldnextUserRID\" value=\"" . $domain->nextUserRID . "\">";
echo "<input type=\"hidden\" name=\"dom_oldnextGroupRID\" value=\"" . $domain->nextGroupRID . "\">";
// edit or add operation
if ($_GET['action'] == "edit") echo "<input type=\"hidden\" name=\"edit\" value=\"yes\">";
else echo "<input type=\"hidden\" name=\"add\" value=\"yes\">";
echo "<p>&nbsp;</p>\n";
echo "<p>\n";
echo "<input type=\"submit\" name=\"sub_save\" value=\"" . _("Submit") . "\">\n";
@ -163,17 +172,122 @@ if (($_GET['action'] == "edit") || ($_GET['action'] == "new")) {
echo "</body>\n";
echo "</html>\n";
}
// delete domain, ask if sure
elseif ($_GET['action'] == "delete") {
// remove "\'" and make array
$DNs = str_replace("\\'", "", $_GET['DN']);
$DNs = explode(";", $DNs);
// display page
echo "<html>\n";
echo "<head>\n";
echo "<title>Domain Management</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
echo "<p>&nbsp;</p>\n";
echo "<p><b><font color=\"red\">" . _("Delete domain(s)?") . "</font></b></p>\n";
echo "<p>&nbsp;</p>\n";
for ($i = 0; $i < sizeof($DNs); $i++) {
echo "<p><b>" . $DNs[$i] . "</b></p>\n";
}
echo "<p>&nbsp;</p>\n";
echo "<form action=\"domain.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"delDN\" value=\"" . implode(";", $DNs) . "\">\n";
echo "<input type=\"submit\" name=\"sub_delete\" value=\"" . _("Delete") . "\">\n";
echo "<input type=\"submit\" name=\"sub_back\" value=\"" . _("Cancel") . "\">\n";
echo "</form>";
echo "</body>\n";
echo "</html>\n";
}
// save domain
elseif ($_POST['sub_save']) {
echo "<html>\n";
echo "<head>\n";
echo "<title>Domain Management</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
// check input
if ($_POST['add'] && !eregi("^[a-z0-9_\\-]+$", $_POST['dom_name'])) StatusMessage("ERROR", "", _("Domain name is invalid!"));
elseif ($_POST['add'] && !eregi("^S-[0-9]-[0-9]-[0-9]{2,2}-[0-9]*-[0-9]*-[0-9]*$", $_POST['dom_SID'])) {
StatusMessage("ERROR", "", _("Samba 3 domain SID is invalid!"));
}
elseif ($_POST['dom_nextRID'] && !is_numeric($_POST['dom_nextRID'])) StatusMessage("ERROR", "", _("Next RID is not a number!"));
elseif ($_POST['dom_nextUserRID'] && !is_numeric($_POST['dom_nextUserRID'])) StatusMessage("ERROR", "", _("Next user RID is not a number!"));
elseif ($_POST['dom_nextGroupRID'] && !is_numeric($_POST['dom_nextGroupRID'])) StatusMessage("ERROR", "", _("Next group RID is not a number!"));
elseif ($_POST['add'] && !is_numeric($_POST['dom_RIDbase'])) StatusMessage("ERROR", "", _("Algorithmic RID base is not a number!"));
// edit entry
elseif ($_POST['edit'] == "yes") {
$success = true;
// change attributes
$attr = array();
if ($_POST['dom_nextRID'] != $_POST['dom_oldnextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID'];
if ($_POST['dom_nextUserRID'] != $_POST['dom_oldnextUserRID']) $attr['sambaNextUserRid'] = $_POST['dom_nextUserRID'];
if ($_POST['dom_nextGroupRID'] != $_POST['dom_oldnextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
if (sizeof($attr) > 0) $success = ldap_modify($_SESSION['ldap']->server(), $_POST['dom_DN'], $attr);
// change suffix
$RDN = explode(",", $_POST['dom_DN']);
$RDN = $RDN[0];
$newDN = $RDN . "," . $_POST['dom_suffix'];
if ($_POST['dom_DN'] != $newDN) {
$success = ldap_rename($_SESSION['ldap']->server(), $_POST['dom_DN'], $RDN, $_POST['dom_suffix'], true);
}
if ($success) StatusMessage("INFO", "Domain has been modified.", $DN);
else StatusMessage("ERROR", "", "Failed to modify domain!");
}
// add entry
else {
$DN = "sambaDomainName" . "=" . $_POST['dom_name'] . "," . $_POST['dom_suffix'];
$attr = array();
$attr['objectclass'] = "sambaDomain";
$attr['sambaDomainName'] = $_POST['dom_name'];
$attr['sambaSID'] = $_POST['dom_SID'];
$attr['sambaNextRid'] = $_POST['dom_nextRID'];
$attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
$attr['sambaNextUserRid'] = $_POST['dom_nextUserRID'];
$attr['sambaAlgorithmicRidBase'] = $_POST['dom_RIDbase'];
// write to LDAP
if (ldap_add($_SESSION['ldap']->server(), $DN, $attr)) {
StatusMessage("INFO", "Domain has been created.", $DN);
}
else StatusMessage("ERROR", "", "Failed to add domain!");
}
echo "<p>&nbsp;</p>\n";
echo "<p><a href=\"lists/listdomains.php\">" . _("Back to domain list") . "</a></p>\n";
echo "</body>\n";
echo "</html>\n";
}
// back to list
elseif ($_POST['sub_back']) {
echo("<meta http-equiv=\"refresh\" content=\"0; URL=lists/listdomains.php\">");
}
// delete domain, user was sure
elseif ($_POST['sub_delete']) {
$DNs = explode(";", $_POST['delDN']);
// display page
echo "<html>\n";
echo "<head>\n";
echo "<title>Domain Management</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
echo "</head>\n";
echo "<body>\n";
// delete DNs
for ($i = 0; $i < sizeof($DNs); $i++) {
if (ldap_delete($_SESSION['ldap']->server(), $DNs[$i])) StatusMessage("INFO", "Domain deleted successfully.", $DNs[$i]);
else StatusMessage("ERROR", "Unable to delete domain!", $DNs[$i]);
}
echo "<p>&nbsp;</p>\n";
echo "<p><a href=\"lists/listdomains.php\">" . _("Back to domain list") . "</a></p>\n";
echo "</body>\n";
echo "</html>\n";
}
?>