2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$Id $ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  This  code  is  part  of  LDAP  Account  Manager  ( http :// www . sourceforge . net / projects / lam ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-03-03 17:30:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  Copyright  ( C )  2003  -  2006   Tilo  Lutz 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-14 18:41:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                2005  -  2007   Roland  Gruber 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-21 10:33:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  Manages  the  object  class  " account "  for users and hosts.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ package  modules 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ author  Tilo  Lutz 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ author  Roland  Gruber 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ author  Michael  Duergner 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  Manages  the  object  class  " account "  for users and hosts.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ package  modules 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 18:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								class  account  extends  baseModule  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-13 19:58:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  Returns  meta  data  that  is  interpreted  by  parent  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  @ return  array  array  with  meta  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									function  get_metaData ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 16:38:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( $_SESSION [ 'loggedIn' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-13 19:58:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										// manages host accounts
 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-17 09:44:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return [ " account_types " ]  =  array ( " host " ,  " user " ); 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-14 16:05:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// alias name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ " alias " ]  =  _ ( 'Account' ); 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-10 10:41:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// this is a base module
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ " is_base " ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// LDAP filter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ " ldap_filter " ]  =  array ( 'or'  =>  " (objectClass=account) " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										// RDN attribute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ " RDN " ]  =  array ( " uid "  =>  " low " ); 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-20 17:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// module dependencies
 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-10 10:41:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return [ 'dependencies' ]  =  array ( 'depends'  =>  array (),  'conflicts'  =>  array ()); 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-05 15:48:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// managed object classes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ 'objectClasses' ]  =  array ( 'account' ); 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-01 16:18:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// LDAP aliases
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ 'LDAPaliases' ]  =  array ( 'userid'  =>  'uid' ); 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-13 08:55:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// managed attributes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ 'attributes' ]  =  array ( 'uid' ,  'description' ); 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 15:16:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// available PDF fields
 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-30 16:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return [ 'PDF_fields' ]  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											'description' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 16:38:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( $_SESSION [ 'loggedIn' ]  &&  ! in_array ( 'posixAccount' ,  $modules ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											$return [ 'PDF_fields' ][]  =  'uid' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-08 17:39:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// help Entries
 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-30 16:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return [ 'help' ]  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											'host'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-03 16:29:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												'uid'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													" Headline "  =>  _ ( " Host name " ), 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-23 15:13:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													" Text "  =>  _ ( " Host name of the host which should be created. Valid characters are: a-z,A-Z,0-9, .-_ $ . LAM does not allow a number as first character because useradd also does not allow it. Host names are always ending with  $ . If last character is not  $  it will be added. If host name is already used host name will be expanded with a number. The next free number will be used. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-03 16:29:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												), 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-30 16:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												'description' 	=> 	array  ( 
							 
						 
					
						
							
								
									
										
										
										
											2005-11-03 12:14:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													" Headline "  =>  _ ( " Description " ), 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-30 16:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													" Text "  =>  _ ( " Host description. If left empty host name will be used. " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												) 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-03 16:29:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											'user'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												'uid'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													" Headline "  =>  _ ( " User name " ), 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-23 15:13:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													" Text "  =>  _ ( " User name of the user who should be created. Valid characters are: a-z,A-Z,0-9, .-_. LAM does not allow a number as first character because useradd also does not allow it. If user name is already used user name will be expanded with a number. The next free number will be used. Warning: Older systems have problems with user names longer than 8 characters. You can not log in to Windows if user name is longer than 16 characters. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-03 16:29:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												'description' 	=> 	array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													" Headline "  =>  _ ( " Description " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													" Text "  =>  _ ( " User description. If left empty user name will be used. " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												) 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-30 16:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-05 16:53:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// upload columns
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( $_SESSION [ 'loggedIn' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( $this -> get_scope ()  ==  'user' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												$return [ 'upload_columns' ][]  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'name'  =>  'account_hosts' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'description'  =>  _ ( 'Host list' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'help'  =>  'host' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( ! in_array ( 'posixAccount' ,  $modules ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												$return [ 'upload_columns' ][]  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'name'  =>  'account_uid' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'description'  =>  _ ( 'User name' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'help'  =>  'uid' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'required'  =>  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												$return [ 'upload_columns' ]  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'name'  =>  'account_description' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'description'  =>  _ ( 'Description' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                'help'  =>  'description' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-13 19:58:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  This  function  fills  the  message  array . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-28 16:46:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									function  load_Messages ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$this -> messages [ 'uid' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'User name' ),  _ ( 'User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$this -> messages [ 'uid' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' posixAccount_userName' ,  _ ( 'User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$this -> messages [ 'uid' ][ 2 ]  =  array ( 'WARN' ,  _ ( 'User name' ),  _ ( 'You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$this -> messages [ 'uid' ][ 3 ]  =  array ( 'ERROR' ,  _ ( 'User name' ),  _ ( 'User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !' )); 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-28 16:46:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  This  functions  returns  true  if  all  needed  settings  are  done . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  @ return  boolean  true  if  LDAP  operation  can  be  done 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-09 18:11:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									function  module_complete ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! in_array ( 'posixAccount' ,  $modules )  &&  $this -> attributes [ 'uid' ][ 0 ]  ==  '' )  return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-09 18:11:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  Controls  if  the  module  button  the  account  page  is  visible  and  activated . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  @ return  string  status  ( " enabled " ,  " disabled " ,  " hidden " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									function  getButtonStatus ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! $_SESSION [ $this -> base ] -> isNewAccount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											// check if account is based on our object class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											$objectClasses  =  $_SESSION [ $this -> base ] -> attributes_orig [ 'objectClass' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( is_array ( $objectClasses )  &&  ! in_array ( 'account' ,  $objectClasses ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  " disabled " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  " enabled " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-27 11:21:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/*  This  function  returns  an  array  with  4  entries : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  array (  DN1  ( 'add'  =>  array ( $attr ),  'remove'  =>  array ( $attr ),  'modify'  =>  array ( $attr ),  'lamdaemon'  =>  array ( cmds )),  DN2  ....  ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									*  DN  is  the  DN  to  change .  It  may  be  possible  to  change  several  DNs , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  e . g .  create  a  new  user  and  add  him  to  some  groups  via  attribute  memberUid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  add  are  attributes  which  have  to  be  added  to  ldap  entry 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  remove  are  attributes  which  have  to  be  removed  from  ldap  entry 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-27 11:21:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									*  lamdaemon  are  lamdaemon  commands  to  modify  homedir ,  quotas ,  ... 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									function  save_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// skip saving if account is based on another structural object class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! $_SESSION [ $this -> base ] -> isNewAccount  &&  ! in_array ( 'account' ,  $_SESSION [ $this -> base ] -> attributes_orig [ 'objectClass' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-27 11:21:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// Get easy attributes
 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										$return  =  $_SESSION [ $this -> base ] -> save_module_attributes ( $this -> attributes ,  $this -> orig ); 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-27 11:21:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// Return attributes
 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-09-07 12:58:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  Processes  user  input  of  the  primary  module  page . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  It  checks  if  all  input  values  are  correct  and  updates  the  associated  LDAP  attributes . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  @ return  array  list  of  info / error  messages 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									function  process_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-16 15:24:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$errors  =  array (); 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-30 15:36:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// Load attributes
 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$this -> attributes [ 'description' ][ 0 ]  =  $_POST [ 'description' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// user name if no posixAccount
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! in_array ( 'posixAccount' ,  $modules ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											$this -> attributes [ 'uid' ][ 0 ]  =  $_POST [ 'uid' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-16 17:42:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( ! get_preg ( $this -> attributes [ 'uid' ][ 0 ],  '!upper' ))  $errors []  =  $this -> messages [ 'uid' ][ 2 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( ! get_preg ( $this -> attributes [ 'uid' ][ 0 ],  'username' ))  $errors []  =  $this -> messages [ 'uid' ][ 3 ]; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-16 15:24:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  $errors ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-26 08:53:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/*  This  function  will  create  the  html - page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  to  show  a  page  with  all  attributes . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  It  will  output  a  complete  html - table 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									function  display_html_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// user name if no posixAccount
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! in_array ( 'posixAccount' ,  $modules ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											$return []  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												0  =>  array ( 'kind'  =>  'text' ,  'text'  =>  _ ( " User name " ) . '*' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												1  =>  array ( 'kind'  =>  'input' ,  'name'  =>  'uid' ,  'type'  =>  'text' ,  'size'  =>  '30' ,  'maxlength'  =>  '20' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													'value'  =>  $this -> attributes [ 'uid' ][ 0 ]), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												2  =>  array ( 'kind'  =>  'help' ,  'value'  =>  'uid' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										// description
 
							 
						 
					
						
							
								
									
										
										
										
											2004-01-18 12:52:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return []  =  array  (  0  =>  array  (  'kind'  =>  'text' ,  'text'  =>  _ ( 'Description' )  ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											1  =>  array  (  'kind'  =>  'input' ,  'name'  =>  'description' ,  'type'  =>  'text' ,  'size'  =>  '30' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												'maxlength'  =>  '255' ,  'value'  =>  $this -> attributes [ 'description' ][ 0 ]  ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											2  =>  array  ( 'kind'  =>  'help' ,  'value'  =>  'description' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-10-09 18:05:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  Returns  the  PDF  entries  for  this  module . 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									* 
							 
						 
					
						
							
								
									
										
										
										
											2005-10-09 18:05:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									*  @ return  array  list  of  possible  PDF  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									function  get_pdfEntries ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										$return  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ 'account_description' ]  =  array ( '<block><key>'  .  _ ( 'Description' )  .  '</key><value>'  .  $this -> attributes [ 'description' ][ 0 ]  .  '</value></block>' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$return [ 'account_uid' ]  =  array ( '<block><key>'  .  _ ( 'User name' )  .  '</key><value>'  .  $this -> attributes [ 'uid' ][ 0 ]  .  '</value></block>' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-24 21:39:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2004-03-14 17:33:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-05 16:53:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									*  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 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$messages  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $rawAccounts );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											// add object class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( ! in_array ( " account " ,  $partialAccounts [ $i ][ 'objectClass' ]))  $partialAccounts [ $i ][ 'objectClass' ][]  =  " account " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( ! in_array ( 'posixAccount' ,  $modules ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												// description
 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 12:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  ( $rawAccounts [ $i ][ $ids [ 'account_description' ]]  &&  ( $rawAccounts [ $i ][ $ids [ 'account_description' ]]  !=  '' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-05 16:53:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													$partialAccounts [ $i ][ 'description' ]  =  $rawAccounts [ $i ][ $ids [ 'account_description' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													$partialAccounts [ $i ][ 'description' ]  =  $rawAccounts [ $i ][ $ids [ 'account_uid' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												// user name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  ( get_preg ( $rawAccounts [ $i ][ $ids [ 'account_uid' ]],  'username' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													$partialAccounts [ $i ][ 'uid' ]  =  $rawAccounts [ $i ][ $ids [ 'account_uid' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												else  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-13 12:21:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													$errMsg  =  $this -> messages [ 'uid' ][ 1 ]; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-05 16:53:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													array_push ( $errMsg ,  array ( $i )); 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-16 15:24:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													$messages []  =  $errMsg ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-05 16:53:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  $messages ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-03-09 12:03:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-21 14:52:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								?>