search_domains($_SESSION['config']->get_domainSuffix());
// get possible suffixes
$domsuff = $_SESSION['ldap']->search_units($_SESSION['config']->get_domainSuffix());
if ($_GET['action'] == "edit") {
// remove "\'"
$_GET['DN'] = str_replace("\\'", "", $_GET['DN']);
// load attributes from domain
for ($i = 0; $i < sizeof($domlist); $i++) {
if ($domlist[$i]->dn == $_GET['DN']) {
$domain = $domlist[$i];
break;
}
}
// get suffix
$tmp_arr = explode(",", $domain->dn);
array_shift($tmp_arr);
$domain_suffix = implode(",", $tmp_arr);
}
else {
$domain = new samba3domain();
$domain_suffix = $_SESSION['config']->get_domainSuffix();
}
// display page
echo $_SESSION['header'];
echo "\n";
echo "
\n";
echo "Domain Management\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
// print message, if needed
if ($_SESSION['domain_message']) StatusMessage("INFO", $_SESSION['domain_message'], "");
// print fieldset
echo "\n";
echo "\n";
echo "\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 "\n";
echo "\n";
echo "Domain Management\n";
echo "\n";
echo "\n";
echo "\n";
echo "
\n";
echo "\n";
echo "\n";
echo "\n";
}
// save domain
elseif ($_POST['sub_save']) {
echo "\n";
echo "\n";
echo "Domain Management\n";
echo "\n";
echo "\n";
echo "\n";
// check input
if ($_POST['add']) { // check for existing domains
$suffix = $_SESSION['config']->get_DomainSuffix();
$server = $_SESSION['ldap']->server;
$filter = "(|(sambasid=" . $_POST['dom_SID'] . ")(sambadomainname=" . $_POST['dom_name'] . "))";
$sr = ldap_search($server, $suffix, $filter, array());
$info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
}
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['add'] && ($info["count"] > 0)) {
StatusMessage("ERROR", "", _("This Samba 3 domain is already present!"));
}
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'];
if ($_POST['dom_nextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID'];
if ($_POST['dom_nextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
if ($_POST['dom_nextUserRID']) $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!" . "\n
" . ldap_error($_SESSION['ldap']->server()));
}
echo "
\n";
echo "" . _("Back to domain list") . "
\n";
echo "\n";
echo "\n";
}
// back to list
elseif ($_POST['sub_back']) {
metaRefresh("lists/listdomains.php");
}
// delete domain, user was sure
elseif ($_POST['sub_delete']) {
$DNs = explode(";", $_POST['delDN']);
// display page
echo "\n";
echo "\n";
echo "Domain Management\n";
echo "\n";
echo "\n";
echo "\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 "
\n";
echo "" . _("Back to domain list") . "
\n";
echo "\n";
echo "\n";
}
?>