2007-12-29 11:02:00 +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 / ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-25 18:40:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Copyright  ( C )  2007  -  2013   Roland  Gruber 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Tests  the  lamdaemon  script .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ author  Roland  Gruber  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ package  tools  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** security functions */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once ( " ../../lib/security.inc " );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** access to configuration options */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once ( " ../../lib/config.inc " );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** account modules */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once ( " ../../lib/modules.inc " );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** LDAP schema */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								include_once ( " ../../lib/schema.inc " );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// start session
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								startSecureSession ();  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-12-30 13:15:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// die if no write access
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! checkIfWriteAccessIsAllowed ())  die ();  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-07-22 10:37:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								checkIfToolIsActive ( 'toolTests' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								setlanguage ();  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 17:21:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								include  '../main_header.php' ;  
						 
					
						
							
								
									
										
										
										
											2013-01-19 13:18:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  " <div class= \" user-bright smallPaddingContent \" > \n " ;  
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-17 13:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$container  =  new  htmlTable ();  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$container -> addElement ( new  htmlTitle ( _ ( " Schema test " )),  true );  
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get_schema_objectclasses ();  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$classes  =  get_cached_schema ( 'objectclasses' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! is_array ( $classes ))  {  
						 
					
						
							
								
									
										
										
										
											2010-10-17 13:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									$container -> addElement ( new  htmlStatusMessage ( 'ERROR' ,  _ ( 'Unable to retrieve schema!' ),  _ ( 'You do not have the required access rights or the LDAP schema is not published by your server.' ))); 	
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-10-17 13:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// loop for active account types
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( $t  =  0 ;  $t  <  sizeof ( $types );  $t ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$modules  =  $_SESSION [ 'config' ] -> get_AccountModules ( $types [ $t ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$container -> addElement ( new  htmlSubTitle ( getTypeAlias ( $types [ $t ])),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $m  =  0 ;  $m  <  sizeof ( $modules );  $m ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$error  =  checkSchemaForModule ( $modules [ $m ],  $types [ $t ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$message  =  _ ( " No problems found. " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$icon  =  '../../graphics/pass.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $error  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$icon  =  '../../graphics/fail.png' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$message  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// module name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$container -> addElement ( new  htmlOutputText ( getModuleAlias ( $modules [ $m ],  $types [ $t ]))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$container -> addElement ( new  htmlSpacer ( '10px' ,  null )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// icon
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$container -> addElement ( new  htmlImage ( $icon )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$container -> addElement ( new  htmlSpacer ( '10px' ,  null )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// text
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$container -> addElement ( new  htmlOutputText ( $message ),  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-17 13:38:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$tabindex  =  1 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								parseHtml ( null ,  $container ,  array (),  true ,  $tabindex ,  'user' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								echo  " </div> \n " ;  
						 
					
						
							
								
									
										
										
										
											2010-08-21 09:43:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								include  '../main_footer.php' ;  
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Checks  if  the  object  classes  and  attributes  for  this  module  are  available . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  String  $name  module  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  String  $type  type  ( user ,  group ,  ... ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  String  error  message  or  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkSchemaForModule ( $name ,  $type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$module  =  new  $name ( $type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$classes  =  $module -> getManagedObjectClasses (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$attrs  =  $module -> getManagedAttributes (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$aliases  =  array_flip ( $module -> getLDAPAliases ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( sizeof ( $classes )  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$schemaClasses  =  get_cached_schema ( 'objectclasses' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$schemaAttrs  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check if object classes are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( $o  =  0 ;  $o  <  sizeof ( $classes );  $o ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! isset ( $schemaClasses [ strtolower ( $classes [ $o ])]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  sprintf ( _ ( " The object class %s is not supported by your LDAP server. " ),  $classes [ $o ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// get attribute names
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$schemaAttrs  =  array_merge ( $schemaAttrs ,  getRecursiveAttributesFromObjectClass ( $schemaClasses [ strtolower ( $classes [ $o ])])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// check if attributes are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( $a  =  0 ;  $a  <  sizeof ( $attrs );  $a ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-08 19:12:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( strpos ( $attrs [ $a ],  'INFO.' )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-25 18:40:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! in_array_ignore_case ( $attrs [ $a ],  $schemaAttrs )  &&  ! in_array_ignore_case ( str_replace ( ';binary' ,  '' ,  $attrs [ $a ]),  $schemaAttrs ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											if  ( isset ( $aliases [ $attrs [ $a ]])  &&  in_array_ignore_case ( $aliases [ $attrs [ $a ]],  $schemaAttrs ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-08 19:12:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  sprintf ( _ ( " The attribute %s is not supported for the object class %s by your LDAP server. " ),  $attrs [ $a ],  implode ( " / " ,  $classes )); 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-29 11:02:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  names  of  all  attributes  which  are  managed  by  the  given  object  class  and  its  parents . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  ObjectClass  $oClass  object  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  array  list  of  attribute  names 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRecursiveAttributesFromObjectClass ( $oClass )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$attrs  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$attrs  =  array_merge ( $attrs ,  $oClass -> getMustAttrNames ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$attrs  =  array_merge ( $attrs ,  $oClass -> getMayAttrNames ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									$subClassNames  =  $oClass -> getSupClasses (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( $i  =  0 ;  $i  <  sizeof ( $subClassNames );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$schemaClasses  =  get_cached_schema ( 'objectclasses' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$subClass  =  $schemaClasses [ strtolower ( $subClassNames [ $i ])]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$attrs  =  array_merge ( $attrs ,  getRecursiveAttributesFromObjectClass ( $subClass )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $attrs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								?>