| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | $Id$ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 18:47:12 +00:00
										 |  |  |   This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  |   Copyright (C) 2003 - 2010  Roland Gruber | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |   it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |   the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |   (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |   but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |   GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |   along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:25:15 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:25:15 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * Creates main suffixes if they are missing. | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * @author Roland Gruber | 
					
						
							|  |  |  | * @package main | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | /** security functions */ | 
					
						
							|  |  |  | include_once("../lib/security.inc"); | 
					
						
							| 
									
										
										
										
											2004-07-10 09:25:15 +00:00
										 |  |  | /** access to configuration settings */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/config.inc"); | 
					
						
							| 
									
										
										
										
											2004-07-10 09:25:15 +00:00
										 |  |  | /** LDAP access */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/ldap.inc"); | 
					
						
							| 
									
										
										
										
											2004-07-10 09:25:15 +00:00
										 |  |  | /** status messages */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/status.inc"); | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // start session
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | startSecureSession(); | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-30 16:08:54 +00:00
										 |  |  | if (!checkIfWriteAccessIsAllowed()) { | 
					
						
							|  |  |  | 	die(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | setlanguage(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // check if user already pressed button
 | 
					
						
							| 
									
										
										
										
											2010-05-07 19:12:06 +00:00
										 |  |  | if (isset($_POST['add_suff']) || isset($_POST['cancel'])) { | 
					
						
							|  |  |  | 	if (isset($_POST['add_suff'])) { | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 		$fail = array(); | 
					
						
							|  |  |  | 		$errors = array(); | 
					
						
							|  |  |  | 		$new_suff = $_POST['new_suff']; | 
					
						
							| 
									
										
										
										
											2004-02-16 19:50:22 +00:00
										 |  |  | 		$new_suff = str_replace("\\", "", $new_suff); | 
					
						
							|  |  |  | 		$new_suff = str_replace("'", "", $new_suff); | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 		$new_suff = explode(";", $new_suff); | 
					
						
							|  |  |  | 		// add entries
 | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 		for ($i = 0; $i < sizeof($new_suff); $i++) { | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 			// check if entry is already present
 | 
					
						
							| 
									
										
										
										
											2009-11-24 15:19:38 +00:00
										 |  |  | 			$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER); | 
					
						
							| 
									
										
										
										
											2007-07-08 10:51:01 +00:00
										 |  |  | 			$res = @ldap_get_entries($_SESSION['ldap']->server(), $info); | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 			if ($res) continue; | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 			$suff = $new_suff[$i]; | 
					
						
							|  |  |  | 			// generate DN and attributes
 | 
					
						
							|  |  |  | 			$tmp = explode(",", $suff); | 
					
						
							|  |  |  | 			$name = explode("=", $tmp[0]); | 
					
						
							|  |  |  | 			array_shift($tmp); | 
					
						
							|  |  |  | 			$end = implode(",", $tmp); | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 			if ($name[0] != "ou") {  // add root entry
 | 
					
						
							|  |  |  | 				$attr = array(); | 
					
						
							|  |  |  | 				$attr[$name[0]] = $name[1]; | 
					
						
							|  |  |  | 				$attr['objectClass'] = 'organization'; | 
					
						
							|  |  |  | 				$dn = $suff; | 
					
						
							|  |  |  | 				if (!@ldap_add($_SESSION['ldap']->server(), $dn, $attr)) { | 
					
						
							|  |  |  | 					$fail[] = $suff; | 
					
						
							|  |  |  | 					continue; | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 			else {  // add organizational unit
 | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 				$name = $name[1]; | 
					
						
							|  |  |  | 				$attr = array(); | 
					
						
							|  |  |  | 				$attr['objectClass'] = "organizationalunit"; | 
					
						
							|  |  |  | 				$attr['ou'] = $name; | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 				$dn = $suff; | 
					
						
							| 
									
										
										
										
											2003-10-11 15:23:08 +00:00
										 |  |  | 				if (!@ldap_add($_SESSION['ldap']->server(), $dn, $attr)) { | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 					// check if we have to add parent entries
 | 
					
						
							|  |  |  | 					if (ldap_errno($_SESSION['ldap']->server()) == 32) { | 
					
						
							|  |  |  | 						$temp = explode(",", $suff); | 
					
						
							|  |  |  | 						$subsuffs = array(); | 
					
						
							|  |  |  | 						// make list of subsuffixes
 | 
					
						
							|  |  |  | 						for ($k = 0; $k < sizeof($temp); $k++) { | 
					
						
							|  |  |  | 							$part = explode("=", $temp[$k]); | 
					
						
							|  |  |  | 							if ($part[0] == "ou") $subsuffs[] = implode(",", array_slice($temp, $k)); | 
					
						
							|  |  |  | 							else { | 
					
						
							|  |  |  | 								$subsuffs[] = implode(",", array_slice($temp, $k)); | 
					
						
							|  |  |  | 								break; | 
					
						
							|  |  |  | 							} | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 						// create missing entries
 | 
					
						
							|  |  |  | 						for ($k = sizeof($subsuffs) - 1; $k >= 0; $k--) { | 
					
						
							|  |  |  | 							// check if subsuffix is present
 | 
					
						
							| 
									
										
										
										
											2009-11-24 15:19:38 +00:00
										 |  |  | 							$info = @ldap_read($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER); | 
					
						
							| 
									
										
										
										
											2007-07-08 10:51:01 +00:00
										 |  |  | 							$res = @ldap_get_entries($_SESSION['ldap']->server(), $info); | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 							if (!$res) { | 
					
						
							|  |  |  | 								$suffarray = explode(",", $subsuffs[$k]); | 
					
						
							|  |  |  | 								$headarray = explode("=", $suffarray[0]); | 
					
						
							|  |  |  | 								if ($headarray[0] == "ou") {  // add ou entry
 | 
					
						
							|  |  |  | 									$attr = array(); | 
					
						
							|  |  |  | 									$attr['objectClass'] = 'organizationalunit'; | 
					
						
							|  |  |  | 									$attr['ou'] = $headarray[1]; | 
					
						
							|  |  |  | 									$dn = $subsuffs[$k]; | 
					
						
							|  |  |  | 									if (!@ldap_add($_SESSION['ldap']->server(), $dn, $attr)) { | 
					
						
							|  |  |  | 										$fail[] = $suff; | 
					
						
							|  |  |  | 										$error[] = ldap_error($_SESSION['ldap']->server()); | 
					
						
							|  |  |  | 										break; | 
					
						
							|  |  |  | 									} | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 								else {  // add root entry
 | 
					
						
							|  |  |  | 									$attr = array(); | 
					
						
							| 
									
										
										
										
											2004-01-07 17:45:28 +00:00
										 |  |  | 									$attr['objectClass'][] = 'organization'; | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 									$attr[$headarray[0]] = $headarray[1]; | 
					
						
							| 
									
										
										
										
											2004-01-07 17:45:28 +00:00
										 |  |  | 									if ($headarray[0] == "dc") { | 
					
						
							|  |  |  | 										$attr['o'] = $headarray[1]; | 
					
						
							|  |  |  | 										$attr['objectClass'][] = 'dcObject'; | 
					
						
							|  |  |  | 									} | 
					
						
							| 
									
										
										
										
											2003-11-03 17:48:15 +00:00
										 |  |  | 									$dn = $subsuffs[$k]; | 
					
						
							|  |  |  | 									if (!@ldap_add($_SESSION['ldap']->server(), $dn, $attr)) { | 
					
						
							|  |  |  | 										$fail[] = $suff; | 
					
						
							|  |  |  | 										$error[] = ldap_error($_SESSION['ldap']->server()); | 
					
						
							|  |  |  | 										break; | 
					
						
							|  |  |  | 									} | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							} | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					else { | 
					
						
							|  |  |  | 						$fail[] = $suff; | 
					
						
							|  |  |  | 						$error[] = ldap_error($_SESSION['ldap']->server()); | 
					
						
							|  |  |  | 					} | 
					
						
							| 
									
										
										
										
											2003-10-11 15:23:08 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  | 	include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 	// print error/success messages
 | 
					
						
							| 
									
										
										
										
											2010-05-07 19:12:06 +00:00
										 |  |  | 	if (isset($_POST['add_suff'])) { | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 		if (sizeof($fail) > 0) { | 
					
						
							| 
									
										
										
										
											2003-11-03 20:41:59 +00:00
										 |  |  | 			// print error messages
 | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 			for ($i = 0; $i < sizeof($fail); $i++) { | 
					
						
							| 
									
										
										
										
											2003-10-11 15:23:08 +00:00
										 |  |  | 				StatusMessage("ERROR", _("Failed to create entry!") . "<br>" . $error[$i], $fail[$i]); | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 			include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2003-11-03 20:41:59 +00:00
										 |  |  | 		else { | 
					
						
							|  |  |  | 			// print success message
 | 
					
						
							|  |  |  | 			StatusMessage("INFO", "", _("All changes were successful.")); | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 			include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-11-03 20:41:59 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							|  |  |  | 		// no suffixes were created
 | 
					
						
							|  |  |  | 		StatusMessage("INFO", "", _("No changes were made.")); | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 		include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-07-29 11:33:12 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // first show of page
 | 
					
						
							|  |  |  | $new_suff = $_GET['suffs']; | 
					
						
							| 
									
										
										
										
											2004-02-16 19:50:22 +00:00
										 |  |  | $new_suff = str_replace("\\", "", $new_suff); | 
					
						
							|  |  |  | $new_suff = str_replace("'", "", $new_suff); | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | $new_suff = explode(";", $new_suff); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  | include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2010-10-24 13:53:44 +00:00
										 |  |  | 	echo '<div class="userlist-bright smallPaddingContent">'; | 
					
						
							|  |  |  | 	echo "<form action=\"initsuff.php\" method=\"post\">\n"; | 
					
						
							|  |  |  | 	$container = new htmlTable(); | 
					
						
							|  |  |  | 	$container->addElement(new htmlOutputText(_("The following suffix(es) are missing in LDAP. LAM can create them for you.")), true); | 
					
						
							|  |  |  | 	$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 	// print missing suffixes
 | 
					
						
							|  |  |  | 	for ($i = 0; $i < sizeof($new_suff); $i++) { | 
					
						
							| 
									
										
										
										
											2010-10-24 13:53:44 +00:00
										 |  |  | 		$container->addElement(new htmlOutputText($new_suff[$i]), true); | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-10-24 13:53:44 +00:00
										 |  |  | 	$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$buttonContainer = new htmlTable(); | 
					
						
							|  |  |  | 	$buttonContainer->addElement(new htmlButton('add_suff', _("Create"))); | 
					
						
							|  |  |  | 	$buttonContainer->addElement(new htmlButton('cancel', _("Cancel"))); | 
					
						
							|  |  |  | 	$buttonContainer->addElement(new htmlHiddenInput('new_suff', implode(";", $new_suff))); | 
					
						
							|  |  |  | 	$container->addElement($buttonContainer); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	$tabindex = 1; | 
					
						
							|  |  |  | 	parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 	echo "</form><br>\n"; | 
					
						
							| 
									
										
										
										
											2010-10-24 13:53:44 +00:00
										 |  |  | 	echo "</div>\n"; | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-07-28 18:36:38 +00:00
										 |  |  | ?>
 |