finished upload
This commit is contained in:
		
							parent
							
								
									2c79564a0d
								
							
						
					
					
						commit
						fae4ff0fae
					
				|  | @ -47,14 +47,28 @@ class sambaAccount extends baseModule { | |||
| 		$this->messages['homePath'][1] = array('INFO', _('Home path'), _('Inserted user- or groupname in HomePath.')); | ||||
| 		$this->messages['profilePath'][0] = array('ERROR', _('Profile path'), _('Profile path is invalid!')); | ||||
| 		$this->messages['profilePath'][1] = array('INFO', _('Profile path'), _('Inserted user- or groupname in profilepath.')); | ||||
| 		$this->messages['logonScript'][0] = array('ERROR', _('Script path'), _('Script path is invalid!')); | ||||
| 		$this->messages['logonScript'][1] = array('INFO', _('Script path'), _('Inserted user- or groupname in scriptpath.')); | ||||
| 		$this->messages['logonScript'][0] = array('ERROR', _('Logon script'), _('Logon script is invalid!')); | ||||
| 		$this->messages['logonScript'][1] = array('INFO', _('Logon script'), _('Inserted user- or groupname in logon script.')); | ||||
| 		$this->messages['logonScript'][2] = array('ERROR', _('Account %s:') . ' sambaAccount_logonScript', _('Logon script is invalid!')); | ||||
| 		$this->messages['workstations'][0] = array('ERROR', _('Samba workstations'), _('Please enter a comma separated list of host names!')); | ||||
| 		$this->messages['workstations'][1] = array('ERROR', _('Account %s:') . ' sambaAccount_workstations', _('Please enter a comma separated list of host names!')); | ||||
| 		$this->messages['domain'][0] = array('ERROR', _('Domain name'), _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.')); | ||||
| 		$this->messages['domain'][1] = array('ERROR', _('Account %s:') . ' sambaAccount_domain', _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.')); | ||||
| 		$this->messages['lmPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.')); | ||||
| 		$this->messages['lmPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); | ||||
| 		$this->messages['lmPassword'][2] = array('ERROR', _('Account %s:') . ' sambaAccount_password', _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !')); | ||||
| 		$this->messages['rid'][0] = array('ERROR', _('Special user'), _('There can be only one administrator per domain.')); | ||||
| 		$this->messages['rid'][1] = array('ERROR', _('Special user'), _('There can be only one guest per domain.'));	 | ||||
| 		$this->messages['displayName'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_displayName', _('Please enter a valid display name!')); | ||||
| 		$this->messages['pwdUnix'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdUnix', _('This value can only be \"true\" or \"false\"!')); | ||||
| 		$this->messages['noPassword'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_noPassword', _('This value can only be \"true\" or \"false\"!')); | ||||
| 		$this->messages['noExpire'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_noExpire', _('This value can only be \"true\" or \"false\"!')); | ||||
| 		$this->messages['deactivated'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_deactivated', _('This value can only be \"true\" or \"false\"!')); | ||||
| 		$this->messages['pwdCanChange'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdCanChange', _('Please enter a valid date in format DD-MM-YYYY.')); | ||||
| 		$this->messages['pwdMustChange'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_pwdMustChange', _('Please enter a valid date in format DD-MM-YYYY.')); | ||||
| 		$this->messages['homeDrive'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_homeDrive', _('Please enter a valid drive letter.')); | ||||
| 		$this->messages['group'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_group', _('Please enter a valid group RID.')); | ||||
| 		$this->messages['specialUser'][0] = array('ERROR', _('Account %s:') . ' sambaAccount_specialUser', _('Please enter a valid special user name.')); | ||||
| 	 | ||||
| 	} | ||||
| 
 | ||||
|  | @ -247,22 +261,23 @@ class sambaAccount extends baseModule { | |||
| 					'example' => '\\server\profiles\smiller' | ||||
| 				), | ||||
| 				array( | ||||
| 					'name' => 'sambaAccount_scriptPath', | ||||
| 					'description' => _('Script path'), | ||||
| 					'name' => 'sambaAccount_logonScript', | ||||
| 					'description' => _('Logon script'), | ||||
| 					'help' => 'scriptPath', | ||||
| 					'example' => 'logon.bat' | ||||
| 				), | ||||
| 				array( | ||||
| 					'name' => 'sambaAccount_workstations', | ||||
| 					'description' => _('Samba workstations'), | ||||
| 					'help' => 'workstationsUpload', | ||||
| 					'help' => 'workstations', | ||||
| 					'example' => 'PC01,PC02,PC03' | ||||
| 				), | ||||
| 				array( | ||||
| 					'name' => 'sambaAccount_group', | ||||
| 					'description' => _('Windows group'), | ||||
| 					'help' => 'groupUpload', | ||||
| 					'example' => '1234' | ||||
| 					'example' => '1235', | ||||
| 					'default' => '<gidNumber>*2 + 1001' | ||||
| 				), | ||||
| 				array( | ||||
| 					'name' => 'sambaAccount_specialUser', | ||||
|  | @ -338,13 +353,10 @@ class sambaAccount extends baseModule { | |||
| 				"Text" => _("Path of the user profile. Can be a local absolute path or a UNC-path (\\\\server\\share). $%s and $%s are replaced with user- and groupname."). ' '. _("Can be left empty."), | ||||
| 				"variables" => array('user', 'group')), | ||||
| 			"scriptPath" => array( | ||||
| 				"ext" => "FALSE", "Headline" => _("Script path"), | ||||
| 				"ext" => "FALSE", "Headline" => _("Logon script"), | ||||
| 				"Text" => _("Filename and -path relative to netlogon-share which should be executed on logon. $%s and $%s are replaced with user- and groupname."). ' '. _("Can be left empty."), | ||||
| 				"variables" => array('user', 'group')), | ||||
| 			"workstations" => array( | ||||
| 				"ext" => "FALSE", "Headline" => _("Samba workstations"), | ||||
| 				"Text" => _("List of Samba workstations the user is allowed to login. Empty means every workstation."). ' '. _("Can be left empty.")), | ||||
| 			"workstationsUpload" => array( | ||||
| 				"ext" => "FALSE", "Headline" => _("Samba workstations"), | ||||
| 				"Text" => _("Comma separated list of Samba workstations the user is allowed to login. Empty means every workstation."). ' '. _("Can be left empty.")), | ||||
| 			"group" => array( | ||||
|  | @ -728,7 +740,7 @@ class sambaAccount extends baseModule { | |||
| 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Profile path') ), | ||||
| 				1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'profilePath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['profilePath'][0]), | ||||
| 				2 => array ( 'kind' => 'help', 'value' => 'profilePath' )); | ||||
| 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Script path') ), | ||||
| 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Logon script') ), | ||||
| 				1 => array ( 'kind' => 'input', 'type' => 'text', 'name' => 'scriptPath', 'size' => '20', 'maxlength' => '255', 'value' => $this->attributes['scriptPath'][0]), | ||||
| 				2 => array ( 'kind' => 'help', 'value' => 'scriptPath' )); | ||||
| 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Samba workstations') ), | ||||
|  | @ -836,6 +848,234 @@ class sambaAccount extends baseModule { | |||
| 							'sambaAccount_description' => array('<block><key>' . _('Description') . '</key><value>' . $this->attributes['description'][0] . '</value></block>')); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	* In this function the LDAP account is built up. | ||||
| 	* | ||||
| 	* @param array $rawAccounts list of hash arrays (name => value) from user input | ||||
| 	* @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP | ||||
| 	* @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5) | ||||
| 	* @return array list of error messages if any | ||||
| 	*/ | ||||
| 	function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) { | ||||
| 		$triggered_messages = array(); | ||||
| 		if ($this->get_scope() == 'user') { | ||||
| 			for ($i = 0; $i < sizeof($rawAccounts); $i++) { | ||||
| 				if (!in_array("sambaAccount", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaAccount"; | ||||
| 				// displayName
 | ||||
| 				if (get_preg($rawAccounts[$i][$ids['sambaAccount_displayName']], 'realname')) { | ||||
| 					$partialAccounts[$i]['displayName'] = $rawAccounts[$i][$ids['sambaAccount_displayName']]; | ||||
| 				} | ||||
| 				else { | ||||
| 					$errMsg = $this->messages['displayName'][0]; | ||||
| 					array_push($errMsg, array($i)); | ||||
| 					$triggered_messages[] = $errMsg; | ||||
| 				} | ||||
| 				// password
 | ||||
| 				if (!get_preg($rawAccounts[$i][$ids['sambaAccount_password']], 'password')) { | ||||
| 					$errMsg = $this->messages['lmPassword'][2]; | ||||
| 					array_push($errMsg, array($i)); | ||||
| 					$triggered_messages[] = $errMsg; | ||||
| 				} | ||||
| 				// use Unix password
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_pwdUnix']] == "") {  // default: use Unix
 | ||||
| 					$partialAccounts[$i]['lmPassword'] = lmPassword($partialAccounts[$i]['userPassword']); | ||||
| 					$partialAccounts[$i]['ntPassword'] = ntPassword($partialAccounts[$i]['userPassword']); | ||||
| 				} | ||||
| 				elseif (in_array($rawAccounts[$i][$ids['sambaAccount_pwdUnix']], array('true', 'false'))) { | ||||
| 					if ($rawAccounts[$i][$ids['sambaAccount_pwdUnix']] == 'true') {  // use Unix
 | ||||
| 						$partialAccounts[$i]['lmPassword'] = lmPassword($partialAccounts[$i]['userPassword']); | ||||
| 						$partialAccounts[$i]['ntPassword'] = ntPassword($partialAccounts[$i]['userPassword']); | ||||
| 					} | ||||
| 					else {  // use given password
 | ||||
| 						$partialAccounts[$i]['lmPassword'] = lmPassword($rawAccounts[$i][$ids['sambaAccount_password']]); | ||||
| 						$partialAccounts[$i]['ntPassword'] = ntPassword($rawAccounts[$i][$ids['sambaAccount_password']]); | ||||
| 					} | ||||
| 				} | ||||
| 				else { | ||||
| 					$errMsg = $this->messages['pwdUnix'][0]; | ||||
| 					array_push($errMsg, array($i)); | ||||
| 					$triggered_messages[] = $errMsg; | ||||
| 				} | ||||
| 				// use no password
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_noPassword']] != "") { | ||||
| 					if (in_array($rawAccounts[$i][$ids['sambaAccount_noPassword']], array('true', 'false'))) { | ||||
| 						if ($rawAccounts[$i][$ids['sambaAccount_noPassword']] == 'true') { | ||||
| 							$partialAccounts[$i]['lmPassword'] = 'NO PASSWORD*****'; | ||||
| 							$partialAccounts[$i]['ntPassword'] = 'NO PASSWORD*****'; | ||||
| 						} | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['noPassword'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// account flags
 | ||||
| 				$flag_expire = false; | ||||
| 				$flag_deactivated = false; | ||||
| 				// password does not expire
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_noExpire']] != "") { | ||||
| 					if (in_array($rawAccounts[$i][$ids['sambaAccount_noExpire']], array('true', 'false'))) { | ||||
| 						if ($rawAccounts[$i][$ids['sambaAccount_noExpire']] == 'false') { | ||||
| 							$flag_expire = true; | ||||
| 						} | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['noExpire'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// account is deactivated
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_deactivated']] != "") { | ||||
| 					if (in_array($rawAccounts[$i][$ids['sambaAccount_deactivated']], array('true', 'false'))) { | ||||
| 						if ($rawAccounts[$i][$ids['sambaAccount_deactivated']] == 'true') { | ||||
| 							$flag_deactivated = true; | ||||
| 						} | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['deactivated'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// set flags
 | ||||
| 				$flags = "["; | ||||
| 				if ($flag_deactivated) $flags = $flags . "D"; | ||||
| 				if (!$flag_expire) $flags = $flags . "X"; | ||||
| 				$flags = $flags . "U"; | ||||
| 				// Expand string to fixed length
 | ||||
| 				$flags = str_pad($flags, 12); | ||||
| 				// End character
 | ||||
| 				$flags = $flags . "]"; | ||||
| 				$partialAccounts[$i]['acctFlags'] = $flags; | ||||
| 				// passsword can be changed
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_pwdCanChange']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_pwdCanChange']], 'date')) { | ||||
| 						$parts = explode("-", $rawAccounts[$i][$ids['sambaAccount_pwdCanChange']]); | ||||
| 						$time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); | ||||
| 						$partialAccounts[$i]['pwdCanChange'] = $time; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['pwdCanChange'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// passsword must be changed
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_pwdMustChange']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_pwdMustChange']], 'date')) { | ||||
| 						$parts = explode("-", $rawAccounts[$i][$ids['sambaAccount_pwdMustChange']]); | ||||
| 						$time = mktime(0, 0, 0, $parts[1], $parts[0], $parts[2]); | ||||
| 						$partialAccounts[$i]['pwdMustChange'] = $time; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['pwdMustChange'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// home drive
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_homeDrive']] != "") { | ||||
| 					if (eregi("[d-z]:", $rawAccounts[$i][$ids['sambaAccount_homeDrive']])) { | ||||
| 						$partialAccounts[$i]['homeDrive'] = $rawAccounts[$i][$ids['sambaAccount_homeDrive']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['homeDrive'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// home path
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_homePath']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_homePath']], 'UNC')) { | ||||
| 						$partialAccounts[$i]['smbHome'] = $rawAccounts[$i][$ids['sambaAccount_homePath']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['homePath'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// profile path
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_profilePath']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_profilePath']], 'UNC')) { | ||||
| 						$partialAccounts[$i]['profilePath'] = $rawAccounts[$i][$ids['sambaAccount_profilePath']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['profilePath'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// logon script
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_logonScript']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_logonScript']], 'logonscript')) { | ||||
| 						$partialAccounts[$i]['scriptPath'] = $rawAccounts[$i][$ids['sambaAccount_logonScript']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['logonScript'][2]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// workstations
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_workstations']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_workstations']], 'workstations')) { | ||||
| 						$partialAccounts[$i]['userWorkstations'] = $rawAccounts[$i][$ids['sambaAccount_workstations']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['workstations'][1]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// group
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_group']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_group']], 'digit')) { | ||||
| 						$partialAccounts[$i]['primaryGroupID'] = $rawAccounts[$i][$ids['sambaAccount_group']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['group'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				else { | ||||
| 					// default GID*2 + 1001
 | ||||
| 					$partialAccounts[$i]['primaryGroupID'] = $partialAccounts[$i]['gidNumber']*2 + 1001; | ||||
| 				} | ||||
| 				// domain
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_domain']] != "") { | ||||
| 					if (get_preg($rawAccounts[$i][$ids['sambaAccount_domain']], 'domainname')) { | ||||
| 						$partialAccounts[$i]['domain'] = $rawAccounts[$i][$ids['sambaAccount_domain']]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['domain'][1]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				// special user
 | ||||
| 				if ($rawAccounts[$i][$ids['sambaAccount_specialUser']] != "") { | ||||
| 					if (in_array($rawAccounts[$i][$ids['sambaAccount_specialUser']], array_keys($this->rids))) { | ||||
| 						$partialAccounts[$i]['rid'] = $this->rids[$rawAccounts[$i][$ids['sambaAccount_specialUser']]]; | ||||
| 					} | ||||
| 					else { | ||||
| 						$errMsg = $this->messages['specialUser'][0]; | ||||
| 						array_push($errMsg, array($i)); | ||||
| 						$triggered_messages[] = $errMsg; | ||||
| 					} | ||||
| 				} | ||||
| 				else { | ||||
| 					// default RID uid*2 + 1000
 | ||||
| 					$partialAccounts[$i]['rid'] = $partialAccounts[$i]['uidNumber']*2 + 1000; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return $triggered_messages; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| ?>
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue