2008-09-24 16:38:27 +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 / ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:08:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Copyright  ( C )  2008         Thomas  Manninger 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-23 17:10:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                2008  -  2013   Roland  Gruber 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Manages  DHCP  entries .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ package  modules  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ author  Thomas  Manninger  
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  @ author  Roland  Gruber  
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  function  checks  if  the  given  IP  address  ist  valid . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  string  IP  to  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  check  Subnet 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  boolean  true  or  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 **/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! function_exists ( 'check_ip' ))  {  
						 
					
						
							
								
									
										
										
										
											2012-07-15 12:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Checks  if  the  given  IP  is  valid . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $ip  IP  address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  boolean  $subnet  IP  must  be  a  subnet 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  check_ip ( $ip ,  $subnet  =  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-14 20:18:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$part  =  explode ( " . " ,  $ip ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// Wenn... Keine 4 Segmente gefunden wurde
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( count ( $part )  !=  4 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// check each segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  0 ;  $i  <  count ( $part );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// only numbers are allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_numeric ( $part [ $i ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													// if not check Subnet, than segment must be smaller than 256, else smaller than 255
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( $part [ $i ]  >  255  ||  ( $i == 3  &&  ( ! $subnet  &&  $part [ $i ] < 1 ))  ||  ( $i == 3  &&  ( ! $subnet  &&  $part [ $i ] < 0 )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Manages  DHCP  entries .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  @ package  modules  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  dhcp_settings  extends  baseModule  {  
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-07-15 12:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** all netbios node types */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									private  $all_netbios_node_types ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-07-15 12:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** LDAP attributes */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									public  $attributes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  Creates  a  new  dhcp_settings  object . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  @ param  string  $scope  account  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  __construct ( $scope )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// list of node types
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> all_netbios_node_types  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" 1 "  =>  _ ( " B-Node (0x01) " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" 2 "  =>  _ ( " P-Node (0x02) " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" 4 "  =>  _ ( " M-Node (0x04) " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" 8 "  =>  _ ( " H-Node (0x08) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// call parent constructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										parent :: __construct ( $scope ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-06-12 17:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Returns  meta  data  that  is  interpreted  by  parent  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  array  array  with  meta  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									public  function  get_metaData ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// manages host accounts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ " account_types " ]  =  array ( " dhcp " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// alias name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ " alias " ]  =  _ ( " DHCP settings " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// this is a base module
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ " is_base " ]  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-15 16:56:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// icon
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'icon' ]  =  'dhcpBig.png' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// RDN attribute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ " RDN " ]  =  array ( " cn "  =>  " high " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// LDAP filter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ " ldap_filter " ]  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// module dependencies
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'dependencies' ]  =  array ( 'depends'  =>  array (),  'conflicts'  =>  array ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// managed object classes
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-27 09:56:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return [ 'objectClasses' ]  =  array ( 'top' ,  'dhcpOptions' ,  'dhcpSubnet' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// managed attributes
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return [ 'attributes' ]  =  array ( 'cn' ,  'dhcpOption' ,  'dhcpComments' ,  'dhcpNetMask' ,  'dhcpStatements' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// help Entries
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'help' ]  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'domainname'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Domain name " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The domain name of the subnet. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'subnet'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Subnet " ),  'attr'  =>  'cn' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The name of the subnet. Example: 192.168.10.0 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'leasetime'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Lease time " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The lease time specifies after how many seconds the client should request a new IP address. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'max_leasetime'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Maximum lease time " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The maximum lease time specifies after how many seconds the client must request a new IP address. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'dns'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " DNS (Domain Name System) " ), 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-08 19:12:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The IP addresses of the DNS servers. Multiple addresses are separated by  \" , \" . Example: 192.168.0.10, 192.168.0.11 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'gateway'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Default gateway " ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-13 16:23:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Text "  =>  _ ( " Packets are sent to the default gateway if the receiver does not reside in the same network. The default gateway routes them to the target network. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netbios'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-04 15:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Netbios name servers " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The IP addresses of the Netbios name servers (e.g.  \" 123.123.123.123, 123.123.123.124 \" ). " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netbios_type'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Netbios node type " ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-28 12:18:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Text "  =>  _ ( " <b>B-Node (0x01): Broadcast.</b><br/>The client tries to find other workstations via broadcasting
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								( works  only  inside  the  same  collision  domain ,  viz .  the  same  subnet ) .< br />< br />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< b > P - Node  ( 0x02 ) :  Point - To - Point </ b >< br  />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The  client  contacts  a  Netbios  name  server  ( NBNS )  from  Microsoft  Windows  Name  Service  ( WINS )  for  name  resolution .< br />< br />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< b > M - Node  ( 0x04 ) :  Mixed </ b >< br  />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The  node  tries  broadcasting  first .  If  that  fails  then  it  tries  WINS .< br />< br />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< b > H - Node  ( 0x08 ) :  Hybrid </ b >< br  />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The  node  tries  WINS  first .  If  that  fails  it  tries  broadcasting .< br />< br />  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								By  default ,  the  nodes  are  configured  as  H - Nodes  which  fits  for  small  networks .  In  large  networks  Point - to - Point  ( 0x02 )  should  be  used . " )
  
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'subnetmask'  =>  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Subnet mask " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The subnet mask of the network. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netmask'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Net mask " ),  'attr'  =>  'dhcpNetMask' , 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Text "  =>  _ ( " The net mask is derived from the subnet mask. LAM will calculate it automatically. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'description'  =>  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												" Headline "  =>  _ ( " Description " ),  'attr'  =>  'dhcpComments' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												" Text "  =>  _ ( " Here you can enter a description for this DHCP entry. " ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-04 15:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// available PDF fields
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'PDF_fields' ]  =  array ( 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-05 12:38:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'subnet'  =>  _ ( 'Subnet' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'domainName'  =>  _ ( 'Domain name' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'leaseTime'  =>  _ ( 'Lease time' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'maxLeaseTime'  =>  _ ( 'Maximum lease time' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'DNSserver'  =>  _ ( 'DNS' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'gateway'  =>  _ ( 'Default gateway' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netbiosServer'  =>  _ ( 'Netbios name servers' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netbiosType'  =>  _ ( 'Netbios node type' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'subnetMask'  =>  _ ( 'Subnet mask' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'netMask'  =>  _ ( 'Net mask' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'description'  =>  _ ( 'Description' ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-04 15:31:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// profile elements
 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$profileContainer  =  new  htmlTable (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Subnet' ),  'cn' ,  null ,  'subnet' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Domain name' ),  'domainname' ,  null ,  'domainname' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Lease time' ),  'lease_time' ,  null ,  'leasetime' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Maximum lease time' ),  'max_lease_time' ,  null ,  'max_leasetime' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'DNS' ),  'dns' ,  null ,  'dns' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Default gateway' ),  'routers' ,  null ,  'gateway' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Netbios name servers' ),  'netbios' ,  null ,  'netbios' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$nodeList  =  array_flip ( $this -> all_netbios_node_types ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileNodeSelect  =  new  htmlTableExtendedSelect ( 'netbios_node_type' ,  $nodeList ,  null ,  _ ( 'Netbios node type' ),  'netbios_type' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileNodeSelect -> setHasDescriptiveElements ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( $profileNodeSelect ,  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$profileContainer -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Subnet mask' ),  'subnet' ,  null ,  'subnetmask' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'profile_options' ]  =  $profileContainer ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// upload fields
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return [ 'upload_columns' ]  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_subnet' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Subnet' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'subnet' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '192.168.10.0' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'required'  =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'unique'  =>  'true' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_domainName' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Domain name' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'domainname' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  'mydomain.com' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_leaseTime' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Lease time' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'leasetime' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '86400' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_maxLeaseTime' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Maximum lease time' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'max_leasetime' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '172800' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_DNSserver' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'DNS' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'dns' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '192.168.10.250' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_gateway' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Default gateway' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'gateway' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '192.168.10.251' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_netbiosServer' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Netbios name servers' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'netbios' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '192.168.10.252, 192.168.10.253' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_netbiosType' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Netbios node type' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'netbios_type' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  'M' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'default'  =>  'H' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'values'  =>  'B, H, M, P' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_subnetMask' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Subnet mask' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'subnetmask' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'required'  =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'example'  =>  '255.255.255.0' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'name'  =>  'dhcp_settings_description' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'description'  =>  _ ( 'Description' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'help'  =>  'description' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											), 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  This  function  fills  the  message  array . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  load_Messages ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'cn' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'No subnet entered.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'cn' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'The subnet is already in use.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'cn' ][ 2 ]  =  array ( 'ERROR' ,  _ ( 'The subnet is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'cn' ][ 3 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_subnet' ,  _ ( 'The subnet is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'dns' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'You entered one or more invalid DNS servers.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'dns' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_DNSserver' ,  _ ( 'You entered one or more invalid DNS servers.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'lease_time' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'The lease time is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'lease_time' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_leaseTime' ,  _ ( 'The lease time is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'routers' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'The default gateway is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'routers' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_gateway' ,  _ ( 'The default gateway is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'netbios' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'The Netbios server is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'netbios' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_netbiosServer' ,  _ ( 'The Netbios server is invalid.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'netbios_node_type' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_netbiosType' ,  _ ( 'The entered Netbios node type does not exist.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'max_lease_time' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'The maximum lease time is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'max_lease_time' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_maxLeaseTime' ,  _ ( 'The maximum lease time is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'subnet' ][ 0 ]  =  array ( 'ERROR' ,  _ ( 'The subnet mask is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'subnet' ][ 1 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_subnetMask' ,  _ ( 'The subnet mask is invalid.' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'ranges_reload' ][ 0 ]  =  array ( 'INFO' ,  _ ( 'The DHCP ranges were changed to fit for the new subnet.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'ips_reload' ][ 0 ]  =  array ( 'INFO' ,  'The fixed IP addresses were changed to fit for the new subnet.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> messages [ 'domainname' ][ 2 ]  =  array ( 'ERROR' ,  _ ( 'The domain name includes invalid characters. Valid characters are A-Z, a-z, 0-9, ".", "_","-".' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> messages [ 'domainname' ][ 5 ]  =  array ( 'ERROR' ,  _ ( 'Account %s:' )  .  ' dhcp_settings_domainName' ,  _ ( 'The domain name includes invalid characters. Valid characters are A-Z, a-z, 0-9, ".", "_","-".' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2011-02-26 13:14:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  Returns  a  list  of  modifications  which  have  to  be  made  to  the  LDAP  account . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  @ return  array  list  of  modifications 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > This  function  returns  an  array  with  3  entries : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > array (  DN1  ( 'add'  =>  array ( $attr ),  'remove'  =>  array ( $attr ),  'modify'  =>  array ( $attr )),  DN2  ....  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > 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 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > " add "  are  attributes  which  have  to  be  added  to  LDAP  entry 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > " remove "  are  attributes  which  have  to  be  removed  from  LDAP  entry 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > " modify "  are  attributes  which  have  to  been  modified  in  LDAP  entry 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  < br > " info "  are  values  with  informational  value  ( e . g .  to  be  used  later  by  pre / postModify  actions ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  save_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-27 09:56:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// remove dhcpSubnet object class if only the DHCP settings were changed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> getAccountContainer () -> dn_orig  ==  $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! in_array_ignore_case ( " dhcpSubnet " ,  $this -> orig [ 'objectClass' ])  &&  in_array_ignore_case ( " dhcpSubnet " ,  $this -> attributes [ 'objectClass' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> attributes [ 'objectClass' ]  =  array_delete ( array ( " dhcpSubnet " ),  $this -> attributes [ 'objectClass' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-07 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-27 09:56:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return  =  parent :: save_attributes (); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  process_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-10 17:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// check if DHCP main settings and valid DHCP entry
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' )  ==  $this -> getAccountContainer () -> dn_orig )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-23 17:10:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! in_array_ignore_case ( 'dhcpService' ,  $this -> attributes [ 'objectClass' ])  &&  ! in_array_ignore_case ( 'dhcpServer' ,  $this -> attributes [ 'objectClass' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-10 17:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$errors  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Check if cn is not empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' )  !=  $this -> getAccountContainer () -> dn_orig )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! empty ( $_POST [ 'cn' ]))  $_POST [ 'cn' ]  =  trim ( $_POST [ 'cn' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$this -> attributes [ 'cn' ][ 0 ]  =  $_POST [ 'cn' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											if  ( empty ( $_POST [ 'cn' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    $errors []  =  $this -> messages [ 'cn' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Check, if cn is not already use:
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-26 12:53:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    elseif  (( sizeof ( searchLDAPByAttribute ( 'cn' ,  $_POST [ 'cn' ],  'dhcpOptions' ,  array ( 'cn' ),  array ( 'dhcp' )))  >  0 )  &&  $this -> orig [ 'cn' ][ '0' ] != $_POST [ 'cn' ])  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										       	$errors []  =  $this -> messages [ 'cn' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											elseif  ( ! check_ip ( $_POST [ 'cn' ], true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$errors []  =  $this -> messages [ 'cn' ][ 2 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-20 16:43:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											elseif  ( strrpos ( $_POST [ 'cn' ],  '.0' )  !=  ( strlen ( $_POST [ 'cn' ])  -  2 ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												$errors []  =  $this -> messages [ 'cn' ][ 2 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// if the cn was edit, reload the Ranges:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									            if  ( $this -> getAccountContainer () -> getAccountModule ( 'range' ) -> reload_ranges ()) 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									            	$errors []  =  $this -> messages [ 'ranges_reload' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            // if the cn was edit, reload the ips:
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									            if  ( $this -> getAccountContainer () -> getAccountModule ( 'fixed_ip' ) -> reload_ips ()) 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									            	$errors []  =  $this -> messages [ 'ips_reload' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Check domainname:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'domainname' ]))  $_POST [ 'domainname' ]  =  trim ( $_POST [ 'domainname' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'domainname' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-05 15:14:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! preg_match ( " /^[A-Za-z0-9 \\ ._-]* $ / " ,  $_POST [ 'domainname' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											    $errors []  =  $this -> messages [ 'domainname' ][ 2 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 21:50:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'domain-name' ,  '"'  .  $_POST [ 'domainname' ]  .  '"' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Check DNS
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'dns' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$_POST [ 'dns' ]  =  trim ( $_POST [ 'dns' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$ex  =  explode ( " , " ,  $_POST [ 'dns' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$dns  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$is_first = true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$invalid  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach ( $ex  AS  $string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( $is_first )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$dns  .=  $string ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$is_first = false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											    	$dns  .=  " , $string " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									            if  ( ! check_ip ( $string ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											        $invalid  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $invalid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    $errors []  =  $this -> messages [ 'dns' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'domain-name-servers' ,  $_POST [ 'dns' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Lease Time
 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'lease_time' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$_POST [ 'lease_time' ]  =  trim ( $_POST [ 'lease_time' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setDefaultLeaseTime ( $_POST [ 'lease_time' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if  ( ! is_numeric ( $_POST [ 'lease_time' ])  &&  ! empty ( $_POST [ 'lease_time' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$errors []  =  $this -> messages [ 'lease_time' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Max lease Time
 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'max_lease_time' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$_POST [ 'max_lease_time' ]  =  trim ( $_POST [ 'max_lease_time' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setMaxLeaseTime ( $_POST [ 'max_lease_time' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if  ( ! is_numeric ( $_POST [ 'max_lease_time' ])  &&  ! empty ( $_POST [ 'max_lease_time' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$errors []  =  $this -> messages [ 'max_lease_time' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Default Gateway
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'routers' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$_POST [ 'routers' ]  =  trim ( $_POST [ 'routers' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! check_ip ( $_POST [ 'routers' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$errors []  =  $this -> messages [ 'routers' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'routers' ,  $_POST [ 'routers' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Netbios
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! empty ( $_POST [ 'netbios' ]))  $_POST [ 'netbios' ]  =  trim ( $_POST [ 'netbios' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-04 15:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$netbiosServers  =  explode ( ', ' ,  $_POST [ 'netbios' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$netbiosServersOk  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $netbiosServers );  $i ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-24 11:46:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! check_ip ( $netbiosServers [ $i ])  &&  ! get_preg ( $netbiosServers [ $i ],  'DNSname' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-04 15:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												$netbiosServersOk  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! $netbiosServersOk  &&  ! empty ( $_POST [ 'netbios' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$errors []  =  $this -> messages [ 'netbios' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'netbios-name-servers' ,  $_POST [ 'netbios' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'netbios-node-type' ,  $_POST [ 'netbios_node_type' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> getAccountContainer () -> dn_orig != $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											// Check subnet
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$_POST [ 'subnet' ]  =  trim ( $_POST [ 'subnet' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 14:29:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! $this -> checkSubnetMask ( $_POST [ 'subnet' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											    $errors []  =  $this -> messages [ 'subnet' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$this -> setDHCPOption ( 'subnet-mask' ,  $_POST [ 'subnet' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// calculate netmask from subnet:
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-25 10:42:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! empty ( $_POST [ 'subnet' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> attributes [ 'dhcpNetMask' ][ 0 ]  =  $this -> calculateNetMask ( $_POST [ 'subnet' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> attributes [ 'dhcpComments' ][ 0 ]  =  $_POST [ 'description' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  $errors ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 14:29:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Checks  if  the  subnet  mask  is  valid . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $mask  subnet  mask 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  boolean  correct  or  incorrect 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  checkSubnetMask ( $mask )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// check basic format
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! check_ip ( $mask ,  true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// check if bit order is 11...00...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$parts  =  explode ( '.' ,  $mask ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$bits  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $parts );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$bits  .=  decbin ( $parts [ $i ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  preg_match ( '/^1*0*$/' ,  $bits ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Calculates  the  net  mask  from  the  subnet . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $subnet  subnet 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  integer  netmask 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  calculateNetMask ( $subnet )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$ex  =  explode ( " . " ,  $subnet ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$num  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach ( $ex  AS  $mask )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    $binary  =  decbin ( $mask ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    $num  +=  substr_count ( $binary ,  1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-06-12 17:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Returns  the  HTML  meta  data  for  the  main  account  page . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
									
										
										
										
											2010-09-18 11:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ return  htmlElement  HTML  meta  data 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-12 17:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									public  function  display_html_attributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-25 19:06:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return  =  new  htmlTable (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-10 17:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// check if DHCP main settings and valid DHCP entry
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' )  ==  $this -> getAccountContainer () -> dn_orig )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-23 17:10:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! in_array_ignore_case ( 'dhcpService' ,  $this -> attributes [ 'objectClass' ])  &&  ! in_array_ignore_case ( 'dhcpServer' ,  $this -> attributes [ 'objectClass' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$return -> addElement ( new  htmlStatusMessage ( 'ERROR' ,  _ ( 'Please set your LDAP suffix to an LDAP entry with object class "dhcpService" or "dhcpServer".' ))); 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  $return ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-10 17:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Subnet name
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-25 18:21:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' )  !=  $this -> getAccountContainer () -> dn_orig )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$cn  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( isset ( $this -> attributes [ 'cn' ][ 0 ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$cn  =  $this -> attributes [ 'cn' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$subnetInput  =  new  htmlTableExtendedInputField ( _ ( 'Subnet' ),  'cn' ,  $cn ,  'subnet' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$subnetInput -> setRequired ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( $subnetInput ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( new  htmlOutputText ( _ ( 'Example' )  .  " : 192.168.10.0 " ),  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// domain name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Domain name' ),  'domainname' ,  $this -> getDHCPOption ( 'domain-name' ),  'domainname' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// lease Time
 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-20 16:43:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$leasetimeInput  =  new  htmlTableExtendedInputField ( _ ( 'Lease time' ),  'lease_time' ,  $this -> getDefaultLeaseTime (),  'leasetime' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$leasetimeInput -> setValidationRule ( htmlElement :: VALIDATE_NUMERIC ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( $leasetimeInput ,  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// max lease time
 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-20 16:43:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$max_leasetimeInput  =  new  htmlTableExtendedInputField ( _ ( 'Maximum lease time' ),  'max_lease_time' ,  $this -> getMaxLeaseTime (),  'max_leasetime' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$max_leasetimeInput -> setValidationRule ( htmlElement :: VALIDATE_NUMERIC ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( $max_leasetimeInput ,  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// DNS
 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return -> addElement ( new  htmlTableExtendedInputField ( _ ( 'DNS' ),  'dns' ,  $this -> getDHCPOption ( 'domain-name-servers' ),  'dns' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// gateway
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Default gateway' ),  'routers' ,  $this -> getDHCPOption ( 'routers' ),  'gateway' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// netbios name servers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Netbios name servers' ),  'netbios' ,  $this -> getDHCPOption ( 'netbios-name-servers' ),  'netbios' ),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// netbios node type
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$nodeType  =  $this -> getDHCPOption ( 'netbios-node-type' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $nodeType  ==  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$nodeType  =  8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$nodeOptions  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> all_netbios_node_types  as  $key  =>  $value )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$nodeOptions [ $value ]  =  $key ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$nodeSelect  =  new  htmlTableExtendedSelect ( 'netbios_node_type' ,  $nodeOptions ,  array ( $nodeType ),  _ ( 'Netbios node type' ),  'netbios_type' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$nodeSelect -> setHasDescriptiveElements ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( $nodeSelect ,  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $this -> getAccountContainer () -> dn_orig != $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											// subnetmask
 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$subnetMaskInput  =  new  htmlTableExtendedInputField ( _ ( 'Subnet mask' ),  'subnet' ,  $this -> getDHCPOption ( 'subnet-mask' ),  'subnetmask' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$subnetMaskInput -> setRequired ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( $subnetMaskInput ,  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// netmask
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( new  htmlOutputText ( _ ( 'Net mask' ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( new  htmlOutputText ( $this -> attributes [ 'dhcpNetMask' ][ 0 ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$return -> addElement ( new  htmlHelpLink ( 'netmask' ),  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-09-16 18:20:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// description
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$description  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( isset ( $this -> attributes [ 'dhcpComments' ][ 0 ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$description  =  $this -> attributes [ 'dhcpComments' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return -> addElement ( new  htmlTableExtendedInputField ( _ ( 'Description' ),  'description' ,  $description ,  'description' ),  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  Loads  the  values  of  an  account  profile  into  internal  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  @ param  array  $profile  hash  array  with  profile  values  ( identifier  =>  value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  load_profile ( $profile )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// profile mappings in meta data
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										parent :: load_profile ( $profile ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> attributes [ 'cn' ][ 0 ]  =  $profile [ 'cn' ][ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDefaultLeaseTime ( $profile [ 'lease_time' ][ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setMaxLeaseTime ( $profile [ 'max_lease_time' ][ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'domain-name' ,  $profile [ 'domainname' ][ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'domain-name-servers' ,  $profile [ 'dns' ][ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'routers' ,  $profile [ 'routers' ][ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'netbios-name-servers' ,  $profile [ 'netbios' ][ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> setDHCPOption ( 'netbios-node-type' ,  $profile [ 'netbios_node_type' ][ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $this -> getAccountContainer () -> dn_orig != $_SESSION [ 'config' ] -> get_suffix ( 'dhcp' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> setDHCPOption ( 'subnet-mask' ,  $profile [ 'subnet' ][ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									        // calc the netmask:
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$ex = explode ( " . " ,  $profile [ 'subnet' ][ 0 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$num  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach ( $ex  AS  $mask )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											    $binary  =  decbin ( $mask ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    $num  +=  substr_count ( $binary ,  1 ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpNetMask' ][ 0 ]  =  $num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  Returns  the  PDF  entries  for  this  module . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*  @ return  array  list  of  possible  PDF  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  get_pdfEntries ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$nodeType  =  $this -> getDHCPOption ( 'netbios-node-type' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$nodeTypeValue  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( isset ( $this -> all_netbios_node_types [ $nodeType ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$nodeTypeValue  =  $this -> all_netbios_node_types [ $nodeType ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_subnet'  =>  array ( '<block><key>'  .  _ ( 'Subnet' )  .  '</key><value>'  .  $this -> attributes [ 'cn' ][ 0 ]  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_class ( $this )  .  '_domainName'  =>  array ( '<block><key>'  .  _ ( 'Domain name' )  .  '</key><value>'  .  $this -> getDHCPOption ( 'domain-name' )  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_class ( $this )  .  '_leaseTime'  =>  array ( '<block><key>'  .  _ ( 'Lease time' )  .  '</key><value>'  .  $this -> getDefaultLeaseTime ()  .  '</value></block>' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_maxLeaseTime'  =>  array ( '<block><key>'  .  _ ( 'Maximum lease time' )  .  '</key><value>'  .  $this -> getMaxLeaseTime ()  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_class ( $this )  .  '_DNSserver'  =>  array ( '<block><key>'  .  _ ( 'DNS' )  .  '</key><value>'  .  $this -> getDHCPOption ( 'domain-name-servers' )  .  '</value></block>' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_gateway'  =>  array ( '<block><key>'  .  _ ( 'Default gateway' )  .  '</key><value>'  .  $this -> getDHCPOption ( 'routers' )  .  '</value></block>' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_netbiosServer'  =>  array ( '<block><key>'  .  _ ( 'Netbios name servers' )  .  '</key><value>'  .  $this -> getDHCPOption ( 'netbios-name-servers' )  .  '</value></block>' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_netbiosType'  =>  array ( '<block><key>'  .  _ ( 'Netbios node type' )  .  '</key><value>'  .  $nodeTypeValue  .  '</value></block>' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get_class ( $this )  .  '_subnetMask'  =>  array ( '<block><key>'  .  _ ( 'Subnet mask' )  .  '</key><value>'  .  $this -> getDHCPOption ( 'subnet-mask' )  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_class ( $this )  .  '_netMask'  =>  array ( '<block><key>'  .  _ ( 'Net mask' )  .  '</key><value>'  .  $this -> attributes [ 'dhcpNetMask' ][ 0 ]  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_class ( $this )  .  '_description'  =>  array ( '<block><key>'  .  _ ( 'Description' )  .  '</key><value>'  .  $this -> attributes [ 'dhcpComments' ][ 0 ]  .  '</value></block>' ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Returns  a  DHCP  option . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $name  option  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  String  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 21:50:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  getDHCPOption ( $name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$return  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_array ( $this -> attributes [ 'dhcpOption' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpOption' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( substr ( $this -> attributes [ 'dhcpOption' ][ $i ],  0 ,  strlen ( $name )  +  1 )  ==  ( $name  .  ' ' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$return  =  substr ( $this -> attributes [ 'dhcpOption' ][ $i ],  strlen ( $name )  +  1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$return  =  str_replace ( '"' ,  '' ,  $return ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Sets  a  DHCP  option . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $name  option  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  String  $value  option  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  setDHCPOption ( $name ,  $value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_array ( $this -> attributes [ 'dhcpOption' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpOption' ]  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpOption' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( substr ( $this -> attributes [ 'dhcpOption' ][ $i ],  0 ,  strlen ( $name )  +  1 )  ==  ( $name  .  ' ' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												unset ( $this -> attributes [ 'dhcpOption' ][ $i ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> attributes [ 'dhcpOption' ]  =  array_values ( $this -> attributes [ 'dhcpOption' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (( $value  !=  null )  &&  ( $value  !=  '' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpOption' ][]  =  $name  .  ' '  .  $value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Returns  the  default  lease  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  String  time 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  getDefaultLeaseTime ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_array ( $this -> attributes [ 'dhcpStatements' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpStatements' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( substr ( $this -> attributes [ 'dhcpStatements' ][ $i ],  0 ,  19 )  ==  'default-lease-time ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$return  =  substr ( $this -> attributes [ 'dhcpStatements' ][ $i ], 19 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Sets  the  default  lease  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param  String  $time  time 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  setDefaultLeaseTime ( $time )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_array ( $this -> attributes [ 'dhcpStatements' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpStatements' ]  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpStatements' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( substr ( $this -> attributes [ 'dhcpStatements' ][ $i ],  0 ,  19 )  ==  'default-lease-time ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												unset ( $this -> attributes [ 'dhcpStatements' ][ $i ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> attributes [ 'dhcpStatements' ]  =  array_values ( $this -> attributes [ 'dhcpStatements' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (( $time  !=  null )  &&  ( $time  !=  '' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpStatements' ][]  =  'default-lease-time '  .  $time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Returns  the  maximum  lease  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  String  time 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  getMaxLeaseTime ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$return  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_array ( $this -> attributes [ 'dhcpStatements' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpStatements' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( substr ( $this -> attributes [ 'dhcpStatements' ][ $i ],  0 ,  15 )  ==  'max-lease-time ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$return  =  substr ( $this -> attributes [ 'dhcpStatements' ][ $i ], 15 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Sets  the  maximum  lease  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 18:55:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param  String  $time  time 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  setMaxLeaseTime ( $time )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_array ( $this -> attributes [ 'dhcpStatements' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpStatements' ]  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $this -> attributes [ 'dhcpStatements' ]);  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( substr ( $this -> attributes [ 'dhcpStatements' ][ $i ],  0 ,  15 )  ==  'max-lease-time ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												unset ( $this -> attributes [ 'dhcpStatements' ][ $i ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> attributes [ 'dhcpStatements' ]  =  array_values ( $this -> attributes [ 'dhcpStatements' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (( $time  !=  null )  &&  ( $time  !=  '' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> attributes [ 'dhcpStatements' ][]  =  'max-lease-time '  .  $time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +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  $ids  list  of  IDs  for  column  position  ( e . g .  " posixAccount_uid "  =>  5 ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-07-15 12:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									*  @ param  array  $partialAccounts  list  of  hash  arrays  ( name  =>  value )  which  are  later  added  to  LDAP 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-15 20:21:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									*  @ param  array  $selectedModules  list  of  selected  account  modules 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									*  @ return  array  list  of  error  messages  if  any 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-15 20:21:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  build_uploadAccounts ( $rawAccounts ,  $ids ,  & $partialAccounts ,  $selectedModules )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$messages  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( $i  =  0 ;  $i  <  sizeof ( $rawAccounts );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// add object class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! in_array ( " dhcpOptions " ,  $partialAccounts [ $i ][ 'objectClass' ]))  $partialAccounts [ $i ][ 'objectClass' ][]  =  " dhcpOptions " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! in_array ( " dhcpSubnet " ,  $partialAccounts [ $i ][ 'objectClass' ]))  $partialAccounts [ $i ][ 'objectClass' ][]  =  " dhcpSubnet " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// subnet
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( check_ip ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_subnet' ]], true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$partialAccounts [ $i ][ 'cn' ]  =  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_subnet' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$error  =  $this -> messages [ 'cn' ][ 3 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// domain name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_domainName' ]]  !=  " " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-05 15:14:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( preg_match ( " /^[A-Za-z0-9 \\ ._-]* $ / " ,  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_domainName' ]]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " domain-name  \" " . $rawAccounts [ $i ][ $ids [ 'dhcp_settings_domainName' ]] . " \" " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'domainname' ][ 5 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// lease time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_leaseTime' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( is_numeric ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_leaseTime' ]]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpStatements' ][]  =  'default-lease-time '  .  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_leaseTime' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'lease_time' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// max lease time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_maxLeaseTime' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( is_numeric ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_maxLeaseTime' ]]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpStatements' ][]  =  'max-lease-time '  .  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_maxLeaseTime' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'max_lease_time' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// DNS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_DNSserver' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$ex  =  explode ( " , " ,  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_DNSserver' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$invalid  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												foreach ( $ex  AS  $string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            if  ( ! check_ip ( $string ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												        $invalid  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! $invalid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpOption' ][]  =  'domain-name-servers '  .  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_DNSserver' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'dns' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// gateway
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_gateway' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( check_ip ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_gateway' ]]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " routers  " . $rawAccounts [ $i ][ $ids [ 'dhcp_settings_gateway' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'routers' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// netbios name servers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosServer' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$ex  =  explode ( " , " ,  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosServer' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$invalid  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												foreach ( $ex  AS  $string )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-24 11:46:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										            if  ( ! check_ip ( $string )  &&  ! get_preg ( $string ,  'DNSname' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												        $invalid  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! $invalid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-name-servers  "  .  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosServer' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'netbios' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// node type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]]  !=  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( in_array ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]],  array ( 'B' ,  'P' ,  'M' ,  'H' )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]]  ==  'B' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-node-type 1 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elseif  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]]  ==  'P' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-node-type 2 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elseif  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]]  ==  'M' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-node-type 4 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elseif  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_netbiosType' ]]  ==  'H' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-node-type 8 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$error  =  $this -> messages [ 'netbios_node_type' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " netbios-node-type 8 " ;  // default H
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// subnet mask
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( check_ip ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_subnetMask' ]], true ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$partialAccounts [ $i ][ 'dhcpOption' ][]  =  " subnet-mask  " . $rawAccounts [ $i ][ $ids [ 'dhcp_settings_subnetMask' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$error  =  $this -> messages [ 'subnet' ][ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												array_push ( $error ,  $i ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$messages []  =  $error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// net mask
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$mask  =  $this -> calculateNetMask ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_subnetMask' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$partialAccounts [ $i ][ 'dhcpNetMask' ][ 0 ]  =  $mask ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-11 16:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// description
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( isset ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_description' ]])  &&  ( $rawAccounts [ $i ][ $ids [ 'dhcp_settings_description' ]]  !=  '' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$partialAccounts [ $i ][ 'dhcpComments' ][ 0 ]  =  $rawAccounts [ $i ][ $ids [ 'dhcp_settings_description' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 19:51:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $messages ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-24 16:38:27 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-29 17:22:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								?>