| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Download a binary value attribute to the user. | 
					
						
							|  |  |  |  * A server ID, DN and Attribute must be provided in the GET attributes. | 
					
						
							|  |  |  |  * Optionally an index, type and filename can be supplied. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package phpLDAPadmin | 
					
						
							|  |  |  |  * @subpackage Page | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require './common.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $request = array(); | 
					
						
							|  |  |  | $request['dn'] = get_request('dn','GET'); | 
					
						
							|  |  |  | $request['attr'] = strtolower(get_request('attr','GET',true)); | 
					
						
							|  |  |  | $request['index'] = get_request('index','GET',false,0); | 
					
						
							|  |  |  | $request['type'] = get_request('type','GET',false,'octet-stream'); | 
					
						
							|  |  |  | $request['filename'] = get_request('filename','GET',false,sprintf('%s:%s.bin',get_rdn($request['dn'],true),$request['attr'])); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (! $app['server']->dnExists($request['dn'])) | 
					
						
							| 
									
										
										
										
											2018-03-12 18:08:39 +00:00
										 |  |  | 	error(sprintf(_('The entry (%s) does not exist.'),htmlspecialchars($request['dn'])),'error','index.php'); | 
					
						
							| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | $search = $app['server']->getDNAttrValues($request['dn'],null,LDAP_DEREF_NEVER,array($request['attr'])); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Dump the binary data to the browser
 | 
					
						
							|  |  |  | $obStatus = ob_get_status(); | 
					
						
							| 
									
										
										
										
											2018-03-12 18:08:39 +00:00
										 |  |  | if (isset($obStatus['type']) && $obStatus['type'] && $obStatus['status']) | 
					
						
							| 
									
										
										
										
											2011-06-26 10:44:28 +00:00
										 |  |  | 	ob_end_clean(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (! isset($search[$request['attr']][$request['index']])) { | 
					
						
							|  |  |  | 	# We cant display an error, but we can set a system message, which will be display on the next page render.
 | 
					
						
							|  |  |  | 	system_message(array( | 
					
						
							|  |  |  | 		'title'=>_('No binary data available'), | 
					
						
							|  |  |  | 		'body'=>sprintf(_('Could not fetch binary data from LDAP server for attribute [%s].'),$request['attr']), | 
					
						
							|  |  |  | 		'type'=>'warn')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	die(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | header(sprintf('Content-type: %s',$request['type'])); | 
					
						
							|  |  |  | header(sprintf('Content-disposition: attachment; filename="%s"',$request['filename'])); | 
					
						
							|  |  |  | header(sprintf('Expires: Mon, 26 Jul 1997 05:00:00 GMT',gmdate('r'))); | 
					
						
							|  |  |  | header(sprintf('Last-Modified: %s',gmdate('r'))); | 
					
						
							|  |  |  | echo $search[$request['attr']][$request['index']]; | 
					
						
							|  |  |  | die(); | 
					
						
							|  |  |  | ?>
 |