*/ if(isset($adduid) && $adduid){ // Locate all users in this domain and check if the user exists. $dn = "ou=People,domain=$domain,ou=Domains, $basedn"; $filter = "(objectClass=mailaccount)"; $sr = ldap_search($ds,$dn,$filter); $users = ldap_get_entries($ds, $sr); for($i=0;$i<$users["count"];$i++){ if($users[$i]["uid"][0]==$adduid) $exists=TRUE; } if (!preg_match("/^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*$/", $adduid)){ $status = "Illegal username '$adduid'"; } else if(!$exists){ unset($info); $id = "uid=$adduid, ou=People, domain=$domain, ou=Domains,$basedn"; $info["objectclass"] = "mailaccount"; $info["uid"] = $adduid; $info["cn"] = utf8_encode($addcn); $info["domain"] = $domain; $info["userPassword"] = "{crypt}" . crypt($addpassword, makeSalt()); $info["homeDirectory"] = $homedir . $domain . "/" . $adduid . "/"; $info["mailDir"] = $maildir . $domain . "/" . $adduid . "/"; $info["mail"] = $adduid . "@" . $domain; $info["mailAddr"] = $adduid . "@" . $domain; # $info["vacation"] = ""; # $info["vacationMsg"] = ""; $r=ldap_add ($ds, $id, $info); if ($r){ // Add the user in the domains addressbook. unset($info); // Deletes var info. $id = "address=$adduid@$domain, ou=Addressbook, domain=$domain, ou=Domains, $basedn"; $info["objectclass"] = "addressbookEntry"; $info["cn"] = utf8_encode($addcn); $info["mail"] = $adduid . "@" . $domain; ldap_add ($ds, $id, $info); // Add the users addressbook unset($info); $id = "ou=Addressbook,uid=$adduid, ou=People, domain=$domain, ou=Domains, $basedn"; $info["ou"] = "Addressbook"; $info["objectclass"] = "addressbook"; ldap_add ($ds, $id, $info); // Add Modules unset($info); $id = "ou=Modules, uid=$adduid, ou=People, domain=$domain, ou=Domains,$basedn"; $info["ou"] = "Modules"; $info["objectclass"] = "module"; $r=ldap_add ($ds, $id, $info); $status = "User '$adduid' added."; // Sends an mail to the added user. mail ( "$adduid@$domain", "Welcome to $domain", "Your account is working", "From: postmaster@$domain"); } else $status = "User '$adduid' NOT added. Error...."; }else $status = "User '$adduid' exist."; // Done adduser. } // Delete users. if( isset($deluser) && $deluser){ unset($info); // Delete from domain addressbook $dn="ou=Addressbook, domain=$domain, ou=Domains, $basedn"; $filter="(mail=$deluser@$domain)"; $sr=ldap_search($ds,$dn,$filter); $info = ldap_get_entries($ds, $sr); if($info["count"]){ $deldn = "address=$deluser@$domain, ou=Addressbook, ". "domain=$domain, ou=Domains, $basedn"; ldap_delete($ds,$deldn); } // Delete the names in the addressbook $dn="ou=Addressbook, uid=$deluser,ou=People,domain=$domain,". " ou=Domains, $basedn"; $filter="(objectclass=addressbookEntry)"; $sr=ldap_search($ds,$dn,$filter); $info = ldap_get_entries($ds, $sr); for ($i=0; $i<$info["count"]; $i++) { $deldn = $info[$i]["dn"]; ldap_delete($ds,$deldn); } // Delete the modules in the moduledir $dn="ou=Modules, uid=$deluser,ou=People,domain=$domain,". " ou=Domains, $basedn"; $filter="(objectclass=moduleentry)"; $sr=ldap_search($ds,$dn,$filter); $info = ldap_get_entries($ds, $sr); for ($i=0; $i<$info["count"]; $i++) { $deldn = $info[$i]["dn"]; ldap_delete($ds,$deldn); } // Delete the module directory $deldn ="ou=Modules, uid=$deluser,ou=People,domain=$domain,ou=Domains,$basedn"; ldap_delete($ds,$deldn); // Delete the addressbook directory $deldn ="ou=Addressbook, uid=$deluser,ou=People,domain=$domain,ou=Domains,$basedn"; ldap_delete($ds,$deldn); // Delete the person $deldn ="uid=$deluser, ou=People,domain=$domain,ou=Domains,$basedn"; ldap_delete($ds,$deldn); unset ($user); } // Add alias. if( isset($alias) && $alias){ // Get all existing aliases to check if the new exists. $dn = "ou=People,domain=$domain,ou=Domains, $basedn"; $filter = "(objectClass=mailaccount)"; $sr = ldap_search($ds,$dn,$filter); $getalias = ldap_get_entries($ds, $sr); // NB: A user can have more than one alias. for($i=0;$i<$getalias["count"];$i++){ for($j=0;$j<$getalias[$i]["count"];$j++){ if($getalias[$i]["alias"][$j]==$alias) $exists=TRUE; } } // An alias can not contain domain-part if (preg_match("/@/", $alias)){ $status = "An alias can not contain a domain part."; } else if (!preg_match("/^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*$/", $alias)){ $status = "Illegal alias '$alias'"; } else if(!isset($exists)){ unset($info); $dn ="uid=$user, ou=People,domain=$domain, ou=Domains, $basedn"; $info["alias"] = $alias; $r=ldap_mod_add ($ds, $dn, $info); $status = "Alias '$alias' added."; } else $status = "Alias '$alias' exists."; } // Delete alias. if( isset($delalias) && $delalias){ unset($info); $dn ="uid=$user, ou=People,domain=$domain, ou=Domains, $basedn"; $info["alias"] = $delalias; $r=ldap_mod_del ($ds, $dn, $info); $status = "Alias '$delalias' deleted."; } // The Domain-admin can change forward info: if( isset($forward) && $forward) { // add forward if(!preg_match("/@/", $forward)){ //The forward entry in ldap needs the domain part $forward = $forward . "@" . $domain; } if (!preg_match("/^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*@[a-zA-Z0-9\._-]+$/", $forward)){ $status = "Illegal address '$forward'"; } else { unset($info); $dn ="uid=$user, ou=People,domain=$domain, ou=Domains, $basedn"; $info["forward"] = $forward; ldap_mod_add ($ds, $dn, $info); $status ="Forward added."; } } elseif( isset($delfwdname) && $delfwdname) { // Delete forward unset($info); $dn ="uid=$user, ou=People,domain=$domain, ou=Domains, $basedn"; $info["forward"] = $delfwdname; ldap_mod_del ($ds, $dn, $info); $status ="Forward deleted."; } // Add mailinglist. if ( isset ($addlist) && $addlist){ // Get all mailinglist from this domain. // Check if the list exists. $addlist = strtolower ($addlist); $dn = "ou=Lists,domain=$domain,ou=Domains, $basedn"; $filter = "(objectClass=mailinglist)"; $sr = ldap_search($ds,$dn,$filter); $getlist = ldap_get_entries($ds, $sr); for($i=0;$i<$getlist["count"];$i++){ if($getlist[$i]["listname"][0]==$addlist) $exists=TRUE; } if(!$exists){ if(!preg_match("/@/", $listadmin)){ //The listadmin entry in ldap needs the domain part $listadmin = $listadmin . "@" . $domain; } unset($info); $id = "listname=$addlist, ou=Lists, domain=$domain, ou=Domains, $basedn"; $info["listname"] = $addlist; $info["listadmin"] = $listadmin; $info["objectClass"] = "mailinglist"; $info["userpassword"] = "{crypt}" . crypt($listpassword, makeSalt()); ldap_add ($ds, $id, $info); $status = "List '$addlist' added."; mail ("$listadmin", "New mailinglist.", "You are the administrator for $addlist@$domain.\n" . "The password is $listpassword.\n" . "\n\nYou will soon receive another mail with information about the mailinglist\n", "FROM: postmaster@$domain" ); }else $status = "List '$addlist' exists."; } // Delete mailinglist. if( isset($dellists) && $dellists){ $deldn ="listname=$dellists,ou=Lists,domain=$domain,ou=Domains,$basedn"; ldap_delete($ds,$deldn); $status = "List '$dellist' deleted."; } //Change username if ( isset($newcn) && $newcn){ unset ($info); $info["cn"] = utf8_encode($newcn); $dn= "uid=$user, ou=People, domain=$domain,ou=Domains,$basedn"; if (ldap_modify($ds, $dn, $info)) $status = "Full name changed"; else $status = "Error changing full name"; } // Change userpassord. if ( isset($newpasswd) && $newpasswd){ if($newpasswd == $newpasswd2){ unset ($info); $info["userpassword"] = "{crypt}" . crypt($newpasswd, makeSalt()); $dn= "uid=$user, ou=People, domain=$domain,ou=Domains,$basedn"; ldap_modify($ds, $dn, $info); unset ($newpasswd); $status = "Password for '$user' changed."; } else{ $status = "Password not changed. Try again."; unset ($newpasswd); } } $dn ="ou=People,domain=$domain,ou=Domains, $basedn"; $filter="(objectClass=mailaccount)"; $sr=ldap_search($ds,$dn,$filter); $info_userlist = ldap_get_entries($ds, $sr); // html output. ?>
1 ) { usort($info_userlist, "usersort"); } for ($i=0; $i<$listcount; $i++) { if (!(($info_userlist[$i]["uid"][0])=="")) { ?>
Does not have any users.
User:
Mail:
Full name: \" value=\"". utf8_decode($info[0]["cn"][0]). "\">"; ?>
Change user password
New password:
Confirm:
Alias
Add alias:
  No alias
">
Forward
Add:
"> ">
Mailing list
List name:
List admin:
List password: (It may take a few minutes to create the list)
">
">

Add new user

Add user
Username:
Full Name:
Password:

List of users for domain

Enter: Username: Delete:
">
">
Status: