Compare commits
4 Commits
RELEASE-0.
...
RELEASE-0.
Author | SHA1 | Date | |
---|---|---|---|
|
b443271175 | ||
|
bbcd2cb3b6 | ||
|
df48b8ff9b | ||
|
d12096bbd3 |
4
INSTALL
@@ -28,10 +28,10 @@ in the "doc" directory.
|
||||
# mkdir /var/www/tmp, and then
|
||||
# chown root:daemon /var/www/tmp
|
||||
# chmod 1755 /var/www/tmp
|
||||
Where tmp is the $jpeg_temp_dir configured in config.php
|
||||
Where tmp is the $config->custom->tmpdir['jpeg'] configured in config.php
|
||||
|
||||
* Windows
|
||||
|
||||
For jpeg photos to work properly, be sure to change $jpeg_temp_dir
|
||||
For jpeg photos to work properly, be sure to change $config->custom->tmpdir['jpeg']
|
||||
from "/tmp" to "c:\\temp" or similar.
|
||||
|
||||
|
135
add_attr.php
@@ -1,135 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_attr.php,v 1.8 2004/04/26 22:58:00 xrenard Exp $
|
||||
|
||||
|
||||
/*
|
||||
* add_attr.php
|
||||
* Adds an attribute/value pair to an object
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
* - dn
|
||||
* - server_id
|
||||
* - attr
|
||||
* - val
|
||||
* - binary
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
$server_id = $_POST['server_id'];
|
||||
$attr = $_POST['attr'];
|
||||
$val = isset( $_POST['val'] ) ? $_POST['val'] : false;;
|
||||
$dn = $_POST['dn'] ;
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
$is_binary_val = isset( $_POST['binary'] ) ? true : false;
|
||||
|
||||
if( ! $is_binary_val && $val == "" ) {
|
||||
pla_error( $lang['left_attr_blank'] );
|
||||
}
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
// special case for binary attributes (like jpegPhoto and userCertificate):
|
||||
// we must go read the data from the file and override $val with the binary data
|
||||
// Secondly, we must check if the ";binary" option has to be appended to the name
|
||||
// of the attribute.
|
||||
|
||||
if( $is_binary_val ) {
|
||||
if( 0 == $_FILES['val']['size'] )
|
||||
pla_error( $lang['file_empty'] );
|
||||
if( ! is_uploaded_file( $_FILES['val']['tmp_name'] ) ) {
|
||||
if( isset( $_FILES['val']['error'] ) )
|
||||
switch($_FILES['val']['error']){
|
||||
case 0: //no error; possible file attack!
|
||||
pla_error( $lang['invalid_file'] );
|
||||
case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
|
||||
pla_error( $lang['uploaded_file_too_big'] );
|
||||
case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
|
||||
pla_error( $lang['uploaded_file_too_big'] );
|
||||
case 3: //uploaded file was only partially uploaded
|
||||
pla_error( $lang['uploaded_file_partial'] );
|
||||
case 4: //no file was uploaded
|
||||
pla_error( $lang['left_attr_blank'] );
|
||||
default: //a default error, just in case! :)
|
||||
pla_error( $lang['invalid_file'] );
|
||||
break;
|
||||
}
|
||||
else
|
||||
pla_error( $lang['invalid_file'] );
|
||||
}
|
||||
$file = $_FILES['val']['tmp_name'];
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_data = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
$val = $binary_data;
|
||||
|
||||
if( is_binary_option_required( $server_id, $attr ) )
|
||||
$attr .=";binary";
|
||||
}
|
||||
|
||||
// Automagically hash new userPassword attributes according to the
|
||||
// chosen in config.php.
|
||||
if( 0 == strcasecmp( $attr, 'userpassword' ) )
|
||||
{
|
||||
if( isset( $servers[$server_id]['default_hash'] ) &&
|
||||
$servers[$server_id]['default_hash'] != '' )
|
||||
{
|
||||
$enc_type = $servers[$server_id]['default_hash'];
|
||||
$val = password_hash( $val, $enc_type );
|
||||
}
|
||||
}
|
||||
elseif( ( 0 == strcasecmp( $attr , 'sambantpassword' ) || 0 == strcasecmp( $attr , 'sambalmpassword') ) ){
|
||||
$mkntPassword = new MkntPasswdUtil();
|
||||
$mkntPassword->createSambaPasswords( $val );
|
||||
$val = $mkntPassword->valueOf($attr);
|
||||
}
|
||||
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$new_entry = array( $attr => $val );
|
||||
$result = @ldap_mod_add( $ds, $dn, $new_entry );
|
||||
|
||||
if( $result )
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" );
|
||||
else
|
||||
pla_error( $lang['failed_to_add_attr'], ldap_error( $ds ) , ldap_errno( $ds ) );
|
||||
|
||||
// check if we need to append the ;binary option to the name
|
||||
// of some binary attribute
|
||||
|
||||
function is_binary_option_required( $server_id, $attr ){
|
||||
|
||||
// list of the binary attributes which need the ";binary" option
|
||||
$binary_attributes_with_options = array(
|
||||
// Superior: Ldapv3 Syntaxes (1.3.6.1.4.1.1466.115.121.1)
|
||||
'1.3.6.1.4.1.1466.115.121.1.8' => "userCertificate",
|
||||
'1.3.6.1.4.1.1466.115.121.1.8' => "caCertificate",
|
||||
'1.3.6.1.4.1.1466.115.121.1.10' => "crossCertificatePair",
|
||||
'1.3.6.1.4.1.1466.115.121.1.9' => "certificateRevocationList",
|
||||
'1.3.6.1.4.1.1466.115.121.1.9' => "authorityRevocationList",
|
||||
// Superior: Netscape Ldap attributes types (2.16.840.1.113730.3.1)
|
||||
'2.16.840.1.113730.3.1.40' => "userSMIMECertificate"
|
||||
);
|
||||
|
||||
// quick check by attr name (short circuits the schema check if possible)
|
||||
//foreach( $binary_attributes_with_options as $oid => $name )
|
||||
//if( 0 == strcasecmp( $attr, $name ) )
|
||||
//return true;
|
||||
|
||||
$schema_attr = get_schema_attribute( $server_id, $attr );
|
||||
if( ! $schema_attr )
|
||||
return false;
|
||||
|
||||
$syntax = $schema_attr->getSyntaxOID();
|
||||
if( isset( $binary_attributes_with_options[ $syntax ] ) )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,171 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_attr_form.php,v 1.6 2004/04/26 13:01:24 uugdave Exp $
|
||||
|
||||
|
||||
/*
|
||||
* add_attr_form.php
|
||||
* Displays a form for adding an attribute/value to an LDAP entry.
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
$rdn = get_rdn( $dn );
|
||||
$server_name = $servers[$server_id]['name'];
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
include 'header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo sprintf( $lang['add_new_attribute'], htmlspecialchars( $rdn ) ); ?></b></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $server_name; ?></b> <?php echo $lang['distinguished_name']; ?>: <b><?php echo htmlspecialchars( ( $dn ) ); ?></b></h3>
|
||||
|
||||
<?php
|
||||
|
||||
$attrs = get_object_attrs( $server_id, $dn );
|
||||
$oclasses = get_object_attr( $server_id, $dn, 'objectClass' );
|
||||
if( ! is_array( $oclasses ) )
|
||||
$oclasses = array( $oclasses );
|
||||
$avail_attrs = array();
|
||||
$schema_oclasses = get_schema_objectclasses( $server_id, $dn );
|
||||
foreach( $oclasses as $oclass ) {
|
||||
$schema_oclass = get_schema_objectclass( $server_id, $oclass, $dn );
|
||||
if( $schema_oclass && 'objectclass' == get_class( $schema_oclass ) )
|
||||
$avail_attrs = array_merge( $schema_oclass->getMustAttrNames( $schema_oclasses ),
|
||||
$schema_oclass->getMayAttrNames( $schema_oclasses ),
|
||||
$avail_attrs );
|
||||
}
|
||||
|
||||
$avail_attrs = array_unique( $avail_attrs );
|
||||
$avail_attrs = array_filter( $avail_attrs, "not_an_attr" );
|
||||
sort( $avail_attrs );
|
||||
|
||||
$avail_binary_attrs = array();
|
||||
foreach( $avail_attrs as $i => $attr ) {
|
||||
if( is_attr_binary( $server_id, $attr ) ) {
|
||||
$avail_binary_attrs[] = $attr;
|
||||
unset( $avail_attrs[ $i ] );
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<br />
|
||||
<center>
|
||||
|
||||
|
||||
<?php echo $lang['add_new_attribute']; ?>
|
||||
|
||||
<?php if( is_array( $avail_attrs ) && count( $avail_attrs ) > 0 ) { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<form action="add_attr.php" method="post">
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
|
||||
<select name="attr"><?php
|
||||
|
||||
$attr_select_html = '';
|
||||
foreach( $avail_attrs as $a ) {
|
||||
// is there a user-friendly translation available for this attribute?
|
||||
if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) {
|
||||
$attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" .
|
||||
htmlspecialchars($a) . ")";
|
||||
} else {
|
||||
$attr_display = htmlspecialchars( $a );
|
||||
}
|
||||
echo $attr_display;
|
||||
$attr_select_html .= "<option>$attr_display</option>\n";
|
||||
echo "<option value=\"" . htmlspecialchars($a) . "\">$attr_display</option>";
|
||||
} ?>
|
||||
</select>
|
||||
<input type="text" name="val" size="20" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['add']; ?>" class="update_dn" />
|
||||
</form>
|
||||
<?php } else { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<small>(<?php echo $lang['no_new_attrs_available']; ?>)</small>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<?php echo $lang['add_new_binary_attr']; ?>
|
||||
<?php if( count( $avail_binary_attrs ) > 0 ) { ?>
|
||||
<!-- Form to add a new BINARY attribute to this entry -->
|
||||
<form action="add_attr.php" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
<br />
|
||||
<select name="attr">
|
||||
<?php
|
||||
$attr_select_html = '';
|
||||
foreach( $avail_binary_attrs as $a ) {
|
||||
// is there a user-friendly translation available for this attribute?
|
||||
if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) {
|
||||
$attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" .
|
||||
htmlspecialchars($a) . ")";
|
||||
} else {
|
||||
$attr_display = htmlspecialchars( $a );
|
||||
}
|
||||
|
||||
echo $attr_display;
|
||||
$attr_select_html .= "<option>$attr_display</option>\n";
|
||||
echo "<option value=\"" . htmlspecialchars($a) . "\">$attr_display</option>";
|
||||
} ?>
|
||||
</select>
|
||||
<input type="file" name="val" size="20" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['add']; ?>" class="update_dn" />
|
||||
<?php
|
||||
if( ! ini_get( 'file_uploads' ) )
|
||||
echo "<br><small><b>" . $lang['warning_file_uploads_disabled'] . "</b></small><br>";
|
||||
else
|
||||
echo "<br><small><b>" . sprintf( $lang['max_file_size'], ini_get( 'upload_max_filesize' ) ) . "</b></small><br>";
|
||||
?>
|
||||
</form>
|
||||
<?php } else { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<small>(<?php echo $lang['no_new_binary_attrs_available']; ?>)</small>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Given an attribute $x, this returns true if it is NOT already specified
|
||||
* in the current entry, returns false otherwise.
|
||||
*/
|
||||
function not_an_attr( $x )
|
||||
{
|
||||
global $attrs;
|
||||
//return ! isset( $attrs[ strtolower( $x ) ] );
|
||||
foreach( $attrs as $attr => $values )
|
||||
if( 0 == strcasecmp( $attr, $x ) )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
?>
|
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_oclass.php,v 1.7 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
/*
|
||||
* add_oclass.php
|
||||
* Adds an objectClass to the specified dn.
|
||||
* Variables that come in as POST vars:
|
||||
*
|
||||
* Note, this does not do any schema violation checking. That is
|
||||
* performed in add_oclass_form.php.
|
||||
*
|
||||
* Vars that come in as POST:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - new_oclass
|
||||
* - new_attrs (array, if any)
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$new_oclass = $_POST['new_oclass'];
|
||||
$server_id = $_POST['server_id'];
|
||||
$new_attrs = $_POST['new_attrs'];
|
||||
|
||||
if( is_attr_read_only( 'objectClass' ) )
|
||||
pla_error( "ObjectClasses are flagged as read only in the phpLDAPadmin configuration." );
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$new_entry = array();
|
||||
$new_entry['objectClass'] = $new_oclass;
|
||||
|
||||
$new_attrs_entry = array();
|
||||
$new_oclass_entry = array( 'objectClass' => $new_oclass );
|
||||
|
||||
if( is_array( $new_attrs ) && count( $new_attrs ) > 0 )
|
||||
foreach( $new_attrs as $attr => $val )
|
||||
$new_entry[ $attr ] = $val;
|
||||
|
||||
//echo "<pre>";
|
||||
//print_r( $new_entry );
|
||||
//exit;
|
||||
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$add_res = @ldap_mod_add( $ds, $dn, $new_entry );
|
||||
|
||||
if( ! $add_res )
|
||||
{
|
||||
pla_error( $lang['could_not_perform_ldap_mod_add'], ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn" );
|
||||
}
|
||||
|
||||
?>
|
@@ -1,114 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_oclass_form.php,v 1.9 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* add_oclass_form.php
|
||||
* This page may simply add the objectClass and take you back to the edit page,
|
||||
* but, in one condition it may prompt the user for input. That condition is this:
|
||||
*
|
||||
* If the user has requested to add an objectClass that requires a set of
|
||||
* attributes with 1 or more not defined by the object. In that case, we will
|
||||
* present a form for the user to add those attributes to the object.
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - new_oclass
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$new_oclass = $_POST['new_oclass'];
|
||||
$server_id = $_POST['server_id'];
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
/* Ensure that the object has defined all MUST attrs for this objectClass.
|
||||
* If it hasn't, present a form to have the user enter values for all the
|
||||
* newly required attrs. */
|
||||
|
||||
$entry = get_object_attrs( $server_id, $dn, true );
|
||||
$current_attrs = array();
|
||||
foreach( $entry as $attr => $junk )
|
||||
$current_attrs[] = strtolower($attr);
|
||||
|
||||
// grab the required attributes for the new objectClass
|
||||
$oclass = get_schema_objectclass( $server_id, $new_oclass );
|
||||
if( $oclass )
|
||||
$must_attrs = $oclass->getMustAttrs();
|
||||
else
|
||||
$must_attrs = array();
|
||||
|
||||
// We don't want any of the attr meta-data, just the string
|
||||
foreach( $must_attrs as $i => $attr )
|
||||
$must_attrs[$i] = $attr->getName();
|
||||
|
||||
// build a list of the attributes that this new objectClass requires,
|
||||
// but that the object does not currently contain
|
||||
$needed_attrs = array();
|
||||
foreach( $must_attrs as $attr )
|
||||
if( ! in_array( strtolower($attr), $current_attrs ) )
|
||||
$needed_attrs[] = $attr;
|
||||
|
||||
if( count( $needed_attrs ) > 0 )
|
||||
{
|
||||
include 'header.php'; ?>
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['new_required_attrs']; ?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['requires_to_add'] . ' ' . count($needed_attrs) .
|
||||
' ' . $lang['new_attributes']; ?></h3>
|
||||
|
||||
<small>
|
||||
<?php
|
||||
echo $lang['new_required_attrs_instructions'];
|
||||
echo ' ' . count( $needed_attrs ) . ' ' . $lang['new_attributes'] . ' ';
|
||||
echo $lang['that_this_oclass_requires']; ?>
|
||||
</small>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<form action="add_oclass.php" method="post">
|
||||
<input type="hidden" name="new_oclass" value="<?php echo htmlspecialchars( $new_oclass ); ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
|
||||
<table class="edit_dn" cellspacing="0">
|
||||
<tr><th colspan="2"><?php echo $lang['new_required_attrs']; ?></th></tr>
|
||||
|
||||
<?php foreach( $needed_attrs as $count => $attr ) { ?>
|
||||
<tr><td class="attr"><b><?php echo htmlspecialchars($attr); ?></b></td></tr>
|
||||
<tr><td class="val"><input type="text" name="new_attrs[<?php echo htmlspecialchars($attr); ?>]" value="" size="40" /></tr>
|
||||
<?php } ?>
|
||||
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
<center><input type="submit" value="<?php echo $lang['add_oclass_and_attrs']; ?>" /></center>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( "Could not connect to LDAP server." );
|
||||
$add_res = @ldap_mod_add( $ds, $dn, array( 'objectClass' => $new_oclass ) );
|
||||
if( ! $add_res )
|
||||
pla_error( "Could not perform ldap_mod_add operation.", ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
else
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn" );
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_value.php,v 1.10 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* add_value.php
|
||||
* Adds a value to an attribute for a given dn.
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
* - server_id
|
||||
* - new_value (form element)
|
||||
* - binary
|
||||
*
|
||||
* On success, redirect to the edit_dn page.
|
||||
* On failure, echo an error.
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$attr = $_POST['attr'];
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
$server_id = $_POST['server_id'];
|
||||
$new_value = $_POST['new_value'];
|
||||
$is_binary_val = isset( $_POST['binary'] ) ? true : false;
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( is_attr_read_only( $attr ) )
|
||||
pla_error( "The attribute '" . htmlspecialchars( $attr ) . "' is flagged as read only in the phpLDAPadmin configuration." );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
|
||||
// special case for binary attributes:
|
||||
// we must go read the data from the file.
|
||||
if( $is_binary_val )
|
||||
{
|
||||
$file = $_FILES['new_value']['tmp_name'];
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_value = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
$new_value = $binary_value;
|
||||
}
|
||||
|
||||
$new_entry = array( $attr => $new_value );
|
||||
|
||||
$add_result = @ldap_mod_add( $ds, $dn, $new_entry );
|
||||
|
||||
if( ! $add_result )
|
||||
pla_error( $lang['could_not_perform_ldap_mod_add'], ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" );
|
||||
|
||||
?>
|
44
collapse.php
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/collapse.php,v 1.10 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* collapse.php
|
||||
* This script alters the session variable 'tree', collapsing it
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* Note: this script is equal and opposite to expand.php
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
|
||||
check_server_id( $server_id ) or pla_error( "Bad server_id: " . htmlspecialchars( $server_id ) );
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
if( array_key_exists( $dn, $_SESSION['tree'][$server_id] ) )
|
||||
unset( $_SESSION['tree'][$server_id][$dn] );
|
||||
|
||||
// This is for Opera. By putting "random junk" in the query string, it thinks
|
||||
// that it does not have a cached version of the page, and will thus
|
||||
// fetch the page rather than display the cached version
|
||||
$time = gettimeofday();
|
||||
$random_junk = md5( strtotime( 'now' ) . $time['usec'] );
|
||||
|
||||
// If cookies were disabled, build the url parameter for the session id.
|
||||
// It will be append to the url to be redirect
|
||||
$id_session_param="";
|
||||
if(SID != ""){
|
||||
$id_session_param = "&".session_name()."=".session_id();
|
||||
}
|
||||
|
||||
header( "Location:tree.php?foo=$random_junk#{$server_id}_{$encoded_dn}$id_session_param" );
|
||||
?>
|
146
common.php
@@ -1,146 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/common.php,v 1.49 2004/05/10 12:28:07 uugdave Exp $
|
||||
|
||||
/*
|
||||
* common.php
|
||||
* Contains code to be executed at the top of each phpLDAPadmin page.
|
||||
* include this file at the top of every PHP file.
|
||||
*/
|
||||
|
||||
// Turn on all notices and warnings. This helps us write cleaner code (we hope at least)
|
||||
error_reporting( E_ALL );
|
||||
|
||||
/** The minimum version of PHP required to run phpLDAPadmin. */
|
||||
@define( 'REQUIRED_PHP_VERSION', '4.1.0' );
|
||||
/** The default setting for $search_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_SEARCH_DEREF_SETTING', LDAP_DEREF_ALWAYS );
|
||||
/** The default setting for $tree_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_TREE_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
/** The default setting for $export_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_EXPORT_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
/** The default setting for $view_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_VIEW_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
|
||||
// General functions needed to proceed (pla_ldap_search(), pla_error(), get_object_attrs(), etc.)
|
||||
ob_start();
|
||||
if( ! file_exists( realpath( './functions.php' ) ) ) {
|
||||
ob_end_clean();
|
||||
die( "Fatal error: Required file 'functions.php' does not exist." );
|
||||
}
|
||||
if( ! is_readable( realpath( './functions.php' ) ) ) {
|
||||
ob_end_clean();
|
||||
die( "Cannot read the file 'functions.php' its permissions are too strict." );
|
||||
}
|
||||
require_once realpath( './functions.php' );
|
||||
ob_end_clean();
|
||||
|
||||
// Our custom error handler receives all error notices that pass the error_reporting()
|
||||
// level set above.
|
||||
set_error_handler( 'pla_error_handler' );
|
||||
|
||||
// Creates the language array which will be populated with localized strings
|
||||
// based on the user-configured language.
|
||||
$lang = array();
|
||||
|
||||
// config.php might not exist (if the user hasn't configured PLA yet)
|
||||
// Only include it if it does exist.
|
||||
if( file_exists( realpath( './config.php' ) ) ) {
|
||||
ob_start();
|
||||
is_readable( realpath( './config.php' ) ) or pla_error( "Could not read config.php, its permissions are too strict." );
|
||||
include realpath( './config.php' );
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
$required_files = array(
|
||||
// Functions that can be defined by the user (preEntryDelete(), postEntryDelete(), etc.)
|
||||
'./session_functions.php',
|
||||
// Functions for reading the server schema (get_schema_object_classes(), etc.)
|
||||
'./schema_functions.php',
|
||||
// Functions that can be defined by the user (preEntryDelete(), postEntryDelete(), etc.)
|
||||
'./custom_functions.php',
|
||||
// Functions for hashing passwords with OpenSSL binary (only if mhash not present)
|
||||
'./emuhash_functions.php',
|
||||
// The base English language strings
|
||||
'./lang/recoded/en.php' );
|
||||
|
||||
|
||||
// Include each required file and check for sanity.
|
||||
foreach( $required_files as $file_name ) {
|
||||
file_exists( realpath( $file_name ) )
|
||||
or pla_error( "Fatal error: Required file '$file_name' does not exist." );
|
||||
is_readable( realpath( $file_name ) )
|
||||
or pla_error( "Fatal error: Cannot read the file '$file_name', its permissions are too strict." );
|
||||
ob_start();
|
||||
require_once realpath( $file_name );
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
pla_session_start();
|
||||
|
||||
// Language configuration. Auto or specified?
|
||||
// Shall we attempt to auto-determine the language?
|
||||
if( isset( $language ) ) {
|
||||
if( 0 == strcasecmp( $language, "auto" ) ) {
|
||||
|
||||
// Make sure their browser correctly reports language. If not, skip this.
|
||||
if( isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) {
|
||||
|
||||
// get the languages which are spetcified in the HTTP header
|
||||
$HTTP_LANGS1 = preg_split ("/[;,]+/", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
|
||||
$HTTP_LANGS2 = preg_split ("/[;,]+/", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
|
||||
foreach( $HTTP_LANGS2 as $key => $value ) {
|
||||
$value=preg_split ("/[-]+/", $value );
|
||||
$HTTP_LANGS2[$key]=$value[0];
|
||||
}
|
||||
|
||||
$HTTP_LANGS = array_merge ($HTTP_LANGS1, $HTTP_LANGS2);
|
||||
foreach( $HTTP_LANGS as $HTTP_LANG) {
|
||||
// try to grab one after the other the language file
|
||||
if( file_exists( realpath( "lang/recoded/$HTTP_LANG.php" ) ) &&
|
||||
is_readable( realpath( "lang/recoded/$HTTP_LANG.php" ) ) ) {
|
||||
ob_start();
|
||||
include realpath( "lang/recoded/$HTTP_LANG.php" );
|
||||
ob_end_clean();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// grab the language file configured in config.php
|
||||
if( $language != null ) {
|
||||
if( 0 == strcmp( $language, 'english' ) )
|
||||
$language = 'en';
|
||||
if( file_exists( realpath( "lang/recoded/$language.php" ) ) &&
|
||||
is_readable( realpath( "lang/recoded/$language.php" ) ) ) {
|
||||
ob_start();
|
||||
include realpath( "lang/recoded/$language.php" );
|
||||
ob_end_clean();
|
||||
} else {
|
||||
pla_error( "Could not read language file 'lang/recoded/$language.php'. Either the file
|
||||
does not exist, or its permissions do not allow phpLDAPadmin to read it." );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If config.php doesn't create the templates array, create it here.
|
||||
if( ! isset( $templates ) || ! is_array( $templates ) )
|
||||
$templates = array();
|
||||
|
||||
// Always including the 'custom' template (the most generic and flexible)
|
||||
$templates['custom'] =
|
||||
array( 'desc' => 'Custom',
|
||||
'icon' => 'images/object.png',
|
||||
'handler' => 'custom.php' );
|
||||
|
||||
// Strip slashes from GET, POST, and COOKIE variables if this
|
||||
// PHP install is configured to automatically addslashes()
|
||||
if ( get_magic_quotes_gpc() && ( ! isset( $slashes_stripped ) || ! $slashes_stripped ) ) {
|
||||
array_stripslashes($_GET);
|
||||
array_stripslashes($_POST);
|
||||
array_stripslashes($_COOKIE);
|
||||
array_stripslashes($_FILES);
|
||||
$slashes_stripped = true;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,317 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* The phpLDAPadmin config file
|
||||
*
|
||||
* This is where you customize phpLDAPadmin. The most important
|
||||
* part is immediately below: The "LDAP Servers" section.
|
||||
* You must specify at least one LDAP server there. You may add
|
||||
* as many as you like. You can also specify your language, and
|
||||
* many other options.
|
||||
*
|
||||
*/
|
||||
|
||||
// Your LDAP servers
|
||||
$i=0;
|
||||
$servers = array();
|
||||
$servers[$i]['name'] = 'My LDAP Server'; /* A convenient name that will appear in
|
||||
the tree viewer and throughout phpLDAPadmin to
|
||||
identify this LDAP server to users. */
|
||||
$servers[$i]['host'] = 'ldap.example.com'; /* Examples:
|
||||
'ldap.example.com',
|
||||
'ldaps://ldap.example.com/',
|
||||
'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
|
||||
(Unix socket at /usr/local/var/run/ldap)
|
||||
Note: Leave 'host' blank to make phpLDAPadmin
|
||||
ignore this server. */
|
||||
$servers[$i]['base'] = 'dc=example,dc=com'; /* The base DN of your LDAP server. Leave this
|
||||
blank to have phpLDAPadmin auto-detect it for you. */
|
||||
$servers[$i]['port'] = 389; /* The port your LDAP server listens on
|
||||
(no quotes). 389 is standard. */
|
||||
$servers[$i]['auth_type'] = 'config'; /* Three options for auth_type:
|
||||
1. 'cookie': you will login via a web form,
|
||||
and a client-side cookie will store your
|
||||
login dn and password.
|
||||
2. 'session': same as cookie but your login dn
|
||||
and password are stored on the web server in
|
||||
a session variable.
|
||||
3. 'config': specify your login dn and password
|
||||
here in this config file. No login will be
|
||||
required to use phpLDAPadmin for this server.
|
||||
Choose wisely to protect your authentication
|
||||
information appropriately for your situation. */
|
||||
$servers[$i]['login_dn'] = 'cn=Manager,dc=example,dc=com';
|
||||
/* The DN of the user for phpLDAPadmin to bind with.
|
||||
For anonymous binds or 'cookie' or 'session' auth_types,
|
||||
leave the login_dn and login_pass blank. If you specify a
|
||||
login_attr in conjunction with a cookie or session auth_type,
|
||||
then you can also specify the login_dn/login_pass here for
|
||||
searching the directory for users (ie, if your LDAP server
|
||||
does not allow anonymous binds. */
|
||||
$servers[$i]['login_pass'] = 'secret'; /* Your LDAP password. If you specified an empty login_dn above, this
|
||||
MUST also be blank. */
|
||||
$servers[$i]['tls'] = false; /* Use TLS (Transport Layer Security) to connect to the LDAP
|
||||
server. */
|
||||
$servers[$i]['low_bandwidth'] = false; /* If the link between your web server and this LDAP server is
|
||||
slow, it is recommended that you set 'low_bandwidth' to true.
|
||||
This will cause phpLDAPadmin to forego some "fancy" features
|
||||
to conserve bandwidth. */
|
||||
$servers[$i]['default_hash'] = 'crypt'; /* Default password hashing algorithm.
|
||||
One of md5, ssha, sha, md5crpyt, smd5, blowfish, crypt or
|
||||
leave blank for now default algorithm. */
|
||||
$servers[$i]['login_attr'] = 'dn'; /* If you specified 'cookie' or 'session' as the auth_type above,
|
||||
you can optionally specify here an attribute
|
||||
to use when logging in. If you enter 'uid'
|
||||
and login as 'dsmith', phpLDAPadmin will
|
||||
search for (uid=dsmith) and log in as that user. Leave
|
||||
blank or specify 'dn' to use full DN for
|
||||
logging in. Note also that if your LDAP server requires
|
||||
you to login to perform searches, you can enter
|
||||
the DN to use when searching in 'login_dn' and
|
||||
'login_pass' above. */
|
||||
$servers[$i]['login_class'] = ''; /* If 'login_attr' is used above such that phpLDAPadmin will
|
||||
search for your DN at login, you may restrict the search to
|
||||
a specific objectClass. E.g., set this to 'posixAccount' or
|
||||
'inetOrgPerson', depending upon your setup. */
|
||||
$servers[$i]['read_only'] = false; /* Specify true If you want phpLDAPadmin to not
|
||||
display or permit any modification to the
|
||||
LDAP server. */
|
||||
$servers[$i]['show_create'] = true; /* Specify false if you do not want phpLDAPadmin to
|
||||
draw the 'Create new' links in the tree viewer. */
|
||||
$servers[$i]['enable_auto_uid_numbers'] = false;
|
||||
/* This feature allows phpLDAPadmin to
|
||||
automatically determine the next
|
||||
available uidNumber for a new entry. */
|
||||
$servers[$i]['auto_uid_number_mechanism'] = 'search';
|
||||
/* The mechanism to use when finding the next available uidNumber.
|
||||
Two possible values: 'uidpool' or 'search'. The 'uidpool'
|
||||
mechanism uses an existing uidPool entry in your LDAP server
|
||||
to blindly lookup the next available uidNumber. The 'search'
|
||||
mechanism searches for entries with a uidNumber value and finds
|
||||
the first available uidNumber (slower). */
|
||||
$servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com';
|
||||
/* The DN of the search base when the 'search'
|
||||
mechanism is used above. */
|
||||
$servers[$i]['auto_uid_number_min'] = 1000;
|
||||
/* The minimum number to use when searching for the next
|
||||
available UID number (only when 'search' is used for
|
||||
auto_uid_number_mechanism' */
|
||||
$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
/* The DN of the uidPool entry when 'uidpool'
|
||||
mechanism is used above. */
|
||||
$servers[$i]['auto_uid_number_search_dn'] = '';
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user
|
||||
ID when searching for the uidnumber. The idea is, this user id would
|
||||
have full (readonly) access to uidnumber in your ldap directory (the
|
||||
logged in user may not), so that you can be guaranteed to get a unique
|
||||
uidnumber for your directory. */
|
||||
$servers[$i]['auto_uid_number_search_dn_pass'] = '';
|
||||
/* The password for the dn above */
|
||||
|
||||
|
||||
// If you want to configure additional LDAP servers, do so below.
|
||||
$i++;
|
||||
$servers[$i]['name'] = 'Another server';
|
||||
$servers[$i]['host'] = '';
|
||||
$servers[$i]['base'] = 'dc=example,dc=com';
|
||||
$servers[$i]['port'] = 389;
|
||||
$servers[$i]['auth_type'] = 'config';
|
||||
$servers[$i]['login_dn'] = '';
|
||||
$servers[$i]['login_pass'] = '';
|
||||
$servers[$i]['tls'] = false;
|
||||
$servers[$i]['low_bandwidth'] = false;
|
||||
$servers[$i]['default_hash'] = 'crypt';
|
||||
$servers[$i]['login_attr'] = 'dn';
|
||||
$servers[$i]['login_class'] = '';
|
||||
$servers[$i]['read_only'] = false;
|
||||
$servers[$i]['show_create'] = true;
|
||||
$servers[$i]['enable_auto_uid_numbers'] = false;
|
||||
$servers[$i]['auto_uid_number_mechanism'] = 'search';
|
||||
$servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com';
|
||||
$servers[$i]['auto_uid_number_min'] = 1000;
|
||||
$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
|
||||
// If you want to configure more LDAP servers, copy and paste the above (including the "$i++;")
|
||||
|
||||
// The temporary storage directory where we will put jpegPhoto data
|
||||
// This directory must be readable and writable by your web server
|
||||
$jpeg_temp_dir = "/tmp"; // Example for Unix systems
|
||||
//$jpeg_temp_dir = "c:\\temp"; // Example for Windows systems
|
||||
|
||||
/** **/
|
||||
/** Appearance and Behavior **/
|
||||
/** **/
|
||||
|
||||
// Aliases and Referrrals
|
||||
//
|
||||
// Similar to ldapsearh's -a option, the following options allow you to configure
|
||||
// how phpLDAPadmin will treat aliases and referrals in the LDAP tree.
|
||||
// For the following four settings, avaialable options include:
|
||||
//
|
||||
// LDAP_DEREF_NEVER - aliases are never dereferenced (eg, the contents of
|
||||
// the alias itself are shown and not the referenced entry).
|
||||
// LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but
|
||||
// not when locating the base object of the search.
|
||||
// LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base
|
||||
// object but not during the search.
|
||||
// LDAP_DEREF_ALWAYS - aliases should be dereferenced always (eg, the contents
|
||||
// of the referenced entry is shown and not the aliasing entry)
|
||||
|
||||
// How to handle references and aliases in the search form. See above for options.
|
||||
$search_deref = LDAP_DEREF_ALWAYS;
|
||||
|
||||
// How to handle references and aliases in the tree viewer. See above for options.
|
||||
$tree_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
// How to handle references and aliases for exports. See above for options.
|
||||
$export_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
// How to handle references and aliases when viewing entries. See above for options.
|
||||
$view_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
|
||||
// The language setting. If you set this to 'auto', phpLDAPadmin will
|
||||
// attempt to determine your language automatically. Otherwise, available
|
||||
// lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
|
||||
// Localization is not complete yet, but most strings have been translated.
|
||||
// Please help by writing language files. See lang/en.php for an example.
|
||||
$language = 'auto';
|
||||
|
||||
// Set to true if you want to draw a checkbox next to each entry in the tree viewer
|
||||
// to be able to delete multiple entries at once
|
||||
$enable_mass_delete = false;
|
||||
|
||||
// Set to true if you want LDAP data to be displayed read-only (without input fields)
|
||||
// when a user logs in to a server anonymously
|
||||
$anonymous_bind_implies_read_only = true;
|
||||
|
||||
// Set to true if you want phpLDAPadmin to redirect anonymous
|
||||
// users to a search form with no tree viewer on the left after
|
||||
// logging in.
|
||||
$anonymous_bind_redirect_no_tree = false;
|
||||
|
||||
// If you used auth_type 'form' in the servers list, you can adjust how long the cookie will last
|
||||
// (default is 0 seconds, which expires when you close the browser)
|
||||
$cookie_time = 0; // seconds
|
||||
|
||||
// How many pixels wide do you want your left frame view (for the tree browser)
|
||||
$tree_width = 320; // pixels
|
||||
|
||||
// How long to keep jpegPhoto temporary files in the jpeg_temp_dir directory (in seconds)
|
||||
$jpeg_tmp_keep_time = 120; // seconds
|
||||
|
||||
// Would you like to see helpful hint text occacsionally?
|
||||
$show_hints = true; // set to false to disable hints
|
||||
|
||||
// When using the search page, limit result size to this many entries
|
||||
$search_result_size_limit = 50;
|
||||
|
||||
// If true, display password values as ******. Otherwise display them in clear-text
|
||||
// If you use clear-text passwords, it is recommended to set this to true. If you use
|
||||
// hashed passwords (sha, md5, crypt, etc), hashed passwords are already obfuscated by
|
||||
// the hashing algorithm and this should probably be left false.
|
||||
$obfuscate_password_display = false;
|
||||
|
||||
/** **/
|
||||
/** Simple Search Form Config **/
|
||||
/** **/
|
||||
|
||||
// Which attributes to include in the drop-down menu of the simple search form (comma-separated)
|
||||
// Change this to suit your needs for convenient searching. Be sure to change the corresponding
|
||||
// list below ($search_attributes_display)
|
||||
$search_attributes = "uid, cn, gidNumber, objectClass, telephoneNumber, mail, street";
|
||||
|
||||
// This list corresponds to the list directly above. If you want to present more readable names
|
||||
// for your search attributes, do so here. Both lists must have the same number of entries.
|
||||
$search_attributes_display = "User Name, Common Name, Group ID, Object Class, Phone Number, Email, Address";
|
||||
|
||||
// The list of attributes to display in each search result entry.
|
||||
// Note that you can add * to the list to display all attributes
|
||||
$search_result_attributes = "cn, sn, uid, postalAddress, telephoneNumber";
|
||||
|
||||
// You can re-arrange the order of the search criteria on the simple search form by modifying this array
|
||||
// You cannot however change the names of the criteria. Criteria names will be translated at run-time.
|
||||
$search_criteria_options = array( "equals", "starts with", "contains", "ends with", "sounds like" );
|
||||
|
||||
// If you want certain attributes to be editable as multi-line, include them in this list
|
||||
// A multi-line textarea will be drawn instead of a single-line text field
|
||||
$multi_line_attributes = array( "postalAddress", "homePostalAddress", "personalSignature" );
|
||||
|
||||
// A list of syntax OIDs which support multi-line attribute values:
|
||||
$multi_line_syntax_oids = array(
|
||||
// octet string syntax OID:
|
||||
"1.3.6.1.4.1.1466.115.121.1.40",
|
||||
// postal address syntax OID:
|
||||
"1.3.6.1.4.1.1466.115.121.1.41" );
|
||||
|
||||
/** **/
|
||||
/** User-friendly attribute translation **/
|
||||
/** **/
|
||||
|
||||
$friendly_attrs = array();
|
||||
|
||||
// Use this array to map attribute names to user friendly names. For example, if you
|
||||
// don't want to see "facsimileTelephoneNumber" but rather "Fax".
|
||||
|
||||
$friendly_attrs[ 'facsimileTelephoneNumber' ] = 'Fax';
|
||||
$friendly_attrs[ 'telephoneNumber' ] = 'Phone';
|
||||
|
||||
/** **/
|
||||
/** Hidden attributes **/
|
||||
/** **/
|
||||
|
||||
// You may want to hide certain attributes from being displayed in the editor screen
|
||||
// Do this by adding the desired attributes to this list (and uncomment it). This
|
||||
// only affects the editor screen. Attributes will still be visible in the schema
|
||||
// browser and elsewhere. An example is provided below:
|
||||
|
||||
//$hidden_attrs = array( 'jpegPhoto', 'objectClass' );
|
||||
|
||||
/** **/
|
||||
/** Read-only attributes **/
|
||||
/** **/
|
||||
|
||||
// You may want to phpLDAPadmin to display certain attributes as read only, meaning
|
||||
// that users will not be presented a form for modifying those attributes, and they
|
||||
// will not be allowed to be modified on the "back-end" either. You may configure
|
||||
// this list here:
|
||||
|
||||
//$read_only_attrs = array( 'objectClass' );
|
||||
|
||||
// An example of how to specify multiple read-only attributes:
|
||||
// $read_only_attrs = array( 'jpegPhoto', 'objectClass', 'someAttribute' );
|
||||
|
||||
/** **/
|
||||
/** Predefined Queries (canned views) **/
|
||||
/** **/
|
||||
|
||||
// To make searching easier, you may setup predefined queries below (activate the lines by removing "//")
|
||||
//$q=0;
|
||||
//$queries = array();
|
||||
//$queries[$q]['name'] = 'Samba Users'; /* The name that will appear in the simple search form */
|
||||
//$queries[$q]['server'] = '0'; /* The ldap server to query, must be defined in the $servers list above */
|
||||
//$queries[$q]['base'] = 'dc=example,dc=com'; /* The base to search on */
|
||||
//$queries[$q]['scope'] = 'sub'; /* The search scope (sub, base, one) */
|
||||
//$queries[$q]['filter'] = '(&(objectclass=sambaAccount)(objectClass=posixAcount))';
|
||||
/* The LDAP filter to use */
|
||||
//$queries[$q]['attributes'] = 'uid, smbHome, uidNumber';
|
||||
/* The attributes to return */
|
||||
|
||||
// Add more pre-defined queries by copying the text below
|
||||
//$q++;
|
||||
//$queries[$q]['name'] = 'Organizations';
|
||||
//$queries[$q]['server'] = '0';
|
||||
//$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
//$queries[$q]['scope'] = 'sub';
|
||||
//$queries[$q]['filter'] = '(|(objeCtclass=organization)(objectClass=organizationalUnit))';
|
||||
//$queries[$q]['attributes'] = 'ou, o';
|
||||
|
||||
//$q++;
|
||||
//$queries[$q]['name'] = 'Last name starts with S';
|
||||
//$queries[$q]['server'] = '0';
|
||||
//$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
//$queries[$q]['scope'] = 'sub';
|
||||
//$queries[$q]['filter'] = '(sn=s*)';
|
||||
//$queries[$q]['attributes'] = '*';
|
||||
|
||||
?>
|
354
config/config.php.example
Normal file
@@ -0,0 +1,354 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The phpLDAPadmin config file
|
||||
*
|
||||
* This is where you can customise some of the phpLDAPadmin defaults
|
||||
* that are defined in config_default.php.
|
||||
*
|
||||
* To override a default, use the $config->custom variable to do so.
|
||||
* For example, the default for defining the language in config_default.php
|
||||
*
|
||||
* $this->default->appearance['lang'] = array(
|
||||
* 'desc'=>'Language',
|
||||
* 'default'=>'auto');
|
||||
*
|
||||
* to override this, use $config->custom->appearance['lang'] = 'en';
|
||||
*
|
||||
* This file is also used to configure your LDAP server connections.
|
||||
*
|
||||
* You must specify at least one LDAP server there. You may add
|
||||
* as many as you like. You can also specify your language, and
|
||||
* many other options.
|
||||
*/
|
||||
|
||||
/** **/
|
||||
/** Miscellaneous Configuration overrides **/
|
||||
/** **/
|
||||
|
||||
/* If you are asked to put pla in debug mode, this is how you do it: */
|
||||
// $config->custom->debug['level'] = 2;
|
||||
// $config->custom->debug['syslog'] = true;
|
||||
|
||||
/* phpLDAPadmin can encrypt the content of sensitive cookies if you set this
|
||||
to a big random string. */
|
||||
$config->custom->session['blowfish'] = '';
|
||||
|
||||
/* The language setting. If you set this to 'auto', phpLDAPadmin will
|
||||
attempt to determine your language automatically. Otherwise, available
|
||||
lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
|
||||
Localization is not complete yet, but most strings have been translated.
|
||||
Please help by writing language files. See lang/en.php for an example. */
|
||||
// $config->custom->appearance['language'] = 'auto';
|
||||
|
||||
/* The temporary storage directory where we will put jpegPhoto data
|
||||
This directory must be readable and writable by your web server. */
|
||||
// $config->custom->jpeg['tmpdir'] = "c:\\temp"; // Example for Windows systems
|
||||
$config->custom->jpeg['tmpdir'] = "/tmp"; // Example for Unix systems
|
||||
|
||||
/** **/
|
||||
/** Your LDAP servers **/
|
||||
/** **/
|
||||
|
||||
$i=0;
|
||||
$ldapservers = new LDAPServers;
|
||||
|
||||
/* A convenient name that will appear in the tree viewer and throughout phpLDAPadmin to
|
||||
identify this LDAP server to users. */
|
||||
$ldapservers->SetValue($i,'server','name','My LDAP Server');
|
||||
|
||||
/* Examples:
|
||||
'ldap.example.com',
|
||||
'ldaps://ldap.example.com/',
|
||||
'ldapi://%2fusr%local%2fvar%2frun%2fldapi' (Unix socket at /usr/local/var/run/ldap) */
|
||||
// $ldapservers->SetValue($i,'server','host','127.0.0.1');
|
||||
|
||||
/* The port your LDAP server listens on (no quotes). 389 is standard. */
|
||||
// $ldapservers->SetValue($i,'server','port','389');
|
||||
|
||||
/* Array of base DNs of your LDAP server. Leave this blank to have phpLDAPadmin auto-detect it for you. */
|
||||
// $ldapservers->SetValue($i,'server','base',array(''));
|
||||
|
||||
/* Three options for auth_type:
|
||||
1. 'cookie': you will login via a web form, and a client-side cookie will store your
|
||||
login dn and password.
|
||||
2. 'session': same as cookie but your login dn and password are stored on the web server in
|
||||
a persistent session variable.
|
||||
3. 'config': specify your login dn and password here in this config file. No login will be
|
||||
required to use phpLDAPadmin for this server.
|
||||
|
||||
Choose wisely to protect your authentication information appropriately for your situation. If
|
||||
you choose 'cookie', your cookie contents will be encrypted using blowfish and the secret your specify
|
||||
above as session['blowfish']. */
|
||||
// $ldapservers->SetValue($i,'server','auth_type','cookie');
|
||||
|
||||
/* The DN of the user for phpLDAPadmin to bind with. For anonymous binds or 'cookie' or 'session' auth_types,
|
||||
leave the login_dn and login_pass blank. If you specify a login_attr in conjunction with a cookie or
|
||||
session auth_type, then you can also specify the login_dn/login_pass here for searching the directory for
|
||||
users (ie, if your LDAP server does not allow anonymous binds. */
|
||||
// $ldapservers->SetValue($i,'login','dn','cn=Manager,dc=example,dc=com');
|
||||
|
||||
/* Your LDAP password. If you specified an empty login_dn above, this MUST also be blank. */
|
||||
// $ldapservers->SetValue($i,'login','pass','secret');
|
||||
|
||||
/* Use TLS (Transport Layer Security) to connect to the LDAP server. */
|
||||
// $ldapservers->SetValue($i,'server','tls',false);
|
||||
|
||||
/* If the link between your web server and this LDAP server is slow, it is recommended that you set
|
||||
'low_bandwidth' to true. This will cause phpLDAPadmin to forego some "fancy" features to conserve bandwidth. */
|
||||
// $ldapservers->SetValue($i,'server','low_bandwidth',false);
|
||||
|
||||
/* Default password hashing algorithm. One of md5, ssha, sha, md5crpyt, smd5, blowfish, crypt or
|
||||
leave blank for now default algorithm. */
|
||||
// $ldapservers->SetValue($i,'appearance','password_hash','md5');
|
||||
|
||||
/* If you specified 'cookie' or 'session' as the auth_type above, you can optionally specify here an attribute
|
||||
to use when logging in. If you enter 'uid' and login as 'dsmith', phpLDAPadmin will search for (uid=dsmith)
|
||||
and log in as that user. Leave blank or specify 'dn' to use full DN for logging in. Note also that if your
|
||||
LDAP server requires you to login to perform searches, you can enter the DN to use when searching in 'login_dn'
|
||||
and 'login_pass' above. You may also specify 'string', in which case you can provide a string to use for
|
||||
logging users in. See 'login_string' directly below. */
|
||||
// $ldapservers->SetValue($i,'login','attr','uid');
|
||||
|
||||
/* If you specified 'cookie' or 'session' as the auth_type above, and you specified 'string' for 'login_attr'
|
||||
above, you must provide a string here for logging users in. If, for example, I have a lot of user entries with
|
||||
DNs like "uid=dsmith,ou=People,dc=example,dc=com", then I can specify a string
|
||||
"uid=<username>,ou=People,dc=example,dc=com" and my users can login with their user names alone, ie: "dsmith"
|
||||
in this case. */
|
||||
// $ldapservers->SetValue($i,'login','string','uid=<username>,ou=People,dc=example,dc=com');
|
||||
|
||||
/* If 'login_attr' is used above such that phpLDAPadmin will search for your DN at login, you may restrict the
|
||||
search to a specific objectClass. E.g., set this to 'posixAccount' or 'inetOrgPerson', depending upon your setup. */
|
||||
// $ldapservers->SetValue($i,'login','class','');
|
||||
|
||||
/* Specify true If you want phpLDAPadmin to not display or permit any modification to the LDAP server. */
|
||||
// $ldapservers->SetValue($i,'server','read_only',false);
|
||||
|
||||
/* Specify false if you do not want phpLDAPadmin to draw the 'Create new' links in the tree viewer. */
|
||||
// $ldapservers->SetValue($i,'appearance','show_create',true);
|
||||
|
||||
/* This feature allows phpLDAPadmin to automatically determine the next available uidNumber for a new entry. */
|
||||
// $ldapservers->SetValue($i,'auto_number','enable',true);
|
||||
|
||||
/* The mechanism to use when finding the next available uidNumber. Two possible values: 'uidpool' or 'search'.
|
||||
The 'uidpool' mechanism uses an existing uidPool entry in your LDAP server to blindly lookup the next available
|
||||
uidNumber. The 'search' mechanism searches for entries with a uidNumber value and finds the first available
|
||||
uidNumber (slower). */
|
||||
// $ldapservers->SetValue($i,'auto_number','mechanism','search');
|
||||
|
||||
/* The DN of the search base when the 'search' mechanism is used above. */
|
||||
// $ldapservers->SetValue($i,'auto_number','search_base','ou=People,dc=example,dc=com');
|
||||
|
||||
/* The minimum number to use when searching for the next available UID number (only when 'search' is used for
|
||||
auto_uid_number_mechanism' */
|
||||
// $ldapservers->SetValue($i,'auto_number','min','1000');
|
||||
|
||||
/* The DN of the uidPool entry when 'uidpool' mechanism is used above. */
|
||||
// $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user ID when searching for the uidnumber. The
|
||||
idea is, this user id would have full (readonly) access to uidnumber in your ldap directory (the logged in user
|
||||
may not), so that you can be guaranteed to get a unique uidnumber for your directory. */
|
||||
// $ldapservers->SetValue($i,'auto_number','dn','');
|
||||
|
||||
/* The password for the dn above. */
|
||||
// $ldapservers->SetValue($i,'auto_number','pass','');
|
||||
|
||||
/* Disable the anonymous login. */
|
||||
// $ldapservers->SetValue($i,'login','anon_bind',true);
|
||||
|
||||
/* Use customized page with prefix when available. */
|
||||
// $ldapservers->SetValue($i,'custom','pages_prefix','custom_');
|
||||
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user when testing for unique attributes (as set
|
||||
in unique_attrs array). If you want to enforce unique attributes, than this id should have full (readonly) access
|
||||
to the attributes in question (the logged in user may not have enough access) */
|
||||
// $ldapservers->SetValue($i,'unique_attrs','dn','');
|
||||
|
||||
/* The password for the dn above */
|
||||
// $ldapservers->SetValue($i,'unique_attrs','pass','');
|
||||
|
||||
/* If you set this, then only these DNs are allowed to log in. This array can contain individual users, groups or
|
||||
ldap search filter(s). Keep in mind that the user has not authenticated yet, so this will be an anonymous search
|
||||
to the LDAP server, so make your ACLs allow these searches to return results! */
|
||||
// $ldapservers->SetValue($i,'login','allowed_dns',array(
|
||||
// 'uid=stran,ou=People,dc=example,dc=com',
|
||||
// '(&(gidNumber=811)(objectClass=groupOfNames))',
|
||||
// '(|(uidNumber=200)(uidNumber=201))',
|
||||
// 'cn=callcenter,ou=Group,dc=example,dc=com'));
|
||||
|
||||
/* Set this if you dont want this LDAP server to show in the tree */
|
||||
// $ldapservers->SetValue($i,'appearance','visible',true);
|
||||
|
||||
/* This is the time out value in minutes for the server. After as many minutes of inactivity you will be
|
||||
automatically logged out. If not set, the default value will be ( session_cache_expire()-1 ) */
|
||||
// $ldapservers->SetValue($i,'login','timeout',30);
|
||||
|
||||
/* Set this if you want phpldapadmin to perform rename operation on entry which has children. Certain servers are known
|
||||
to allow it, certain are not */
|
||||
// $ldapservers->SetValue($i,'server','branch_rename',false);
|
||||
|
||||
/* If you want to configure additional LDAP servers, do so below. */
|
||||
|
||||
$i++;
|
||||
$ldapservers->SetValue($i,'server','name','LDAP Server');
|
||||
$ldapservers->SetValue($i,'server','host','127.0.0.1');
|
||||
$ldapservers->SetValue($i,'server','port','389');
|
||||
$ldapservers->SetValue($i,'server','base',array(''));
|
||||
$ldapservers->SetValue($i,'server','auth_type','cookie');
|
||||
$ldapservers->SetValue($i,'login','dn','');
|
||||
$ldapservers->SetValue($i,'login','pass','');
|
||||
$ldapservers->SetValue($i,'server','tls',false);
|
||||
$ldapservers->SetValue($i,'server','low_bandwidth',false);
|
||||
$ldapservers->SetValue($i,'appearance','password_hash','md5');
|
||||
$ldapservers->SetValue($i,'login','attr','uid');
|
||||
$ldapservers->SetValue($i,'login','string','');
|
||||
$ldapservers->SetValue($i,'login','class','');
|
||||
$ldapservers->SetValue($i,'server','read_only',false);
|
||||
$ldapservers->SetValue($i,'appearance','show_create',true);
|
||||
$ldapservers->SetValue($i,'auto_number','enable',true);
|
||||
$ldapservers->SetValue($i,'auto_number','mechanism','search');
|
||||
$ldapservers->SetValue($i,'auto_number','search_base','');
|
||||
$ldapservers->SetValue($i,'auto_number','min','1000');
|
||||
$ldapservers->SetValue($i,'auto_number','dn','');
|
||||
$ldapservers->SetValue($i,'auto_number','pass','');
|
||||
$ldapservers->SetValue($i,'login','anon_bind',true);
|
||||
$ldapservers->SetValue($i,'custom','pages_prefix','custom_');
|
||||
$ldapservers->SetValue($i,'unique_attrs','dn','');
|
||||
$ldapservers->SetValue($i,'unique_attrs','pass','');
|
||||
$ldapservers->SetValue($i,'appearance','visible',false);
|
||||
|
||||
/* If you want to configure more LDAP servers, copy and paste the above (including the "$i++;")
|
||||
Dont forget to change 'visible' to true! */
|
||||
|
||||
/** **/
|
||||
/** User-friendly attribute translation **/
|
||||
/** **/
|
||||
|
||||
/* Use this array to map attribute names to user friendly names. For example, if you
|
||||
don't want to see "facsimileTelephoneNumber" but rather "Fax". */
|
||||
|
||||
$friendly_attrs = array();
|
||||
|
||||
$friendly_attrs[ 'facsimileTelephoneNumber' ] = 'Fax';
|
||||
$friendly_attrs[ 'telephoneNumber' ] = 'Phone';
|
||||
|
||||
/** **/
|
||||
/** Support for attrs display order **/
|
||||
/** **/
|
||||
|
||||
/* Use this array if you want to have your attributes displayed in a specific order.
|
||||
You can use default attribute names or their fridenly names.
|
||||
For example, "sn" will be displayed right after "givenName". All the other attributes
|
||||
that are not specified in this array will be displayed after in alphabetical order. */
|
||||
|
||||
// $attrs_display_order = array(
|
||||
// "givenName",
|
||||
// "sn",
|
||||
// "cn",
|
||||
// "displayName",
|
||||
// "uid",
|
||||
// "uidNumber",
|
||||
// "gidNumber",
|
||||
// "homeDirectory",
|
||||
// "mail",
|
||||
// "userPassword"
|
||||
// );
|
||||
|
||||
/** **/
|
||||
/** Hidden attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want to hide certain attributes from being displayed in the editor screen
|
||||
Do this by adding the desired attributes to this list (and uncomment it). This
|
||||
only affects the editor screen. Attributes will still be visible in the schema
|
||||
browser and elsewhere. An example is provided below:
|
||||
NOTE: The user must be able to read the hidden_except_dn entry to be excluded. */
|
||||
|
||||
//$hidden_attrs = array( 'jpegPhoto', 'objectClass' );
|
||||
//$hidden_except_dn = "cn=PLA UnHide,ou=Groups,c=AU";
|
||||
|
||||
/* Hidden attributes in read-only mode. If undefined, it will be equal to $hidden_attrs. */
|
||||
// $hidden_attrs_ro = array( 'objectClass','shadowWarning', 'shadowLastChange', 'shadowMax',
|
||||
// 'shadowFlag', 'shadowInactive', 'shadowMin', 'shadowExpire');
|
||||
|
||||
/** **/
|
||||
/** Read-only attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want to phpLDAPadmin to display certain attributes as read only, meaning
|
||||
that users will not be presented a form for modifying those attributes, and they
|
||||
will not be allowed to be modified on the "back-end" either. You may configure
|
||||
this list here:
|
||||
NOTE: The user must be able to read the read_only_except_dn entry to be excluded. */
|
||||
|
||||
//$read_only_attrs = array( 'objectClass' );
|
||||
//$read_only_except_dn = "cn=PLA ReadWrite,ou=Groups,c=AU";
|
||||
|
||||
/* An example of how to specify multiple read-only attributes: */
|
||||
// $read_only_attrs = array( 'jpegPhoto', 'objectClass', 'someAttribute' );
|
||||
|
||||
/** **/
|
||||
/** Unique attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want phpLDAPadmin to enforce some attributes to have unique values (ie:
|
||||
not belong to other entries in your tree. This (together with "unique_attrs_dn"
|
||||
and "unique_attrs_dn_pass" option will not let updates to occur with other attributes
|
||||
have the same value.
|
||||
NOTE: Currently the unique_attrs is NOT enforced when copying a dn. (Need to present a user with
|
||||
the option of changing the unique attributes. */
|
||||
//$unique_attrs = array('uid','uidNumber','mail');
|
||||
|
||||
/** **/
|
||||
/** Predefined Queries (canned views) **/
|
||||
/** **/
|
||||
|
||||
/* To make searching easier, you may setup predefined queries below: */
|
||||
$q=0;
|
||||
$queries = array();
|
||||
|
||||
/* The name that will appear in the simple search form */
|
||||
$queries[$q]['name'] = 'User List';
|
||||
|
||||
/* The base to search on */
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
|
||||
/* The search scope (sub, base, one) */
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
|
||||
/* The LDAP filter to use */
|
||||
$queries[$q]['filter'] = '(&(objectClass=posixAccount)(uid=*))';
|
||||
|
||||
/* The attributes to return */
|
||||
$queries[$q]['attributes'] = 'cn, uid, homeDirectory';
|
||||
|
||||
/* If you want to configure more pre-defined queries, copy and paste the above (including the "$q++;") */
|
||||
$q++;
|
||||
$queries[$q]['name'] = 'Samba Users';
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
$queries[$q]['filter'] = '(&(|(objectClass=sambaAccount)(objectClass=sambaSamAccount))(objectClass=posixAccount)(!(uid=*$)))';
|
||||
$queries[$q]['attributes'] = 'uid, smbHome, uidNumber';
|
||||
|
||||
$q++;
|
||||
$queries[$q]['name'] = 'Samba Computers';
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
$queries[$q]['filter'] = '(&(objectClass=sambaAccount)(uid=*$))';
|
||||
$queries[$q]['attributes'] = 'uid, homeDirectory';
|
||||
|
||||
/** **/
|
||||
/** Date type attributes **/
|
||||
/** **/
|
||||
/* If you wish to use the jscalendar popup to select a date graphically,
|
||||
define this array of date type attributes.
|
||||
Modify the file htdocs/js/date_selector.js to set up the calendar format.
|
||||
The default format is:
|
||||
ifFormat : '%m/%e/%Y', // format of the input field
|
||||
showsTime : false, // will display a time selector
|
||||
singleClick : false, // double-click mode
|
||||
align : 'BR', // alignement
|
||||
step : 0 // show all years in drop-down boxes
|
||||
*/
|
||||
?>
|
183
copy.php
@@ -1,183 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/copy.php,v 1.22 2004/04/23 12:21:53 uugdave Exp $
|
||||
|
||||
|
||||
/*
|
||||
* copy.php
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* Vars that come in as POST vars
|
||||
* - source_dn (rawurlencoded)
|
||||
* - new_dn (form element)
|
||||
* - server_id
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$source_dn = $_POST['old_dn'];
|
||||
$dest_dn = $_POST['new_dn'];
|
||||
$encoded_dn = rawurlencode( $source_dn );
|
||||
$source_server_id = $_POST['server_id'];
|
||||
$dest_server_id = $_POST['dest_server_id'];
|
||||
$do_recursive = ( isset( $_POST['recursive'] ) && $_POST['recursive'] == 'on' ) ? true : false;
|
||||
|
||||
if( is_server_read_only( $dest_server_id ) )
|
||||
pla_error( $lang['copy_server_read_only'] );
|
||||
|
||||
check_server_id( $source_server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $source_server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
check_server_id( $dest_server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $dest_server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
include 'header.php';
|
||||
|
||||
/* Error checking */
|
||||
if( 0 == strlen( trim( $dest_dn ) ) )
|
||||
pla_error( $lang['copy_dest_dn_blank'] );
|
||||
if( pla_compare_dns( $source_dn,$dest_dn ) == 0 && $source_server_id == $dest_server_id )
|
||||
pla_error( $lang['copy_source_dest_dn_same'] );
|
||||
if( dn_exists( $dest_server_id, $dest_dn ) )
|
||||
pla_error( sprintf( $lang['copy_dest_already_exists'], pretty_print_dn( $dest_dn ) ) );
|
||||
if( ! dn_exists( $dest_server_id, get_container( $dest_dn ) ) )
|
||||
pla_error( sprintf( $lang['copy_dest_container_does_not_exist'], pretty_print_dn( get_container($dest_dn) ) ) );
|
||||
|
||||
if( $do_recursive ) {
|
||||
$filter = isset( $_POST['filter'] ) ? $_POST['filter'] : '(objectClass=*)';
|
||||
// build a tree similar to that of the tree browser to give to r_copy_dn
|
||||
$snapshot_tree = array();
|
||||
echo "<body>\n";
|
||||
echo "<h3 class=\"title\">". $lang['copy_copying'] . htmlspecialchars( $source_dn ) . "</h3>\n";
|
||||
echo "<h3 class=\"subtitle\">" . $lang['copy_recursive_copy_progress'] ."</h3>\n";
|
||||
echo "<br /><br />";
|
||||
echo "<small>\n";
|
||||
echo $lang['copy_building_snapshot'];
|
||||
flush();
|
||||
build_tree( $source_server_id, $source_dn, $snapshot_tree, $filter );
|
||||
echo " <span style=\"color:green\">" . $lang['success'] . "</span><br />\n";
|
||||
flush();
|
||||
|
||||
// prevent script from bailing early on a long delete
|
||||
@set_time_limit( 0 );
|
||||
|
||||
$copy_result = r_copy_dn( $source_server_id, $dest_server_id, $snapshot_tree, $source_dn, $dest_dn );
|
||||
echo "</small>\n";
|
||||
} else {
|
||||
$copy_result = copy_dn( $source_server_id, $source_dn, $dest_server_id, $dest_dn );
|
||||
}
|
||||
|
||||
if( $copy_result )
|
||||
{
|
||||
$edit_url="edit.php?server_id=$dest_server_id&dn=" . rawurlencode( $dest_dn );
|
||||
$new_rdn = get_rdn( $dest_dn );
|
||||
$container = get_container( $dest_dn );
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) )
|
||||
{
|
||||
// do we not have a tree and tree icons yet? Build a new ones.
|
||||
initialize_session_tree();
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
if( isset( $tree[$dest_server_id][$container] ) )
|
||||
{
|
||||
$tree[$dest_server_id][$container][] = $dest_dn;
|
||||
sort( $tree[ $dest_server_id ][ $container ] );
|
||||
$tree_icons[$dest_server_id][$dest_dn] = get_icon( $dest_server_id, $dest_dn );
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
<br />
|
||||
<center>
|
||||
<?php echo $lang['copy_successful_like_to']. "<a href=\"$edit_url\">" . $lang['copy_view_new_entry'] ."</a>?"?>
|
||||
</center>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
function r_copy_dn( $source_server_id, $dest_server_id, $tree, $root_dn, $dest_dn )
|
||||
{
|
||||
global $lang;
|
||||
echo "<nobr>". $lang['copy_copying'] . htmlspecialchars( $root_dn ) . "...";
|
||||
flush();
|
||||
$copy_result = copy_dn( $source_server_id, $root_dn, $dest_server_id, $dest_dn );
|
||||
|
||||
if( ! $copy_result ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
echo "<span style=\"color:green\">".$lang['success']."</span></nobr><br />\n";
|
||||
flush();
|
||||
|
||||
$children = isset( $tree[ $root_dn ] ) ? $tree[ $root_dn ] : null;
|
||||
if( is_array( $children ) && count( $children ) > 0 )
|
||||
{
|
||||
foreach( $children as $child_dn ) {
|
||||
$child_rdn = get_rdn( $child_dn );
|
||||
$new_dest_dn = $child_rdn . ',' . $dest_dn;
|
||||
r_copy_dn( $source_server_id, $dest_server_id, $tree, $child_dn, $new_dest_dn );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function copy_dn( $source_server_id, $source_dn, $dest_server_id, $dest_dn )
|
||||
{
|
||||
global $ds, $lang;
|
||||
$ds = pla_ldap_connect( $dest_server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$attrs = get_object_attrs( $source_server_id, $source_dn );
|
||||
$new_entry = $attrs;
|
||||
// modify the prefix-value (ie "bob" in cn=bob) to match the destination DN's value.
|
||||
$rdn_attr = substr( $dest_dn, 0, strpos( $dest_dn, '=' ) );
|
||||
$rdn_value = get_rdn( $dest_dn );
|
||||
$rdn_value = substr( $rdn_value, strpos( $rdn_value, '=' ) + 1 );
|
||||
$new_entry[ $rdn_attr ] = $rdn_value;
|
||||
// don't need a dn attribute in the new entry
|
||||
unset( $new_entry['dn'] );
|
||||
|
||||
// Check the user-defined custom call back first
|
||||
if( true === preEntryCreate( $dest_server_id, $dest_dn, $new_entry ) ) {
|
||||
$add_result = @ldap_add( $ds, $dest_dn, $new_entry );
|
||||
if( ! $add_result ) {
|
||||
postEntryCreate( $dest_server_id, $dest_dn, $new_entry );
|
||||
echo "</small><br /><br />";
|
||||
pla_error( $lang['copy_failed'] . $dest_dn, ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
}
|
||||
|
||||
return $add_result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function build_tree( $source_server_id, $root_dn, &$tree, $filter='(objectClass=*)' )
|
||||
{
|
||||
$children = get_container_contents( $source_server_id, $root_dn, 0, $filter );
|
||||
if( is_array( $children ) && count( $children ) > 0 )
|
||||
{
|
||||
$tree[ $root_dn ] = $children;
|
||||
foreach( $children as $child_dn )
|
||||
build_tree( $source_server_id, $child_dn, $tree, $filter );
|
||||
}
|
||||
}
|
135
create.php
@@ -1,135 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/create.php,v 1.21 2004/05/11 12:23:08 uugdave Exp $
|
||||
|
||||
|
||||
/*
|
||||
* create.php
|
||||
* Creates a new object.
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
* - new_dn
|
||||
* - attrs (an array of attributes)
|
||||
* - vals (an array of values for the above attrs)
|
||||
* - required_attrs (an array with indices being the attributes,
|
||||
* and the values being their respective values)
|
||||
* - object_classes (rawurlencoded, and serialized array of objectClasses)
|
||||
* - server_id
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$new_dn = isset( $_POST['new_dn'] ) ? $_POST['new_dn'] : null;
|
||||
$encoded_dn = rawurlencode( $new_dn );
|
||||
$server_id = $_POST['server_id'];
|
||||
$vals = $_POST['vals'];
|
||||
$attrs = $_POST['attrs'];
|
||||
$required_attrs = isset( $_POST['required_attrs'] ) ? $_POST['required_attrs'] : false;
|
||||
$object_classes = unserialize( rawurldecode( $_POST['object_classes'] ) );
|
||||
$container = get_container( $new_dn );
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
// build the new entry
|
||||
$new_entry = array();
|
||||
if( isset( $required_attrs ) && is_array( $required_attrs ) ) {
|
||||
foreach( $required_attrs as $attr => $val ) {
|
||||
if( $val == '' )
|
||||
pla_error( sprintf( $lang['create_required_attribute'], htmlspecialchars( $attr ) ) );
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
if( isset( $attrs ) && is_array( $attrs ) ) {
|
||||
foreach( $attrs as $i => $attr ) {
|
||||
if( is_attr_binary( $server_id, $attr ) ) {
|
||||
if( isset( $_FILES['vals']['name'][$i] ) && $_FILES['vals']['name'][$i] != '' ) {
|
||||
// read in the data from the file
|
||||
$file = $_FILES['vals']['tmp_name'][$i];
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_data = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
$val = $binary_data;
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
} else {
|
||||
$val = isset( $vals[$i] ) ? $vals[$i] : '';
|
||||
if( '' !== trim($val) )
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$new_entry['objectClass'] = $object_classes;
|
||||
if( ! in_array( 'top', $new_entry['objectClass'] ) )
|
||||
$new_entry['objectClass'][] = 'top';
|
||||
|
||||
foreach( $new_entry as $attr => $vals )
|
||||
if( ! is_attr_binary( $server_id, $attr ) )
|
||||
if( is_array( $vals ) )
|
||||
foreach( $vals as $i => $v )
|
||||
$new_entry[ $attr ][ $i ] = $v;
|
||||
else
|
||||
$new_entry[ $attr ] = $vals;
|
||||
|
||||
//echo "<pre>"; var_dump( $new_dn );print_r( $new_entry ); echo "</pre>";
|
||||
|
||||
$ds = pla_ldap_connect( $server_id );
|
||||
|
||||
// Check the user-defined custom call back first
|
||||
if( true === preEntryCreate( $server_id, $new_dn, $new_entry ) )
|
||||
$add_result = @ldap_add( $ds, $new_dn, $new_entry );
|
||||
else
|
||||
exit;
|
||||
if( $add_result )
|
||||
{
|
||||
postEntryCreate( $server_id, $new_dn, $new_entry );
|
||||
$edit_url="edit.php?server_id=$server_id&dn=" . rawurlencode( $new_dn );
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) )
|
||||
{
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if( isset( $tree[$server_id][$container] ) ) {
|
||||
$tree[$server_id][$container][] = $new_dn;
|
||||
sort( $tree[$server_id][$container] );
|
||||
$tree_icons[$server_id][$new_dn] = get_icon( $server_id, $new_dn );
|
||||
}
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<?php if( isset( $tree[$server_id][$container] ) ) { ?>
|
||||
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
location.href='<?php echo $edit_url; ?>';
|
||||
</script>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<meta http-equiv="refresh" content="0; url=<?php echo $edit_url; ?>" />
|
||||
</head>
|
||||
<body>
|
||||
<?php echo $lang['redirecting'] ?> <a href="<?php echo $edit_url; ?>"><?php echo $lang['here']?></a>.
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
pla_error( $lang['create_could_not_add'], ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
}
|
||||
|
||||
?>
|
102
create_form.php
@@ -1,102 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/create_form.php,v 1.13 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* create_form.php
|
||||
* The menu where the user chooses an RDN, Container, and Template for creating a new entry.
|
||||
* After submitting this form, the user is taken to their chosen Template handler.
|
||||
*
|
||||
* Variables that come in as GET vars
|
||||
* - server_id (optional)
|
||||
* - container (rawurlencoded) (optional)
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
$server_id = $_REQUEST['server_id'];
|
||||
$step = isset( $_REQUEST['step'] ) ? $_REQUEST['step'] : 1; // defaults to 1
|
||||
$container = $_REQUEST['container'];
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id_underline'] . htmlspecialchars( $server_id ) );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
$server_name = $servers[$server_id]['name'];
|
||||
|
||||
// build the server drop-down html
|
||||
$server_menu_html = '<select name="server_id">';
|
||||
$js_dn_list = '';
|
||||
foreach( $servers as $id => $server ) {
|
||||
if( $server['host'] ) {
|
||||
$server_menu_html .= '<option value="'.$id.'"' . ( $id==$server_id? ' selected' : '' ) . '>';
|
||||
$server_menu_html .= $server['name'] . '</option>';
|
||||
}
|
||||
}
|
||||
$server_menu_html .= '</select>';
|
||||
|
||||
include 'header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['createf_choose_temp']?></h3>
|
||||
<center><h3><?php echo $lang['createf_select_temp']?></h3></center>
|
||||
<form action="creation_template.php" method="post">
|
||||
<input type="hidden" name="container" value="<?php echo htmlspecialchars( $container ); ?>" />
|
||||
<table class="create">
|
||||
<tr>
|
||||
<td class="heading"><?php echo $lang['server']; ?>:</td>
|
||||
<td><?php echo $server_menu_html; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="heading"><?php echo $lang['template']; ?>:</td>
|
||||
<td>
|
||||
<table class="templates">
|
||||
<?php
|
||||
foreach( $templates as $name => $template ) {
|
||||
// Check and see if this template should be shown in the list
|
||||
$isValid = false;
|
||||
if (isset($template['regexp'])) {
|
||||
if (@preg_match("/".$template['regexp']."/i", $container)) {
|
||||
$isValid = true;
|
||||
}
|
||||
} else {
|
||||
$isValid = true;
|
||||
}
|
||||
|
||||
if ($isValid) {
|
||||
?>
|
||||
<tr>
|
||||
<td><input type="radio"
|
||||
name="template"
|
||||
value="<?php echo htmlspecialchars($name);?>"
|
||||
id="<?php echo htmlspecialchars($name); ?>"
|
||||
<?php if( 0 == strcasecmp( 'Custom', $name ) ) { ?>
|
||||
checked
|
||||
<?php } ?>
|
||||
/></td>
|
||||
<td class="icon"><label for="<?php echo htmlspecialchars($name);?>"><img src="<?php echo $template['icon']; ?>" /></label></td>
|
||||
<td><label for="<?php echo htmlspecialchars($name);?>"><?php echo htmlspecialchars( $template['desc'] ); ?></label></td>
|
||||
</tr>
|
||||
<?php
|
||||
} // end if
|
||||
|
||||
} // end foreach ?>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><center><input type="submit" name="submit" value="<?php echo $lang['proceed_gt']?>" /></center></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/creation_template.php,v 1.11 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
|
||||
/* file: creation_template.php
|
||||
* This file simply acts as a plugin grabber for the creator templates in
|
||||
* the directory templates/creation/
|
||||
*
|
||||
* Expected POST vars:
|
||||
* server_id
|
||||
* template
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
isset( $_POST['template'] ) or pla_error( $lang['must_choose_template'] );
|
||||
$template = $_POST['template'];
|
||||
isset( $templates[$template] ) or pla_error( sprintf( $lang['invalid_template'], htmlspecialchars( $template ) ) );
|
||||
$template = isset( $templates[$template] ) ? $templates[$template] : null;
|
||||
$server_id = $_POST['server_id'];
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$server_name = $servers[ $server_id ][ 'name' ];
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
include 'header.php';
|
||||
|
||||
?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['ctemplate_on_server']?> '<?php echo htmlspecialchars( $server_name ); ?>', <?php echo $lang['using_template']?> '<?php echo htmlspecialchars( $template['desc'] ); ?>'</h3>
|
||||
|
||||
<?php
|
||||
|
||||
if( ! isset( $_POST['template'] ) )
|
||||
pla_error( $lang['ctemplate_no_template'] );
|
||||
|
||||
$handler = 'templates/creation/' . $template['handler'];
|
||||
$handler = realpath( $handler );
|
||||
if( file_exists( $handler ) )
|
||||
include $handler;
|
||||
else
|
||||
pla_error( $lang['ctemplate_config_handler'] . " <b>" . htmlspecialchars( $template['handler'] ) .
|
||||
"</b> " . $lang['ctemplate_handler_does_not_exist']);
|
||||
|
||||
|
84
delete.php
@@ -1,84 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete.php,v 1.16 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* delete.php
|
||||
* Deletes a DN and presents a "job's done" message.
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$dn = $_POST['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_POST['server_id'];
|
||||
|
||||
if( $dn === null )
|
||||
pla_error( $lang['you_must_specify_a_dn'] );
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
dn_exists( $server_id, $dn ) or pla_error( sprintf( $lang['no_such_entry'], '<b>' . pretty_print_dn( $dn ) . '</b>' ) );
|
||||
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
|
||||
// Check the user-defined custom callback first.
|
||||
if( true === preEntryDelete( $server_id, $dn ) ) {
|
||||
$del_result = @ldap_delete( $ds, $dn );
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
|
||||
if( $del_result )
|
||||
{
|
||||
// Custom callback
|
||||
postEntryDelete( $server_id, $dn );
|
||||
|
||||
// kill the DN from the tree browser session variable and
|
||||
// refresh the tree viewer frame (left_frame)
|
||||
if( array_key_exists( 'tree', $_SESSION ) )
|
||||
{
|
||||
$tree = $_SESSION['tree'];
|
||||
if( isset( $tree[$server_id] ) && is_array( $tree[$server_id] ) ) {
|
||||
|
||||
// does it have children? (it shouldn't, but hey, you never know)
|
||||
if( isset( $tree[$server_id][$dn] ) )
|
||||
unset( $tree[$server_id][$dn] );
|
||||
|
||||
// search and destroy
|
||||
foreach( $tree[$server_id] as $tree_dn => $subtree )
|
||||
foreach( $subtree as $key => $sub_tree_dn )
|
||||
if( 0 == strcasecmp( $sub_tree_dn, $dn ) )
|
||||
unset( $tree[$server_id][$tree_dn][$key] );
|
||||
$_SESSION['tree'] = $tree;
|
||||
}
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
include 'header.php';
|
||||
|
||||
?>
|
||||
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<center><?php echo sprintf( $lang['entry_deleted_successfully'], '<b>' .pretty_print_dn($dn) . '</b>' ); ?></center>
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
} else {
|
||||
pla_error( sprintf( $lang['could_not_delete_entry'], '<b>' . pretty_print_dn( $dn ) . '</b>' ),
|
||||
ldap_error( $ds ),
|
||||
ldap_errno( $ds ) );
|
||||
}
|
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete_attr.php,v 1.6 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* delete_attr.php
|
||||
* Deletes an attribute from an entry with NO confirmation.
|
||||
*
|
||||
* On success, redirect to edit.php
|
||||
* On failure, echo an error.
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$server_id = $_POST['server_id'];
|
||||
|
||||
$dn = $_POST['dn'] ;
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$attr = $_POST['attr'];
|
||||
|
||||
if( is_attr_read_only( $attr ) )
|
||||
pla_error( sprintf( $lang['attr_is_read_only'], htmlspecialchars( $attr ) ) );
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
if( ! $attr ) pla_error( $lang['no_attr_specified'] );
|
||||
if( ! $dn ) pla_error( $lang['no_dn_specified'] );
|
||||
|
||||
$update_array = array();
|
||||
$update_array[$attr] = array();
|
||||
$ds = pla_ldap_connect( $server_id );
|
||||
$res = @ldap_modify( $ds, $dn, $update_array );
|
||||
if( $res )
|
||||
{
|
||||
$redirect_url = "edit.php?server_id=$server_id&dn=$encoded_dn";
|
||||
foreach( $update_array as $attr => $junk )
|
||||
$redirect_url .= "&modified_attrs[]=$attr";
|
||||
header( "Location: $redirect_url" );
|
||||
}
|
||||
else
|
||||
{
|
||||
pla_error( $lang['could_not_perform_ldap_modify'], ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
}
|
||||
|
||||
?>
|
151
delete_form.php
@@ -1,151 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete_form.php,v 1.12 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* delete_form.php
|
||||
* Displays a last chance confirmation form to delete a dn.
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
$rdn = pla_explode_dn( $dn );
|
||||
$rdn = $rdn[0];
|
||||
$server_name = $servers[$server_id]['name'];
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$children = get_container_contents( $server_id, $dn );
|
||||
$has_children = count($children)>0 ? true : false;
|
||||
|
||||
include 'header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo sprintf( $lang['delete_dn'], htmlspecialchars( $rdn ) ); ?></b></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $server_name; ?></b> <?php echo $lang['distinguished_name']; ?>: <b><?php echo htmlspecialchars( ( $dn ) ); ?></b></h3>
|
||||
|
||||
<?php if( $has_children ) { ?>
|
||||
|
||||
<center><b><?php echo $lang['permanently_delete_children']; ?></b><br /><br />
|
||||
|
||||
<?php
|
||||
flush(); // so the user can get something on their screen while we figure out how many children this object has
|
||||
if( $has_children ) {
|
||||
// get the total number of child objects (whole sub-tree)
|
||||
$s = pla_ldap_search( $server_id, 'objectClass=*', $dn, array('dn'), 'sub' );
|
||||
$sub_tree_count = count( $s );
|
||||
}
|
||||
?>
|
||||
|
||||
<table class="delete_confirm">
|
||||
<td>
|
||||
|
||||
<p>
|
||||
<?php echo sprintf( $lang['entry_is_root_sub_tree'], $sub_tree_count ); ?>
|
||||
<small>(<a href="search.php?search=true&server_id=<?php echo $server_id; ?>&filter=<?php echo rawurlencode('objectClass=*'); ?>&base_dn=<?php echo $encoded_dn; ?>&form=advanced&scope=sub"><?php echo $lang['view_entries']; ?></a>)</small>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<?php echo sprintf( $lang['confirm_recursive_delete'], ($sub_tree_count-1) ); ?><br />
|
||||
<br />
|
||||
<small><?php echo $lang['confirm_recursive_delete_note']; ?></small>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<center>
|
||||
<form action="rdelete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" class="scary" value="<?php echo sprintf( $lang['delete_all_x_objects'], $sub_tree_count ); ?>" />
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</table>
|
||||
<?php flush(); ?>
|
||||
<br />
|
||||
<br />
|
||||
<?php echo $lang['list_of_entries_to_be_deleted']; ?><br />
|
||||
<select size="<?php echo min( 10, $sub_tree_count );?>" multiple disabled style="background:white; color:black;width:500px" >
|
||||
<?php $i=0; ?>
|
||||
<?php foreach( $s as $dn => $junk ) { ?>
|
||||
<?php $i++; ?>
|
||||
<option><?php echo $i; ?>. <?php echo htmlspecialchars( ( $dn ) ); ?></option>
|
||||
<?php } ?>
|
||||
|
||||
</select>
|
||||
|
||||
<br />
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<center>
|
||||
|
||||
<table class="delete_confirm">
|
||||
<td>
|
||||
|
||||
<?php echo $lang['sure_permanent_delete_object']; ?><br />
|
||||
<br />
|
||||
<nobr><acronym title="<?php echo $lang['distinguished_name']; ?>"><?php echo $lang['dn']; ?></acronym>: <b><?php echo pretty_print_dn( $dn ); ?></b><nobr><br />
|
||||
<nobr><?php echo $lang['server']; ?>: <b><?php echo htmlspecialchars($server_name); ?></b></nobr><br />
|
||||
<br />
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<center>
|
||||
<form action="delete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['delete']; ?>" class="scary" />
|
||||
</center>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</table>
|
||||
|
||||
</center>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
34
doc/CREDITS
@@ -1,8 +1,10 @@
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/CREDITS,v 1.14 2004/05/08 14:11:28 i18phpldapadmin Exp $
|
||||
* Project Creator:
|
||||
- David Smith
|
||||
|
||||
* Project Developers:
|
||||
|
||||
- David Smith Maintainer
|
||||
- Xavier Renard Import/Export
|
||||
- Deon George Maintainer
|
||||
- Xavier Renard Import/Export and Samba
|
||||
- Uwe Ebel I18n
|
||||
|
||||
* Patch writers:
|
||||
@@ -10,7 +12,7 @@ $Header: /cvsroot/phpldapadmin/phpldapadmin/doc/CREDITS,v 1.14 2004/05/08 14:11:
|
||||
- Bayu Irawan userPassword hash, html fixes, ldap_modify fixes
|
||||
- Uwe Ebel short_open_tags fix
|
||||
- Andrew Tipton SUP support in schema parser
|
||||
- Eigil Bjørgum UTF-8 support
|
||||
- Eigil Bjørgum UTF-8 support
|
||||
- Brandon Lederer DNS entry template
|
||||
Nathan Rotschafer
|
||||
- Steve Rigler Password hash patch
|
||||
@@ -22,26 +24,36 @@ $Header: /cvsroot/phpldapadmin/phpldapadmin/doc/CREDITS,v 1.14 2004/05/08 14:11:
|
||||
- Piotr Tarnowski i18n fixes
|
||||
- Deon George Auto-uidNumber enhancements and many fixes
|
||||
- Pierre Belanger Speed-ups to auto-uidNumber
|
||||
- Benjamin Drieu Syslog, Hooks and other fixes
|
||||
- Samuel Tran User login restriction
|
||||
- Daniel van Eeden Unicode, CSS fixes
|
||||
- Piotr Tarnowski More locatisation fixes
|
||||
- Tomas Kuliavas Improved password encoding functions
|
||||
- Alessandro De Zorzi Enhancement with the new template engine and others
|
||||
- Matt Harrington Fixes
|
||||
- Jonathan Thurman Add Multiple objectClasses
|
||||
- And many others, whose names are lost in the changelog. Thank you.
|
||||
|
||||
* Translators:
|
||||
|
||||
- Marius Reider, German
|
||||
- Marius Reider, German
|
||||
Uwe Ebel,
|
||||
Dieter Kluenter
|
||||
- Xavier Renard French
|
||||
- Dave Smith English ;)
|
||||
- Richard Lucassen Dutch
|
||||
- Andreu Sanchez Spanish and Catal<EFBFBD>
|
||||
- Andreu Sanchez Spanish and Català
|
||||
- Dmitry Gorpinenko, Russian
|
||||
Aleksey Soldatov
|
||||
- Unknown Italian
|
||||
- Alexandre Maciel Brasilian (Portuguese)
|
||||
Sergey Saukh
|
||||
- Unknown Italian, Tain, Simplified Chinese
|
||||
- Alexandre Maciel Portuguese (Brasilian)
|
||||
Elton Schroeder Fenner (CLeGi)
|
||||
- Piotr Tarnowski (DrFugazi) Polish
|
||||
- Gunnar Nystrom Swedish
|
||||
- VOROSBARANYI Zoltan, Hungarian
|
||||
SIPOS Agnes
|
||||
- Tadashi Jokagi (elf2000) Japanese
|
||||
|
||||
If you can help translate, please join the phpldapadmin-devel mailing list:
|
||||
https://lists.sourceforge.net/mailman/listinfo/phpldapadmin-devel
|
||||
|
||||
|
||||
|
||||
|
129
doc/ChangeLog
@@ -1,4 +1,131 @@
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/ChangeLog,v 1.15 2004/05/11 12:25:23 uugdave Exp $
|
||||
* Version 0.9.7, 2005-09-11
|
||||
|
||||
* Summary:
|
||||
- Now fully supporting PHP5 - this will be the last version developed on PHP4.
|
||||
- Revamped how you configure PLA - now using a config object and some checking,
|
||||
- Revamped how you define LDAP servers - extending the LDAPServer object and adding some checking.
|
||||
- Fixed all functions so that they now use the LDAPServer object.
|
||||
- Introduced the template engine and configuration by XML files. (The old templates are still in this
|
||||
version, unchanged from 0.9.6. They will be removed after this version is released.)
|
||||
- Changed dependancy checking to just index.php, so that common.php executes faster.
|
||||
- Minor improvements to compare.php
|
||||
- Much improved debug logging
|
||||
- Much improved caching
|
||||
- Improved LDAP server info display
|
||||
- Some code readability cleanup
|
||||
|
||||
- Add other fixes as per the ChangeLog (ChangeLogCVS.txt).
|
||||
|
||||
Thank you for everybody who has submitted fixes/enhancements/recommendations and feedback for this version.
|
||||
|
||||
* Version 0.9.6, 2005-04-03
|
||||
|
||||
* Summary:
|
||||
The main goals for this version was to close all the outstanding bugs and apply all the submitted patchs
|
||||
on sourceforge. All the sourceforge easy to do RFE's where also included.
|
||||
|
||||
* Notes:
|
||||
- Added support for mulpiple Base DN's
|
||||
- Added support to log for syslog (Benjamin Drieu)
|
||||
- Added hooks feature to replace custom functions (Benjamin Drieu)
|
||||
- Entry chooser now auto adds rdn entry for copy/move operations (wigi2)
|
||||
- Initial support for AD Schema Retrieval
|
||||
- Added login restriction (Samuel Tran)
|
||||
- Added support to move objects (aka Copy then Delete) (wigi2)
|
||||
- No longer show + next to objects that have no children in tree viewer (when hide_configuration_management=true)
|
||||
- Added date evaluation to shadow attributes (shadowAccount)
|
||||
- Added Enhancement to show attributes in a specifc order (Samuel Tran)
|
||||
- Added Server Info OID descriptions
|
||||
- Added new feature to compare two DNs
|
||||
- Binary SID to text SID feature for MSAD objectSid entries.
|
||||
- Added session timeout feature (Samuel Tran)
|
||||
|
||||
* New Languages:
|
||||
- Taiwan (Anonymous)
|
||||
- Simplfied Chinese (Anonymous)
|
||||
|
||||
* Changes:
|
||||
- LDAP server configuration is being moved into an Object LDAPServer, all future interactions should
|
||||
use this object class from now on.
|
||||
- Some more conversions of english static text into language files.
|
||||
- Some code cleanup, excess whitespace removal, etc...
|
||||
- Tags for phpdoc updated.
|
||||
- Added cvs header to files missing the header.
|
||||
- LDIF Import function improvements (Xavier Renard)
|
||||
- UniqueAttrs fix, now showing actual value (in multi value attribs) that breaches uniqueness
|
||||
- Fixed check_lang_files when register_globals=off
|
||||
- css fixes (Daniel van Eeden)
|
||||
- More locatisation fixes (Piotr Tarnowski)
|
||||
- Schema functions all use cached entries now by default
|
||||
- Improved password encoding functions (Tomas Kuliavas)
|
||||
- If auth_type = session, then dn and password is also blowfish encrypted
|
||||
- Prettied up the icon index (Dave Smith)
|
||||
- Make the rdn not editable in the default template.
|
||||
|
||||
* Fixes:
|
||||
- password_check when magic_quotes_gpc is on.
|
||||
- Misc fixes (Benjamin Drieu)
|
||||
- Fix searchs when searching for values with brackets
|
||||
- Unicode fixes (Daniel van Eeden)
|
||||
- View jpeg photo minor security fix (Dave Smith)
|
||||
- Check password link missing in read-only mode
|
||||
|
||||
* Sourceforge bug fixes:
|
||||
1117099 1117316 1120048 1150947 1152962 1153360 1055401 1158148 1161425
|
||||
|
||||
|
||||
* Version 0.9.5, 2004-12-17
|
||||
|
||||
* Notes:
|
||||
|
||||
This version adds substantial new features and several minor bug fixes as well as PHP5 support!
|
||||
|
||||
* Changes:
|
||||
|
||||
- Added PHP5 support using Zend1 compatibility options.
|
||||
- Users can now specify a format string for custom display of DNs in the tree viewer
|
||||
(see $tree_display_format in config.php.example)
|
||||
- If using http auth_type, DNs and passwords are now encrypted int he cookie using blowfish.
|
||||
- If base entry is missing, phpLDAPadmin will prompt you to create it and give you some
|
||||
sane default values to get started.
|
||||
- Added index file for viewing of all PLA icons (see phpldapadmin/images/index.php)
|
||||
- Added custom country flag icons for DNs in the form "c=us"
|
||||
- Added more custom icons (ipNetwork, Device, Room)
|
||||
- Made it easier to create the base entry of an empty tree.
|
||||
- Fixed bug related to predefined search queries with patch from Olivier Mounier
|
||||
- Added a template for mozillaOrgPerson
|
||||
- Improved error handling for non-existent or unreadable template files.
|
||||
- "Create new" now displays at the top *and* bottom of the tree viewer list if there are
|
||||
more than 10 entries in the container (make it easier for users by reducing scrolling)
|
||||
- Optimized several pages by closing the session early if not needed.
|
||||
- By request, reversed the order of first name / last name in the inetOrgPerson template.
|
||||
- Added a login_string feature for admins who have all their users in a single container,
|
||||
so they can specify a string like "uid=<username>,ou=People,dc=example,dc=com" instead
|
||||
of setting up the painful login_attr stuff.
|
||||
- Changed the delete button to be red (like phpMyAdmin) to make it more obvious.
|
||||
- Consolidated the links at the top of the tree viewer to make better use of real estate.
|
||||
- New logo!
|
||||
- Patch from Dimitre to fix unique attrs enforcement.
|
||||
- Templates can now redirect wherever they want using a hidden form input.
|
||||
- Added a "Home" button in the tree viewer to get back to the main PLA page if desired.
|
||||
- PLA now looks up the gidNumber to display group description and name in user accounst.
|
||||
- Improved the hint about structural objectClasses in the custom creation template
|
||||
- Added ability to purge caches (mostly just schema objects) and caches are auto-purged
|
||||
when the schema is viewed in the schema browser.
|
||||
- Changed the arrow icon next to objectClass values to be an information button.
|
||||
- Search results can be displayed in table format now.
|
||||
- Fixes to LDIF import.
|
||||
- Added support for exporting to VCard 2.1 format.
|
||||
- Lots of little session fixes.
|
||||
- Structural objectClasses are now shown in bold in the custom creation template.
|
||||
- Fixed lots of bugs, some big some minor:
|
||||
1025353 1037715 1029103 1026427 1025353 1020606
|
||||
1020376 1010576 1009410 1007281 1007132 1004042
|
||||
1002794 1001941 1000185 999605 999170 996842
|
||||
995362 995297 995296 994343 993875 992419
|
||||
991891 989219 984587 983375 981283 979395
|
||||
977598 974369 973520 973323 965165 964410
|
||||
962074 959950 958372 957284 954453
|
||||
|
||||
* Version 0.9.4b, 2004-05-11
|
||||
|
||||
|
@@ -1,26 +1,26 @@
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-es.txt,v 1.3 2004/03/19 20:22:54 i18phpldapadmin Exp $
|
||||
Estas instrucciones dejan por sentado que tienes una instalaci<EFBFBD>n
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-es.txt,v 1.4 2005/02/06 00:37:15 wurley Exp $
|
||||
Estas instrucciones dejan por sentado que tienes una instalación
|
||||
funcionando de:
|
||||
a. Servidor Web (Apache, IIS, etc).
|
||||
b. PHP 4.1.0 o mas nuevo (con soporte LDAP)
|
||||
|
||||
* Instalando phpLDAPadmin en 4 pasos muy simples:
|
||||
|
||||
1. Desempaqueta el archivo (si est<EFBFBD>s leyendo esto, ya lo has hecho).
|
||||
2. Pon el directorio resultante 'phpldapadmin' en alg<EFBFBD>n lugar de tu
|
||||
1. Desempaqueta el archivo (si estás leyendo esto, ya lo has hecho).
|
||||
2. Pon el directorio resultante 'phpldapadmin' en algún lugar de tu
|
||||
directorio web raiz.
|
||||
3. Copia 'config.php.example' a 'config.php' y ed<EFBFBD>talo para que se
|
||||
acomode a tu configuraci<EFBFBD>n y tu gusto.
|
||||
4. Entonces, con el navegador ve a la direcci<EFBFBD>n que contiene los archivos
|
||||
3. Copia 'config.php.example' a 'config.php' y edítalo para que se
|
||||
acomode a tu configuración y tu gusto.
|
||||
4. Entonces, con el navegador ve a la dirección que contiene los archivos
|
||||
del directorio phpldapadmin.
|
||||
|
||||
* Notas del navegador
|
||||
|
||||
phpLDAP se desarroll<EFBFBD> bajo Mozilla, y ser<EFBFBD> donde seguramente corra mejor.
|
||||
A<EFBFBD>n as<EFBFBD>, las pruebas se han hecho bajo Internet Explorer, y tendr<EFBFBD>a que funcionar
|
||||
bien tambi<EFBFBD>n. No se ha hecho ninguna prueba con Konqueror (o cualquier navegador
|
||||
phpLDAP se desarrolló bajo Mozilla, y será donde seguramente corra mejor.
|
||||
Aún así, las pruebas se han hecho bajo Internet Explorer, y tendría que funcionar
|
||||
bien también. No se ha hecho ninguna prueba con Konqueror (o cualquier navegador
|
||||
basado en kthml como Safari) o Opera. Si encuentras alguna incompatibilidad, por favor
|
||||
h<EFBFBD>znoslo saber.
|
||||
háznoslo saber.
|
||||
|
||||
* Contribuidores
|
||||
|
||||
@@ -36,21 +36,21 @@ funcionando de:
|
||||
- Bayu Irawan userPassword hash, arreglos html, arreglos ldap_modify
|
||||
- Uwe Ebel arreglo short_open_tags
|
||||
- Andrew Tipton soporte SUP en el parseador del esquema
|
||||
- Eigil Bj<EFBFBD>rgum soporte UTF-8
|
||||
- Eigil Bjørgum soporte UTF-8
|
||||
- Brandon Lederer plantilla de entrada de DNS
|
||||
Nathan Rotschafer
|
||||
- Steve Rigler Parche para Password hash
|
||||
- Chris Jackson Contrase<EFBFBD>as Blowfish y md5crypt
|
||||
- Chris Jackson Contraseñas Blowfish y md5crypt
|
||||
- Marius Rieder Parseador avanzado de esquema
|
||||
- Nick Burch Un mont<EFBFBD>n de arreglos de realpath()
|
||||
- Nick Burch Un montón de arreglos de realpath()
|
||||
|
||||
Traductores:
|
||||
|
||||
- Uwe Ebel Alem<EFBFBD>n
|
||||
- Xavier Renard Franc<EFBFBD>s
|
||||
- Dave Smith Ingl<EFBFBD>s ;)
|
||||
- Uwe Ebel Alemán
|
||||
- Xavier Renard Francés
|
||||
- Dave Smith Inglés ;)
|
||||
|
||||
Si puedes ayudar a traducir, por favor ap<EFBFBD>ntate a la lista de correo phpldapadmin:
|
||||
Si puedes ayudar a traducir, por favor apúntate a la lista de correo phpldapadmin:
|
||||
https://lists.sourceforge.net/mailman/listinfo/phpldapadmin-devel
|
||||
|
||||
|
||||
|
@@ -1,23 +1,23 @@
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-fr.txt,v 1.3 2004/03/19 20:22:54 i18phpldapadmin Exp $
|
||||
Les instructions suivantes supposent une installation en <EFBFBD>tat de marche de:
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/INSTALL-fr.txt,v 1.4 2005/02/06 00:37:15 wurley Exp $
|
||||
Les instructions suivantes supposent une installation en état de marche de:
|
||||
a. Un serveur web (Apache, IIS, etc).
|
||||
b. PHP 4.1.0 ou une version plus r<EFBFBD>cente (avec le support LDAP).
|
||||
b. PHP 4.1.0 ou une version plus récente (avec le support LDAP).
|
||||
|
||||
* Installer phpLDAPadmin en quatre <EFBFBD>tapes simples:
|
||||
* Installer phpLDAPadmin en quatre étapes simples:
|
||||
|
||||
1. D<EFBFBD>-tarrer l'archive (si vous lisez ceci, c'est que vous l'avez d<EFBFBD>j<EFBFBD> fait).
|
||||
2. Mettre le r<EFBFBD>pertoire 'phpldapadmin' ainsi obtenu quelque part sous
|
||||
1. Dé-tarrer l'archive (si vous lisez ceci, c'est que vous l'avez déjà fait).
|
||||
2. Mettre le répertoire 'phpldapadmin' ainsi obtenu quelque part sous
|
||||
la racine de votre serveur web.
|
||||
3. Copier 'config.php.example' vers 'config.php' et <EFBFBD>diter selon vos besoins.
|
||||
4. Ensuite, pointer votre navigateur vers le r<EFBFBD>pertoire phpldapadmin.
|
||||
3. Copier 'config.php.example' vers 'config.php' et éditer selon vos besoins.
|
||||
4. Ensuite, pointer votre navigateur vers le répertoire phpldapadmin.
|
||||
|
||||
* Notes sur les navigateurs
|
||||
|
||||
phpLDAPadmin a <EFBFBD>t<EFBFBD> developp<EFBFBD> avec Mozilla et fonctionnera vraisemblablement
|
||||
mieux avec celui-ci. Cependant, des tests ont <EFBFBD>t<EFBFBD> effectu<EFBFBD> avec Internet Explorer
|
||||
et cela devrait fonctionner <EFBFBD>galement. Aucun test n'a <EFBFBD>t<EFBFBD> r<EFBFBD>alis<EFBFBD> ni avec Konqueror
|
||||
(ou un navigateur bas<EFBFBD> sur khtml comme Safari par exemple) ni avec Opera. Si
|
||||
vous trouvez une incompatibilit<EFBFBD> avec votre navigateur, merci de la reporter.
|
||||
phpLDAPadmin a été developpé avec Mozilla et fonctionnera vraisemblablement
|
||||
mieux avec celui-ci. Cependant, des tests ont été effectué avec Internet Explorer
|
||||
et cela devrait fonctionner également. Aucun test n'a été réalisé ni avec Konqueror
|
||||
(ou un navigateur basé sur khtml comme Safari par exemple) ni avec Opera. Si
|
||||
vous trouvez une incompatibilité avec votre navigateur, merci de la reporter.
|
||||
|
||||
* Contributions:
|
||||
|
||||
@@ -25,7 +25,7 @@ Les instructions suivantes supposent une installation en
|
||||
|
||||
- David Smith Maintenance
|
||||
- Xavier Renard Responsable LDIF
|
||||
- Marius Rieder Responsable pour les sch<EFBFBD>ma LDAP
|
||||
- Marius Rieder Responsable pour les schéma LDAP
|
||||
- Nate Rotschafer Directeur des releases
|
||||
|
||||
Auteurs de patchs:
|
||||
@@ -33,25 +33,25 @@ Les instructions suivantes supposent une installation en
|
||||
- Bayu Irawan hachage pour le mot de passe utilisateur,
|
||||
corrections html, corrections pour ldap_modiy
|
||||
- Uwe Ebel Corrections pour short_open_tags
|
||||
- Andrew Tipton Support pour SUP dans le parseur de sch<EFBFBD>mas
|
||||
- Eigil Bj<EFBFBD>rgum Support pour UTF-8
|
||||
- Brandon Lederer Patron pour les entr<EFBFBD>es DNS
|
||||
- Andrew Tipton Support pour SUP dans le parseur de schémas
|
||||
- Eigil Bjørgum Support pour UTF-8
|
||||
- Brandon Lederer Patron pour les entrées DNS
|
||||
Nathan Rotschafer
|
||||
- Steve Rigler Correction pour les hachages des mots de passe
|
||||
- Chris Jackson Mots de passe Blowfish et md5crypt
|
||||
- Marius Rieder Am<EFBFBD>lioration du parseur de sch<EFBFBD>mas
|
||||
- Marius Rieder Amélioration du parseur de schémas
|
||||
- Nick Burch Corrections multiples pour realpath()
|
||||
|
||||
Traducteurs:
|
||||
|
||||
- Uwe Ebel & Marius Reider Allemand
|
||||
- Xavier Renard Fran<EFBFBD>ais
|
||||
- Xavier Renard Français
|
||||
- Dave Smith Anglais ;)
|
||||
- Richard Lucassen N<EFBFBD>erlandais
|
||||
- Richard Lucassen Néerlandais
|
||||
- Andreu Sanchez Espagnol et Catalan
|
||||
- Dmitry Gorpinenko Russe
|
||||
- Unknown Italien
|
||||
|
||||
Si vous pouvez aider <EFBFBD> traduire phpLDAPAdmin, veuillez s'il vous pla<EFBFBD>t vous abonner
|
||||
<EFBFBD> la liste de diffusion phpldapadmin-devel:
|
||||
Si vous pouvez aider à traduire phpLDAPAdmin, veuillez s'il vous plaît vous abonner
|
||||
à la liste de diffusion phpldapadmin-devel:
|
||||
https://lists.sourceforge.net/mailman/listinfo/phpldapadmin-devel
|
||||
|
@@ -1,103 +1,101 @@
|
||||
README-translation
|
||||
==================
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/README-translation.txt,v 1.2 2004/02/29 19:59:06 i18phpldapadmin Exp $
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/README-translation.txt,v 1.3 2004/06/03 12:45:21 uugdave Exp $
|
||||
|
||||
This readme is for translators.
|
||||
phpLDAPadmin support the languages
|
||||
phpLDAPadmin currently supports the following languages:
|
||||
|
||||
* en, of course
|
||||
* de, german
|
||||
* es, spanish
|
||||
* fr, french
|
||||
* it, italien
|
||||
* nl, netherland
|
||||
* pl, polish
|
||||
* pt-br, portuguese (brazilian)
|
||||
* ru, russian
|
||||
* sv, swedish
|
||||
- en, of course
|
||||
- de, german
|
||||
- es, spanish
|
||||
- fr, french
|
||||
- it, italien
|
||||
- nl, netherland
|
||||
- pl, polish
|
||||
- pt-br, portuguese (brazilian)
|
||||
- ru, russian
|
||||
- sv, swedish
|
||||
|
||||
* Where are the files located?
|
||||
|
||||
Where are the files located?
|
||||
All files are unter
|
||||
All files are in the directory:
|
||||
|
||||
phpldapadmin/lang/
|
||||
|
||||
* How are the files named?
|
||||
|
||||
How are the files named?
|
||||
Every language is named by its local representation. For example English is "en" and
|
||||
British English is "en_GB" (though phpLDAPadmin does not have an "en_GB" translation).
|
||||
|
||||
Every language is named by its local representing. For example english en and
|
||||
british english by en_GB but here we use only en.
|
||||
|
||||
|
||||
Is the location phpldapadmin/lang/ used in the application?
|
||||
* Is the location phpldapadmin/lang/ used in the application?
|
||||
|
||||
No, there is a Makefile in phpldapadmin/lang/ that converts the
|
||||
native encoding of the language file to utf8 into the directory
|
||||
phpldapadmin/lang/recoded. For example the file
|
||||
phpldapadmin/lang/de.php is converted via the programm iconv to the
|
||||
the encoding utf8 to the file phpldapadmin/lang/recoded/de.php.
|
||||
|
||||
|
||||
Is there a rule for the form of the translation?
|
||||
* Is there a rule for the form of the translation?
|
||||
|
||||
* Yes, all translation is stored in an array called lang[].
|
||||
* The "mother" of all translation is english (en.php).
|
||||
* Use your native encoding like iso8859-1 for european
|
||||
or iso8859-2 for polish.
|
||||
* Every translation is in single quote "'"
|
||||
* Don't use html-code in the translation.
|
||||
* If something should be highlighted we use double quote
|
||||
'"'.
|
||||
Yes, all translation is stored in an array called lang[].
|
||||
The "mother" of all translation is english (en.php).
|
||||
Use your native encoding like iso8859-1 for european
|
||||
or iso8859-2 for polish.
|
||||
Every translated string is in single quotes "'"
|
||||
Don't use html-code in the translation.
|
||||
If you need to enclose text in quotes, use a double quote '"' (no escaping required).
|
||||
|
||||
Why shouldn't I use html-code?
|
||||
* Why shouldn't I use html-code?
|
||||
|
||||
* No problemens wich htmlspecialchars
|
||||
* No JavaScript problems
|
||||
* Open way for other targets like xml or other (only as a idea)
|
||||
* No problem with "wellformed" output (maybe)
|
||||
To avoid problemens wich htmlspecialchars (which coverts "<" to "<", for example).
|
||||
To avoid JavaScript problems.
|
||||
To keep the way open for other targets like xml.
|
||||
To keep the output well formed.
|
||||
|
||||
For example the ">" is then convert to "&gt;" that we don't
|
||||
want, so it is better to use ">". If we have a Char like "&" that is
|
||||
in the used functions convert to "&" what is correct.
|
||||
* How could I start?
|
||||
|
||||
How could I start?
|
||||
* First, the base for translation is the cvs-Version.
|
||||
Checkout the cvs-Version and start your translation.
|
||||
* Create a file that contains your translation.
|
||||
For me the easiest way was to copy the file phpldapadmin/lang/en.php
|
||||
to the phpldapadmin/lang/[new-langage].php
|
||||
That gives the way to put the "original" translation to the "end"
|
||||
as a comment. Look at the de.php and you know what I mean.
|
||||
* Modify the Makefile that your langugage is also convert.
|
||||
First, the base for translation is the CVS version.
|
||||
Checkout the CVS version and start your translation.
|
||||
Create a file that contains your translation.
|
||||
For me the easiest way was to copy the file phpldapadmin/lang/en.php
|
||||
to the phpldapadmin/lang/[new-langage].php
|
||||
That gives the way to put the original translation at the end
|
||||
as a comment. Look at the de.php and you can see what I mean.
|
||||
Add a target to Makefile so that your langugage is also converted.
|
||||
|
||||
How could I see how complete the translation is?
|
||||
The phpLDAPadmin contains the file phpldapadmin/check_lang_files.php
|
||||
Open it in your browser and you see how complete your translation is.
|
||||
* How could I verify that my translation is complete?
|
||||
|
||||
* extra entry: if entry is not in the en.php, maybe the value was
|
||||
changed in en.php or you type in a wrong key.
|
||||
* missing entry: the entry is missing in the translated langugage
|
||||
phpLDAPadmin contains the file phpldapadmin/check_lang_files.php
|
||||
Open it in your browser and it will tell you if your lang file has any
|
||||
omissions or extraneous strings.
|
||||
|
||||
- extra entries: if entry is not in the en.php, maybe the value was
|
||||
changed in en.php or you type in a wrong key.
|
||||
- missing entries: the entry is present in en.php but is missing in
|
||||
the translated langugage.
|
||||
|
||||
* What is zz.php and the zzz.php in the phpldapadmin/lang/ directory?
|
||||
|
||||
What is zz.php and the zzz.php in the phpldapadmin/lang/?
|
||||
Well that is not really a language. That is only for developers
|
||||
and translators.
|
||||
and translators to make sure that all strings are translated in the
|
||||
application.
|
||||
|
||||
The zz.php replace all characters in the lang[] to Z. That helps
|
||||
in finding hardcoding translation in the the source.
|
||||
|
||||
The ZZZ.php helps you to find the used "key".
|
||||
|
||||
How could I enable the zz and zzz language?
|
||||
Well, one is to hardcode it in the config.php file. That is not the
|
||||
* How could I enable the zz and zzz language?
|
||||
|
||||
Well, one is to set $language to 'zz' or 'zzz' in the config.php file. That is not the
|
||||
best way - but the way that always works.
|
||||
|
||||
Mozilla Users do like this:
|
||||
* from Menu
|
||||
Edit->Preferences
|
||||
Mozilla users do this:
|
||||
* Click Edit->Preferences
|
||||
* Option Navigator->Lanugages
|
||||
Klick the button "add" and type into "Other" the
|
||||
language "zz"
|
||||
* With Move up / Move down you can change your priority.
|
||||
* With the Button "OK" you can activate your choice.
|
||||
|
||||
Do the same if you want to activate/test your translation.
|
||||
Do the same if you want to activate/test your translation.
|
||||
|
56
doc/ROADMAP
@@ -1,56 +0,0 @@
|
||||
$Header: /cvsroot/phpldapadmin/phpldapadmin/doc/ROADMAP,v 1.19 2004/03/25 12:50:39 uugdave Exp $
|
||||
phpLDAPadmin roadmap
|
||||
|
||||
0.9.3 planned features:
|
||||
Bugfix release.
|
||||
This release will focus on fixing bugs, adding minor features, and improving stability.
|
||||
Samba 3.0 support in samba user and machine creation templates
|
||||
Move template config to a new config file: template_config.php (or something)
|
||||
|
||||
0.9.4 planned features:
|
||||
* Complete i18n. All strings localized.
|
||||
Modification templates:
|
||||
* gropOfNames (view full DNs and browse buttons)
|
||||
* groupOfUniqueNames (view full DNs and browse buttons)
|
||||
* http auth_type (a la phpMyAdmin)
|
||||
* read-only attributes (similar to hidden attributes) in config
|
||||
* Default mod template: Add a "browse" button for attributes that store DNs.
|
||||
caveat: We don't have a way to reference form elements with "[]" in the name, causing a proble
|
||||
with our default mod template. The "browser" button is present, but cannot populate the form
|
||||
element.
|
||||
* Add output buffering when including lang files so no output is sent to the browser (which could cause problems for sessions and cookies)
|
||||
* Paging search results.
|
||||
* Anonymous binds redirect to search page with no tree viewer (as an option in config)
|
||||
* pretty-printed DNs
|
||||
* DSML exports
|
||||
* obfuscated password display
|
||||
* more linkage in the schema browser (used by links)
|
||||
* jpegs drawn in-line in searches
|
||||
* configurable read-only attributes
|
||||
* paging in search results (ie, viewing entries 1-50 of 436)
|
||||
* Configuration for templates.
|
||||
|
||||
0.9.5 planned features:
|
||||
Maybe create a class called Config with static functions for fetching configuration data (ie, Config::isServerReadOnly()).
|
||||
or: Object-oriented server and general configuration (ie, add a class Server)
|
||||
Support and test ActiveDirectory and iMail LDAP schema.
|
||||
Add link to objectClass values in default mod template to jump to that objectClass in the schema viewer.
|
||||
Make deref param modifiable in the advanced search form (LDAP_DEREF_ALWAYS, LDAP_DEREF_NEVER, etc.)
|
||||
Better handling of aliases and referals (display the actual alias with aliasedObjectName or ref attrs, and don't follow or perhaps make it configurable like ldapsearch)
|
||||
Remove all HTML from language files.
|
||||
Add a random hint on the welcome page
|
||||
Add blowfish encryption to encrypt cookie-stored passwords and DNs.
|
||||
Support for modifying replica entries (using ldap_set_rebind_proc())
|
||||
Modification templates
|
||||
user
|
||||
oragnizationalUnit
|
||||
sambaUser (v 2 and 3)
|
||||
sambaMachine
|
||||
Search filter builder for simple search form (just select AND or OR for a group of criteria)
|
||||
Add mass-update feature (user provides filter and set of attrs/vals to modify)
|
||||
No-schema mode of operation (some servers simply won't give us schema. This becomes a problem for normal operation)
|
||||
i18n localization of all creation templates
|
||||
Hidden/read-only attrs on a filter-basis (ie, different users have different viewable, writable attributes)
|
||||
Serious compatibility testing for additional LDAP servers.
|
||||
|
||||
(* means an item is complete and checed into CVS)
|
1218
doc/hooks.sgml
Normal file
15
doc/test_encoding.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
# $Header: /cvsroot/phpldapadmin/phpldapadmin/doc/test_encoding.sh,v 1.1 2005/02/06 00:37:15 wurley Exp $
|
||||
# $Id: test_encoding.sh,v 1.1 2005/02/06 00:37:15 wurley Exp $
|
||||
# Written by: Daniel van Eeden <daniel_e@dds.nl>
|
||||
# Purpose: test utf-8 encoding
|
||||
|
||||
for file in `find . -type f ! -name \*png ! -name \*jpg | egrep -v "^./lang/"`
|
||||
do
|
||||
output=`iconv ${file} -o /dev/null 2>&1`
|
||||
err=$?
|
||||
output=`echo ${output} | cut -d: -f2`
|
||||
if [ ${err} != "0" ]; then
|
||||
echo "${file}:${output}"
|
||||
fi
|
||||
done
|
@@ -1,34 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/download_binary_attr.php,v 1.6 2004/04/18 15:51:24 uugdave Exp $
|
||||
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$server_id = $_GET['server_id'];
|
||||
$dn = rawurldecode( $_GET['dn'] );
|
||||
$attr = $_GET['attr'];
|
||||
// if there are multiple values in this attribute, which one do you want to see?
|
||||
$value_num = isset( $_GET['value_num'] ) ? $_GET['value_num'] : 0;
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
$ds = pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
dn_exists( $server_id, $dn ) or pla_error( sprintf( $lang['no_such_entry'], pretty_print_dn( $dn ) ) );
|
||||
|
||||
$search = @ldap_read( $ds, $dn, "(objectClass=*)", array( $attr ), 0, 0, 0, get_view_deref_setting() );
|
||||
if( ! $search )
|
||||
pla_error( $lang['error_performing_search'], ldap_error( $ds ), ldap_errno( $ds ) );
|
||||
$entry = ldap_first_entry( $ds, $search );
|
||||
$attrs = ldap_get_attributes( $ds, $entry );
|
||||
$attr = ldap_first_attribute( $ds, $entry, $attrs );
|
||||
$values = ldap_get_values_len( $ds, $entry, $attr );
|
||||
$count = $values['count'];
|
||||
|
||||
// Dump the binary data to the browser
|
||||
header( "Content-type: octet-stream" );
|
||||
header( "Content-disposition: attachment; filename=$attr" );
|
||||
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
|
||||
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
|
||||
echo $values[$value_num];
|
||||
|
||||
?>
|
58
edit.php
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/edit.php,v 1.46 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
|
||||
/*
|
||||
* edit.php
|
||||
* Displays the specified dn from the specified server for editing
|
||||
* in its template as determined by get_template(). This is a simple
|
||||
* shell for displaying entries. The real work is done by the templates
|
||||
* found in tempaltes/modification/
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - use_default_template (optional) If set, use the default template no matter what
|
||||
* - Other vars may be set and used by the modification templates
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
require realpath( 'templates/template_config.php' );
|
||||
|
||||
$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : false;
|
||||
$dn !== false or pla_error( $lang['missing_dn_in_query_string'] );
|
||||
$decoded_dn = rawurldecode( $dn );
|
||||
$encoded_dn = rawurlencode( $decoded_dn );
|
||||
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id'] : false;
|
||||
$server_id !== false or pla_error( $lang['missing_server_id_in_query_string'] );
|
||||
|
||||
// Template authors may wish to present the user with a link back to the default, generic
|
||||
// template for editing. They may use this as the target of the href to do so.
|
||||
$default_href = "edit.php?server_id=$server_id&dn=$encoded_dn&use_default_template=true";
|
||||
|
||||
$use_default_template = isset( $_GET['use_default_template'] ) ? true : false;
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
|
||||
if( $use_default_template ) {
|
||||
require realpath( 'templates/modification/default.php' );
|
||||
} else {
|
||||
|
||||
$template = get_template( $server_id, $dn );
|
||||
$template_file = "templates/modification/$template.php";
|
||||
if( file_exists( realpath( $template_file ) ) )
|
||||
require realpath( $template_file );
|
||||
else {
|
||||
echo "\n\n";
|
||||
echo $lang['missing_template_file'];
|
||||
echo " <b>$template_file</b>. ";
|
||||
echo $lang['using_default'];
|
||||
echo "<br />\n\n";
|
||||
require realpath( 'templates/modification/default.php' );
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@@ -1,103 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/entry_chooser.php,v 1.14 2004/04/13 03:37:36 uugdave Exp $
|
||||
|
||||
|
||||
require 'common.php';
|
||||
|
||||
$container = isset( $_GET['container'] ) ? rawurldecode( $_GET['container'] ) : false;
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id'] : false;
|
||||
$return_form_element = isset( $_GET['form_element'] ) ? htmlspecialchars( $_GET['form_element'] ) : null;
|
||||
|
||||
include "header.php";
|
||||
|
||||
echo "<h3 class=\"subtitle\">" . $lang['entry_chooser_title'] . "</h3>\n";
|
||||
flush();
|
||||
?>
|
||||
|
||||
<script language="javascript">
|
||||
function returnDN( dn )
|
||||
{
|
||||
opener.document.<?php echo $return_form_element; ?>.value = dn;
|
||||
close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
if( $container ) {
|
||||
echo $lang['server_colon_pare'] . "<b>" . htmlspecialchars( $servers[ $server_id ][ 'name' ] ) . "</b><br />\n";
|
||||
echo $lang['look_in'] . "<b>" . htmlspecialchars( $container ) . "</b><br />\n";
|
||||
}
|
||||
|
||||
/* Has the use already begun to descend into a specific server tree? */
|
||||
if( $server_id !== false && $container !== false )
|
||||
{
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$dn_list = get_container_contents( $server_id, $container, 0, '(objectClass=*)', get_tree_deref_setting() );
|
||||
sort( $dn_list );
|
||||
|
||||
$base_dn = $servers[ $server_id ][ 'base' ];
|
||||
if( ! $base_dn )
|
||||
$base_dn = try_to_get_root_dn( $server_id );
|
||||
|
||||
if( 0 == pla_compare_dns( $container, $base_dn ) ) {
|
||||
$parent_container = false;
|
||||
$up_href = "entry_chooser.php?form_element=$return_form_element";
|
||||
} else {
|
||||
$parent_container = get_container( $container );
|
||||
$up_href = "entry_chooser.php?form_element=$return_form_element&server_id=$server_id&container=" .
|
||||
rawurlencode( $parent_container );
|
||||
}
|
||||
echo " <a href=\"$up_href\" style=\"text-decoration:none\">" .
|
||||
"<img src=\"images/up.png\"> ". $lang['back_up_p'] ."</a><br />\n";
|
||||
|
||||
if( count( $dn_list ) == 0 )
|
||||
echo " (". $lang['no_entries'] .")<br />\n";
|
||||
else
|
||||
foreach( $dn_list as $dn ) {
|
||||
$href = "javascript:returnDN( '$dn' )";
|
||||
echo " <a href=\"entry_chooser.php?form_element=$return_form_element".
|
||||
"&server_id=$server_id&container=" .
|
||||
rawurlencode( $dn ) . "\"><img src=\"images/plus.png\" /></a> " .
|
||||
"<a href=\"$href\">" . htmlspecialchars( $dn ) . "</a><br />\n";
|
||||
}
|
||||
}
|
||||
/* draw the root of the selection tree (ie, list all the servers) */
|
||||
else
|
||||
{
|
||||
foreach( $servers as $id => $server ) {
|
||||
if( $server['host'] ) {
|
||||
echo "<b>" . htmlspecialchars( $server['name'] ) . "</b><br />\n";
|
||||
if( ! have_auth_info( $id ) )
|
||||
echo "<small> (" . $lang['not_logged_in'] . ")</small><br />";
|
||||
else {
|
||||
$dn = ( $server['base'] ? $server['base'] : try_to_get_root_dn( $id ) );
|
||||
if( ! $dn ) {
|
||||
echo "<small> (". $lang['could_not_det_base_dn'] .")</small><br />";
|
||||
} else {
|
||||
$href = "javascript:returnDN( '$dn' )";
|
||||
echo " <a href=\"entry_chooser.php?form_element=" .
|
||||
"$return_form_element&server_id=$id&container=" .
|
||||
rawurlencode( $dn ) . "\"><img src=\"images/plus.png\" /></a> " .
|
||||
"<a href=\"$href\">" . htmlspecialchars( $dn ) . "</a><br />\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// added by PD. 14082003,
|
||||
// adding the element access allows it to work with javascript arrays
|
||||
|
||||
// the name of the form extracted from the first part of the URL variable.
|
||||
$formpart=substr($return_form_element,0,strpos($return_form_element,"."));
|
||||
|
||||
// the name of the element extracted from the last part of the URL variable (after the dot)
|
||||
$elmpart =substr($return_form_element,strpos($return_form_element,".")+1);
|
||||
|
||||
// rebuilt return value
|
||||
$return_form_element = $formpart . ".elements[\"" . $elmpart . "\"]";
|
||||
|
||||
?>
|
109
export_form.php
@@ -1,109 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/export_form.php,v 1.7 2004/05/05 23:21:57 xrenard Exp $
|
||||
|
||||
/**
|
||||
* export_form.php
|
||||
* --------------------
|
||||
*
|
||||
* Html form to choose an export format(ldif,...)
|
||||
*
|
||||
*/
|
||||
|
||||
require 'export_functions.php';
|
||||
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id']:NULL ;
|
||||
$format = isset( $_GET['format'] ) ? $_GET['format'] : "unix" ;
|
||||
$scope = isset( $_GET['scope'] ) ? $_GET['scope'] : 'base' ;
|
||||
$exporter_id = isset( $_GET['exporter_id'] ) ? $_GET['exporter_id'] : 0 ;
|
||||
$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : null;
|
||||
|
||||
$available_formats = array(
|
||||
'unix' => 'UNIX',
|
||||
'mac' => 'Macintosh',
|
||||
'win' => 'Windows'
|
||||
);
|
||||
|
||||
$available_scopes = array(
|
||||
'base' => $lang['scope_base'],
|
||||
'one' => $lang['scope_one'],
|
||||
'sub' => $lang['scope_sub']
|
||||
);
|
||||
|
||||
|
||||
include 'header.php'; ?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['export']; ?></h3>
|
||||
<br />
|
||||
<center>
|
||||
<form name="export_form" action="export.php" method="POST">
|
||||
<table class="export_form">
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['export']; ?></legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td><?php echo $lang['server']; ?></td>
|
||||
<td>
|
||||
<select name="server_id">
|
||||
<?php
|
||||
foreach( $servers as $id => $server )
|
||||
if( $server['host'] )
|
||||
echo "<option value=\"$id\"". ($id==$server_id?" selected":"") .">" . htmlspecialchars($server['name']) . "</option>\n";
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><acronym title="<?php echo $lang['distinguished_name'];?>">DN</acronym></td>
|
||||
<td><nobr><input type="text" name="dn" id="dn" style="width:200px" value="<?php echo htmlspecialchars( $dn ); ?>" /> <?php draw_chooser_link( 'export_form.dn' ); ?></nobr></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['export_format']; ?></legend>
|
||||
<?php foreach($exporters as $index => $exporter){?>
|
||||
<input type="radio" name="exporter_id" value="<?php echo htmlspecialchars($index); ?>" id="<?php echo htmlspecialchars($index); ?>" <?php if($index==$exporter_id) echo ' checked'; ?> />
|
||||
<label for="<?php echo htmlspecialchars( $index ); ?>"><?php echo htmlspecialchars( $exporter['desc'] ); ?></label><br />
|
||||
<?php } ?>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['line_ends']; ?></legend>
|
||||
<?php foreach( $available_formats as $id => $desc ) {
|
||||
$id = htmlspecialchars( $id );
|
||||
$desc = htmlspecialchars( $desc );
|
||||
?>
|
||||
<input type="radio" name="format" value="<?php echo $id; ?>" id="<?php echo $id; ?>"<?php if($format==$id) echo ' checked'; ?> /><label for="<?php echo $id; ?>"><?php echo $desc; ?></label><br />
|
||||
<?php } ?>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['search_scope']; ?></legend>
|
||||
<?php foreach( $available_scopes as $id => $desc ) {
|
||||
$id = htmlspecialchars( $id );
|
||||
$desc = htmlspecialchars( $desc ); ?>
|
||||
<input type="radio" name="scope" value="<?php echo $id; ?>" id="<?php echo $id; ?>"<?php if($id==$scope) echo ' checked';?> /><label for="<?php echo $id; ?>"><?php echo $desc; ?></label><br />
|
||||
<?php } ?>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" ><center><input type="submit" value="<?php echo $lang['createf_proceed']; ?>"></center></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
2811
functions.php
22
header.php
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/header.php,v 1.10 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
// We want to get $language into scope in case we were included
|
||||
// from within a function
|
||||
global $language;
|
||||
@header( "Content-type: text/html; charset=\"UTF-8\"" );
|
||||
|
||||
// XML version and encoding for well-behaved browsers
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $language; ?>" lang="<?php echo $language; ?>" dir="ltr">
|
||||
<head>
|
||||
<title>phpLDAPadmin</title>
|
||||
<link rel="stylesheet" href="style.css" media="screen" />
|
||||
<script src="entry_chooser.js" type="text/javascript"></script>
|
||||
<script src="search_util.js" type="text/javascript"></script>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
</head>
|
168
htdocs/add_attr.php
Normal file
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr.php,v 1.15.2.4 2005/10/22 14:22:47 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds an attribute/value pair to an object
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn
|
||||
* - attr
|
||||
* - val
|
||||
* - binary
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @todo: For boolean attributes, convert the response to TRUE/FALSE.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$attr = $_POST['attr'];
|
||||
$val = isset( $_POST['val'] ) ? $_POST['val'] : false;;
|
||||
$dn = $_POST['dn'] ;
|
||||
$is_binary_val = isset( $_POST['binary'] ) ? true : false;
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
|
||||
if( ! $is_binary_val && $val == "" ) {
|
||||
pla_error( $lang['left_attr_blank'] );
|
||||
}
|
||||
|
||||
// special case for binary attributes (like jpegPhoto and userCertificate):
|
||||
// we must go read the data from the file and override $val with the binary data
|
||||
// Secondly, we must check if the ";binary" option has to be appended to the name
|
||||
// of the attribute.
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, array($val) ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$ldapserver->server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
if( $is_binary_val ) {
|
||||
if( 0 == $_FILES['val']['size'] )
|
||||
pla_error( $lang['file_empty'] );
|
||||
|
||||
if( ! is_uploaded_file( $_FILES['val']['tmp_name'] ) ) {
|
||||
|
||||
if( isset( $_FILES['val']['error'] ) )
|
||||
|
||||
switch($_FILES['val']['error']) {
|
||||
case 0: //no error; possible file attack!
|
||||
pla_error( $lang['invalid_file'] );
|
||||
break;
|
||||
|
||||
case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
|
||||
pla_error( $lang['uploaded_file_too_big'] );
|
||||
break;
|
||||
|
||||
case 2: //uploaded file exceeds the MAX_FILE_SIZE directive specified in the html form
|
||||
pla_error( $lang['uploaded_file_too_big'] );
|
||||
break;
|
||||
|
||||
case 3: //uploaded file was only partially uploaded
|
||||
pla_error( $lang['uploaded_file_partial'] );
|
||||
break;
|
||||
|
||||
case 4: //no file was uploaded
|
||||
pla_error( $lang['left_attr_blank'] );
|
||||
break;
|
||||
|
||||
default: //a default error, just in case! :)
|
||||
pla_error( $lang['invalid_file'] );
|
||||
break;
|
||||
}
|
||||
|
||||
else
|
||||
pla_error( $lang['invalid_file'] );
|
||||
}
|
||||
|
||||
$file = $_FILES['val']['tmp_name'];
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_data = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
|
||||
$val = $binary_data;
|
||||
|
||||
if( is_binary_option_required( $ldapserver, $attr ) )
|
||||
$attr .= ";binary";
|
||||
}
|
||||
|
||||
/* Automagically hash new userPassword attributes according to the
|
||||
chosen in config.php. */
|
||||
if( 0 == strcasecmp( $attr, 'userpassword' ) ) {
|
||||
if (trim($ldapserver->default_hash) != '' ) {
|
||||
$enc_type = $ldapserver->default_hash;
|
||||
$val = password_hash( $val, $enc_type );
|
||||
}
|
||||
}
|
||||
|
||||
elseif (strcasecmp($attr,'sambaNTPassword') == 0) {
|
||||
$sambapassword = new smbHash;
|
||||
$val = $sambapassword->nthash($val);
|
||||
}
|
||||
|
||||
elseif (strcasecmp($attr,'sambaLMPassword') == 0) {
|
||||
$sambapassword = new smbHash;
|
||||
$val = $sambapassword->lmhash($val);
|
||||
}
|
||||
|
||||
$new_entry = array( $attr => $val );
|
||||
$result = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if ($result)
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$encoded_attr));
|
||||
|
||||
else
|
||||
pla_error( $lang['failed_to_add_attr'],$ldapserver->error(),$ldapserver->errno() );
|
||||
|
||||
/**
|
||||
* Check if we need to append the ;binary option to the name
|
||||
* of some binary attribute
|
||||
*
|
||||
* @param object $ldapserver Server Object that the attribute is in.
|
||||
* @param attr $attr Attribute to test to see if it requires ;binary added to it.
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
function is_binary_option_required( $ldapserver, $attr ) {
|
||||
|
||||
// list of the binary attributes which need the ";binary" option
|
||||
$binary_attributes_with_options = array(
|
||||
// Superior: Ldapv3 Syntaxes (1.3.6.1.4.1.1466.115.121.1)
|
||||
'1.3.6.1.4.1.1466.115.121.1.8' => "userCertificate",
|
||||
'1.3.6.1.4.1.1466.115.121.1.8' => "caCertificate",
|
||||
'1.3.6.1.4.1.1466.115.121.1.10' => "crossCertificatePair",
|
||||
'1.3.6.1.4.1.1466.115.121.1.9' => "certificateRevocationList",
|
||||
'1.3.6.1.4.1.1466.115.121.1.9' => "authorityRevocationList",
|
||||
// Superior: Netscape Ldap attributes types (2.16.840.1.113730.3.1)
|
||||
'2.16.840.1.113730.3.1.40' => "userSMIMECertificate"
|
||||
);
|
||||
|
||||
// quick check by attr name (short circuits the schema check if possible)
|
||||
//foreach( $binary_attributes_with_options as $oid => $name )
|
||||
//if( 0 == strcasecmp( $attr, $name ) )
|
||||
//return true;
|
||||
|
||||
$schema_attr = $ldapserver->getSchemaAttribute($attr);
|
||||
if( ! $schema_attr )
|
||||
return false;
|
||||
|
||||
$syntax = $schema_attr->getSyntaxOID();
|
||||
if( isset( $binary_attributes_with_options[ $syntax ] ) )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
?>
|
197
htdocs/add_attr_form.php
Normal file
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr_form.php,v 1.12.2.1 2005/10/16 20:19:16 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays a form for adding an attribute/value to an LDAP entry.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$rdn = get_rdn( $dn );
|
||||
|
||||
$friendly_attrs = process_friendly_attr_table();
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo sprintf( $lang['add_new_attribute'], htmlspecialchars( $rdn ) ); ?></b></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver->name; ?></b> <?php echo $lang['distinguished_name']; ?>: <b><?php echo htmlspecialchars( ( $dn ) ); ?></b></h3>
|
||||
|
||||
<?php $attrs = get_object_attrs( $ldapserver, $dn );
|
||||
|
||||
$oclasses = get_object_attr( $ldapserver, $dn, 'objectClass' );
|
||||
if( ! is_array( $oclasses ) )
|
||||
$oclasses = array( $oclasses );
|
||||
|
||||
$avail_attrs = array();
|
||||
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses($dn);
|
||||
foreach( $oclasses as $oclass ) {
|
||||
$schema_oclass = $ldapserver->getSchemaObjectClass($oclass,$dn);
|
||||
|
||||
if( $schema_oclass && 0 == strcasecmp( 'objectclass', get_class( $schema_oclass ) ) )
|
||||
$avail_attrs = array_merge( $schema_oclass->getMustAttrNames( $schema_oclasses ),
|
||||
$schema_oclass->getMayAttrNames( $schema_oclasses ),
|
||||
$avail_attrs );
|
||||
}
|
||||
|
||||
$avail_attrs = array_unique( $avail_attrs );
|
||||
$avail_attrs = array_filter( $avail_attrs, "not_an_attr" );
|
||||
sort( $avail_attrs );
|
||||
|
||||
$avail_binary_attrs = array();
|
||||
foreach( $avail_attrs as $i => $attr ) {
|
||||
|
||||
if( is_attr_binary( $ldapserver, $attr ) ) {
|
||||
$avail_binary_attrs[] = $attr;
|
||||
unset( $avail_attrs[ $i ] );
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<br />
|
||||
|
||||
<center>
|
||||
|
||||
<?php echo $lang['add_new_attribute'];
|
||||
|
||||
if( is_array( $avail_attrs ) && count( $avail_attrs ) > 0 ) { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<form action="add_attr.php" method="post">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
|
||||
<select name="attr">
|
||||
|
||||
<?php $attr_select_html = '';
|
||||
usort($avail_attrs,"sortAttrs");
|
||||
foreach( $avail_attrs as $a ) {
|
||||
|
||||
// is there a user-friendly translation available for this attribute?
|
||||
if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) {
|
||||
$attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" .
|
||||
htmlspecialchars($a) . ")";
|
||||
|
||||
} else {
|
||||
$attr_display = htmlspecialchars( $a );
|
||||
}
|
||||
|
||||
echo $attr_display;
|
||||
$attr_select_html .= "<option>$attr_display</option>\n";
|
||||
echo "<option value=\"" . htmlspecialchars($a) . "\">$attr_display</option>";
|
||||
} ?>
|
||||
|
||||
</select>
|
||||
|
||||
<input type="text" name="val" size="20" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['add']; ?>" class="update_dn" />
|
||||
</form>
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<small>(<?php echo $lang['no_new_attrs_available']; ?>)</small>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<?php echo $lang['add_new_binary_attr'];
|
||||
if( count( $avail_binary_attrs ) > 0 ) { ?>
|
||||
|
||||
<!-- Form to add a new BINARY attribute to this entry -->
|
||||
<form action="add_attr.php" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
<br />
|
||||
|
||||
<select name="attr">
|
||||
|
||||
<?php $attr_select_html = '';
|
||||
|
||||
usort($avail_binary_attrs,"sortAttrs");
|
||||
|
||||
foreach( $avail_binary_attrs as $a ) {
|
||||
|
||||
// is there a user-friendly translation available for this attribute?
|
||||
if( isset( $friendly_attrs[ strtolower( $a ) ] ) ) {
|
||||
$attr_display = htmlspecialchars( $friendly_attrs[ strtolower( $a ) ] ) . " (" .
|
||||
htmlspecialchars($a) . ")";
|
||||
|
||||
} else {
|
||||
$attr_display = htmlspecialchars( $a );
|
||||
}
|
||||
|
||||
echo $attr_display;
|
||||
$attr_select_html .= "<option>$attr_display</option>\n";
|
||||
echo "<option value=\"" . htmlspecialchars($a) . "\">$attr_display</option>";
|
||||
} ?>
|
||||
|
||||
</select>
|
||||
|
||||
<input type="file" name="val" size="20" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['add']; ?>" class="update_dn" />
|
||||
|
||||
<?php if( ! ini_get( 'file_uploads' ) )
|
||||
echo "<br><small><b>" . $lang['warning_file_uploads_disabled'] . "</b></small><br>";
|
||||
|
||||
else
|
||||
echo "<br><small><b>" . sprintf( $lang['max_file_size'], ini_get( 'upload_max_filesize' ) ) . "</b></small><br>";
|
||||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<small>(<?php echo $lang['no_new_binary_attrs_available']; ?>)</small>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Given an attribute $x, this returns true if it is NOT already specified
|
||||
* in the current entry, returns false otherwise.
|
||||
*
|
||||
* @param attr $x
|
||||
* @return bool
|
||||
* @ignore
|
||||
*/
|
||||
function not_an_attr( $x ) {
|
||||
global $attrs;
|
||||
|
||||
//return ! isset( $attrs[ strtolower( $x ) ] );
|
||||
foreach( $attrs as $attr => $values )
|
||||
if( 0 == strcasecmp( $attr, $x ) )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
?>
|
64
htdocs/add_oclass.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass.php,v 1.16.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds an objectClass to the specified dn.
|
||||
*
|
||||
* Note, this does not do any schema violation checking. That is
|
||||
* performed in add_oclass_form.php.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - new_oclass
|
||||
* - new_attrs (array, if any)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$new_oclass = unserialize( rawurldecode( $_POST['new_oclass'] ) );
|
||||
$new_attrs = $_POST['new_attrs'];
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
|
||||
if( is_attr_read_only( $ldapserver, 'objectClass' ) )
|
||||
pla_error( "ObjectClasses are flagged as read only in the phpLDAPadmin configuration." );
|
||||
|
||||
$new_entry = array();
|
||||
$new_entry['objectClass'] = $new_oclass;
|
||||
|
||||
$new_attrs_entry = array();
|
||||
$new_oclass_entry = array( 'objectClass' => $new_oclass );
|
||||
|
||||
if( is_array( $new_attrs ) && count( $new_attrs ) > 0 )
|
||||
foreach( $new_attrs as $attr => $val ) {
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, array($val) ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',
|
||||
$ldapserver->server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
$new_entry[ $attr ] = $val;
|
||||
}
|
||||
|
||||
$add_res = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if (! $add_res)
|
||||
pla_error($lang['could_not_perform_ldap_mod_add'],$ldapserver->error(),$ldapserver->errno());
|
||||
|
||||
else
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=objectclass',$ldapserver->server_id,$encoded_dn));
|
||||
?>
|
137
htdocs/add_oclass_form.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass_form.php,v 1.20.2.3 2005/10/22 11:55:31 wurley Exp $
|
||||
|
||||
/**
|
||||
* This page may simply add the objectClass and take you back to the edit page,
|
||||
* but, in one condition it may prompt the user for input. That condition is this:
|
||||
*
|
||||
* If the user has requested to add an objectClass that requires a set of
|
||||
* attributes with 1 or more not defined by the object. In that case, we will
|
||||
* present a form for the user to add those attributes to the object.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as REQUEST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - new_oclass
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @todo If an attribute expects a DN, show the dn browser.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
require './common.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
if (! isset($_POST['new_oclass']))
|
||||
pla_error( $lang['no_objectclasses_selected']);
|
||||
|
||||
$new_oclass = $_REQUEST['new_oclass'];
|
||||
$dn = rawurldecode( $_REQUEST['dn'] );
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
|
||||
/* Ensure that the object has defined all MUST attrs for this objectClass.
|
||||
* If it hasn't, present a form to have the user enter values for all the
|
||||
* newly required attrs. */
|
||||
|
||||
$entry = get_object_attrs( $ldapserver, $dn, true );
|
||||
|
||||
$current_attrs = array();
|
||||
foreach( $entry as $attr => $junk )
|
||||
$current_attrs[] = strtolower($attr);
|
||||
|
||||
// grab the required attributes for the new objectClass
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses();
|
||||
$must_attrs = array();
|
||||
foreach( $new_oclass as $oclass_name ) {
|
||||
$oclass = $ldapserver->getSchemaObjectClass($oclass_name);
|
||||
if( $oclass )
|
||||
$must_attrs = array_merge( $must_attrs, $oclass->getMustAttrNames( $schema_oclasses ) );
|
||||
}
|
||||
$must_attrs = array_unique( $must_attrs );
|
||||
|
||||
// We don't want any of the attr meta-data, just the string
|
||||
//foreach( $must_attrs as $i => $attr )
|
||||
//$must_attrs[$i] = $attr->getName();
|
||||
|
||||
// build a list of the attributes that this new objectClass requires,
|
||||
// but that the object does not currently contain
|
||||
$needed_attrs = array();
|
||||
foreach( $must_attrs as $attr ) {
|
||||
$attr = $ldapserver->getSchemaAttribute($attr);
|
||||
|
||||
//echo "<pre>"; var_dump( $attr ); echo "</pre>";
|
||||
|
||||
// First, check if one of this attr's aliases is already an attribute of this entry
|
||||
foreach( $attr->getAliases() as $alias_attr_name )
|
||||
if( in_array( strtolower( $alias_attr_name ), $current_attrs ) )
|
||||
|
||||
// Skip this attribute since it's already in the entry
|
||||
continue;
|
||||
|
||||
if( in_array( strtolower($attr->getName()), $current_attrs ) )
|
||||
continue;
|
||||
|
||||
// We made it this far, so the attribute needs to be added to this entry in order
|
||||
// to add this objectClass
|
||||
$needed_attrs[] = $attr;
|
||||
}
|
||||
|
||||
if( count( $needed_attrs ) > 0 ) {
|
||||
include './header.php'; ?>
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['new_required_attrs']; ?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['requires_to_add'] . ' ' . count($needed_attrs) .
|
||||
' ' . $lang['new_attributes']; ?></h3>
|
||||
|
||||
<small>
|
||||
|
||||
<?php echo $lang['new_required_attrs_instructions'];
|
||||
echo ' ' . count( $needed_attrs ) . ' ' . $lang['new_attributes'] . ' ';
|
||||
echo $lang['that_this_oclass_requires']; ?>
|
||||
|
||||
</small>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<form action="add_oclass.php" method="post">
|
||||
<input type="hidden" name="new_oclass" value="<?php echo rawurlencode( serialize( $new_oclass ) ); ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
|
||||
<table class="edit_dn" cellspacing="0">
|
||||
<tr><th colspan="2"><?php echo $lang['new_required_attrs']; ?></th></tr>
|
||||
|
||||
<?php foreach( $needed_attrs as $count => $attr ) { ?>
|
||||
|
||||
<tr><td class="attr"><b><?php echo htmlspecialchars($attr->getName()); ?></b></td></tr>
|
||||
<tr><td class="val"><input type="text" name="new_attrs[<?php echo htmlspecialchars($attr->getName()); ?>]" value="" size="40" /></tr>
|
||||
<?php } ?>
|
||||
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
<center><input type="submit" value="<?php echo $lang['add_oclass_and_attrs']; ?>" /></center>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php } else {
|
||||
|
||||
$add_res = @ldap_mod_add( $ldapserver->connect(), $dn, array( 'objectClass' => $new_oclass ) );
|
||||
if (! $add_res)
|
||||
pla_error("Could not perform ldap_mod_add operation.",
|
||||
$ldapserver->error(),$ldapserver->errno());
|
||||
else
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=objectClass',
|
||||
$ldapserver->server_id,$encoded_dn));
|
||||
|
||||
}
|
||||
?>
|
74
htdocs/add_value.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value.php,v 1.18.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds a value to an attribute for a given dn.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
* - new_value (form element)
|
||||
* - binary
|
||||
*
|
||||
* On success, redirect to the edit_dn page. On failure, echo an error.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$attr = $_POST['attr'];
|
||||
$new_value = $_POST['new_value'];
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$is_binary_val = isset( $_POST['binary'] ) ? true : false;
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
|
||||
if( is_attr_read_only( $ldapserver, $attr ) )
|
||||
pla_error(sprintf($lang['attr_is_read_only'],htmlspecialchars( $attr )));
|
||||
|
||||
// special case for binary attributes:
|
||||
// we must go read the data from the file.
|
||||
if( $is_binary_val ) {
|
||||
$file = $_FILES['new_value']['tmp_name'];
|
||||
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_value = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
|
||||
$new_value = $binary_value;
|
||||
}
|
||||
|
||||
$new_entry = array( $attr => $new_value );
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, $new_entry ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$ldapserver->server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
// Call the custom callback for each attribute modification
|
||||
// and verify that it should be modified.
|
||||
if( run_hook ( 'pre_attr_add', array ( 'server_id' => $ldapserver->server_id, 'dn' => $dn, 'attr_name' => $attr,
|
||||
'new_value' => $new_entry ) ) ) {
|
||||
|
||||
$add_result = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if (! $add_result)
|
||||
pla_error($lang['could_not_perform_ldap_mod_add'],
|
||||
$ldapserver->error(),$ldapserver->errno());
|
||||
}
|
||||
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$encoded_attr));
|
||||
?>
|
@@ -1,113 +1,132 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_value_form.php,v 1.23 2004/04/23 12:15:29 uugdave Exp $
|
||||
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value_form.php,v 1.32.2.2 2005/10/16 20:19:16 wurley Exp $
|
||||
|
||||
/*
|
||||
* add_value_form.php
|
||||
/**
|
||||
* Displays a form to allow the user to enter a new value to add
|
||||
* to the existing list of values for a multi-valued attribute.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
* - server_id
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require './common.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$attr = $_GET['attr'];
|
||||
$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : null;
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
if( null != $dn ) {
|
||||
$rdn = get_rdn( $dn );
|
||||
} else {
|
||||
$rdn = null;
|
||||
}
|
||||
$server_name = $servers[$server_id]['name'];
|
||||
$attr = $_GET['attr'];
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
$current_values = get_object_attr( $server_id, $dn, $attr );
|
||||
$num_current_values = ( is_array($current_values) ? count($current_values) : 1 );
|
||||
|
||||
if (! is_null($dn))
|
||||
$rdn = get_rdn( $dn );
|
||||
|
||||
else
|
||||
$rdn = null;
|
||||
|
||||
$current_values = get_object_attr( $ldapserver, $dn, $attr );
|
||||
$num_current_values = ( is_array($current_values) ? count($current_values) : 0 );
|
||||
$is_object_class = ( 0 == strcasecmp( $attr, 'objectClass' ) ) ? true : false;
|
||||
$is_jpeg_photo = is_jpeg_photo( $server_id, $attr ); //( 0 == strcasecmp( $attr, 'jpegPhoto' ) ) ? true : false;
|
||||
$is_jpeg_photo = is_jpeg_photo( $ldapserver, $attr ); //( 0 == strcasecmp( $attr, 'jpegPhoto' ) ) ? true : false;
|
||||
|
||||
if( is_server_read_only( $server_id ) )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
|
||||
|
||||
if( $is_object_class ) {
|
||||
if( $is_object_class ) {
|
||||
// fetch all available objectClasses and remove those from the list that are already defined in the entry
|
||||
$schema_oclasses = get_schema_objectclasses( $server_id );
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses();
|
||||
|
||||
foreach( $current_values as $oclass )
|
||||
unset( $schema_oclasses[ strtolower( $oclass ) ] );
|
||||
|
||||
} else {
|
||||
$schema_attr = get_schema_attribute( $server_id, $attr );
|
||||
$schema_attr = $ldapserver->getSchemaAttribute($attr);
|
||||
}
|
||||
|
||||
include 'header.php'; ?>
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title">
|
||||
<?php echo $lang['add_new']; ?>
|
||||
<b><?php echo htmlspecialchars($attr); ?></b>
|
||||
<b><?php echo htmlspecialchars($attr); ?></b>
|
||||
<?php echo $lang['value_to']; ?>
|
||||
<b><?php echo htmlspecialchars($rdn); ?></b></h3>
|
||||
|
||||
<h3 class="subtitle">
|
||||
<?php echo $lang['server']; ?>:
|
||||
<b><?php echo $server_name; ?></b>
|
||||
<?php echo $lang['server']; ?>:
|
||||
<b><?php echo $ldapserver->name; ?></b>
|
||||
<?php echo $lang['distinguished_name']; ?>: <b><?php echo htmlspecialchars( $dn ); ?></b></h3>
|
||||
|
||||
<?php echo $lang['current_list_of']; ?> <b><?php echo $num_current_values; ?></b>
|
||||
<?php echo $lang['current_list_of']; ?> <b><?php echo $num_current_values; ?></b>
|
||||
<?php echo $lang['values_for_attribute']; ?> <b><?php echo htmlspecialchars($attr); ?></b>:
|
||||
|
||||
<?php if( $is_jpeg_photo ) { ?>
|
||||
|
||||
<table><td>
|
||||
<?php draw_jpeg_photos( $server_id, $dn, $attr, false ); ?>
|
||||
</td></table>
|
||||
|
||||
<!-- Temporary warning until we find a way to add jpegPhoto values without an INAPROPRIATE_MATCHING error -->
|
||||
<?php if ($num_current_values) { ?>
|
||||
<?php if( $is_jpeg_photo ) { ?>
|
||||
|
||||
<table><tr><td>
|
||||
<?php draw_jpeg_photos( $ldapserver, $dn, $attr, false ); ?>
|
||||
</td></tr></table>
|
||||
|
||||
<!-- Temporary warning until we find a way to add jpegPhoto values without an INAPROPRIATE_MATCHING error -->
|
||||
<p><small>
|
||||
<?php echo $lang['inappropriate_matching_note']; ?>
|
||||
</small></p>
|
||||
<!-- End of temporary warning -->
|
||||
|
||||
<?php } else if( is_attr_binary( $server_id, $attr ) ) { ?>
|
||||
|
||||
<?php } else if( is_attr_binary( $ldapserver, $attr ) ) { ?>
|
||||
<ul>
|
||||
<?php if( is_array( $vals ) ) { for( $i=1; $i<=count($vals); $i++ ) {
|
||||
$href = "download_binary_attr.php?server_id=$server_id&dn=$encoded_dn&attr=$attr&value_num=" . ($i-1); ?>
|
||||
<li><a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value'] . ' ' . $i; ?>)</a></li>
|
||||
<?php } } else {
|
||||
$href = "download_binary_attr.php?server_id=$server_id&dn=$encoded_dn&attr=$attr"; ?>
|
||||
|
||||
<?php if( is_array( $vals ) ) {
|
||||
|
||||
for( $i=1; $i<=count($vals); $i++ ) {
|
||||
|
||||
$href = sprintf('download_binary_attr.php?server_id=%s&dn=%s&attr=%s&value_num=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$attr,$i-1); ?>
|
||||
|
||||
<li><a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value'] . ' ' . $i; ?>)</a></li>
|
||||
<?php }
|
||||
|
||||
} else {
|
||||
$href = sprintf('download_binary_attr.php?server_id=%s&dn=%s&attr=%s',$ldapserver->server_id,$encoded_dn,$attr); ?>
|
||||
<li><a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value']; ?></a></li>
|
||||
<?php } ?>
|
||||
|
||||
</ul>
|
||||
<!-- Temporary warning until we find a way to add jpegPhoto values without an INAPROPRIATE_MATCHING error -->
|
||||
<!-- Temporary warning until we find a way to add jpegPhoto values without an INAPROPRIATE_MATCHING error -->
|
||||
<p><small>
|
||||
<?php echo $lang['inappropriate_matching_note']; ?>
|
||||
</small></p>
|
||||
<!-- End of temporary warning -->
|
||||
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<ul class="current_values">
|
||||
<?php if( is_array( $current_values ) ) /*$num_current_values > 1 )*/ {
|
||||
foreach( $current_values as $val ) { ?>
|
||||
<ul class="current_values">
|
||||
|
||||
<?php if( is_array( $current_values ) ) /*$num_current_values > 1 )*/ {
|
||||
|
||||
foreach( $current_values as $val ) { ?>
|
||||
<li><nobr><?php echo htmlspecialchars(($val)); ?></nobr></li>
|
||||
<?php } ?>
|
||||
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
|
||||
<?php } else { ?>
|
||||
<li><nobr><?php echo htmlspecialchars(($current_values)); ?></nobr></li>
|
||||
<?php } ?>
|
||||
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<br />
|
||||
<br />
|
||||
<?php } ?>
|
||||
|
||||
<?php echo $lang['enter_value_to_add']; ?>
|
||||
<br />
|
||||
@@ -116,49 +135,58 @@ include 'header.php'; ?>
|
||||
<?php if( $is_object_class ) { ?>
|
||||
|
||||
<form action="add_oclass_form.php" method="post" class="new_value">
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<select name="new_oclass">
|
||||
<select name="new_oclass[]" multiple="true" size="15">
|
||||
|
||||
<?php foreach( $schema_oclasses as $name => $oclass ) { ?>
|
||||
<?php foreach( $schema_oclasses as $name => $oclass ) {
|
||||
|
||||
// exclude any structural ones, as they'll only generate an LDAP_OBJECT_CLASS_VIOLATION
|
||||
if ($oclass->getType() == "structural") continue; ?>
|
||||
|
||||
<option value="<?php echo $oclass->getName(); ?>"><?php echo $oclass->getName(); ?></option>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</select> <input type="submit" value="<?php echo $lang['add_new_objectclass']; ?>" />
|
||||
|
||||
</select>
|
||||
<br />
|
||||
<?php if( show_hints() ) { ?>
|
||||
<input type="submit" value="<?php echo $lang['add_new_objectclass']; ?>" />
|
||||
|
||||
<br />
|
||||
<?php if ($config->GetValue('appearance','show_hints')) { ?>
|
||||
<small>
|
||||
<br />
|
||||
<img src="images/light.png" /><span class="hint"><?php echo $lang['new_required_attrs_note']; ?></span>
|
||||
</small>
|
||||
<?php } ?>
|
||||
<?php }
|
||||
|
||||
<?php } else { ?>
|
||||
} else { ?>
|
||||
|
||||
<form action="add_value.php" method="post" class="new_value" name="new_value_form"<?php
|
||||
if( is_attr_binary( $server_id, $attr ) ) echo "enctype=\"multipart/form-data\""; ?>>
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<form action="add_value.php" method="post" class="new_value" name="new_value_form"<?php
|
||||
if( is_attr_binary( $ldapserver, $attr ) ) echo "enctype=\"multipart/form-data\""; ?>>
|
||||
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<input type="hidden" name="attr" value="<?php echo $encoded_attr; ?>" />
|
||||
|
||||
<?php if( is_attr_binary( $server_id, $attr ) ) { ?>
|
||||
<input type="file" name="new_value" />
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
<?php } else { ?>
|
||||
<?php if( is_multi_line_attr( $attr, $server_id ) ) { ?>
|
||||
<textarea name="new_value" rows="3" cols="30"></textarea>
|
||||
<?php } else { ?>
|
||||
<input type="text" <?php
|
||||
if( $schema_attr->getMaxLength() )
|
||||
echo "maxlength=\"" . $schema_attr->getMaxLength() . "\" ";
|
||||
?>name="new_value" size="40" value="" /><?php
|
||||
// draw the "browse" button next to this input box if this attr houses DNs:
|
||||
if( is_dn_attr( $server_id, $attr ) ) draw_chooser_link( "new_value_form.new_value", false ); ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php if( is_attr_binary( $ldapserver, $attr ) ) { ?>
|
||||
<input type="file" name="new_value" />
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
|
||||
<?php } else {
|
||||
if( is_multi_line_attr( $attr, $ldapserver->server_id ) ) { ?>
|
||||
|
||||
<textarea name="new_value" rows="3" cols="30"></textarea>
|
||||
|
||||
<?php } else { ?>
|
||||
<input type="text" <?php if( $schema_attr->getMaxLength() ) echo "maxlength=\"" . $schema_attr->getMaxLength() . "\" "; ?>name="new_value" size="40" value="" />
|
||||
|
||||
<?php // draw the "browse" button next to this input box if this attr houses DNs:
|
||||
if( is_dn_attr( $ldapserver, $attr ) )
|
||||
draw_chooser_link( "new_value_form.new_value", false ); ?>
|
||||
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
<input type="submit" name="submit" value="<?php echo $lang['add_new_value']; ?>" />
|
||||
<br />
|
||||
@@ -172,7 +200,7 @@ include 'header.php'; ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if( $schema_attr->getMaxLength() ) { ?>
|
||||
<small><b><?php echo $lang['maximum_length']; ?>:</b> <?php echo number_format( $schema_attr->getMaxLength() ); ?> <?php echo $lang['characters']; ?></small><br />
|
||||
<small><b><?php echo $lang['maximum_length']; ?>:</b> <?php echo number_format( $schema_attr->getMaxLength() ); ?> <?php echo $lang['characters']; ?></small><br />
|
||||
<?php } ?>
|
||||
|
||||
</form>
|
42
htdocs/collapse.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/collapse.php,v 1.13 2005/07/22 05:55:19 wurley Exp $
|
||||
|
||||
/**
|
||||
* This script alters the session variable 'tree', collapsing it
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* Note: this script is equal and opposite to expand.php
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
if (array_key_exists($dn,$_SESSION['tree'][$ldapserver->server_id]))
|
||||
unset($_SESSION['tree'][$ldapserver->server_id][$dn]);
|
||||
|
||||
/* This is for Opera. By putting "random junk" in the query string, it thinks
|
||||
that it does not have a cached version of the page, and will thus
|
||||
fetch the page rather than display the cached version */
|
||||
$time = gettimeofday();
|
||||
$random_junk = md5(strtotime('now') . $time['usec']);
|
||||
|
||||
/* If cookies were disabled, build the url parameter for the session id.
|
||||
It will be append to the url to be redirect */
|
||||
$id_session_param = "";
|
||||
if (SID != "")
|
||||
$id_session_param = "&".session_name()."=".session_id();
|
||||
|
||||
header(sprintf('Location:tree.php?foo=%s#%s_%s%s',$random_junk,$ldapserver->server_id,$encoded_dn,$id_session_param));
|
||||
?>
|
5
htdocs/common.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
# This is a temporary file
|
||||
@define('LIBDIR',sprintf('%s/',realpath('../lib/')));
|
||||
require LIBDIR.'common.php';
|
||||
?>
|
579
htdocs/compare.php
Normal file
@@ -0,0 +1,579 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare.php,v 1.10.2.3 2005/10/16 20:19:16 wurley Exp $
|
||||
|
||||
/**
|
||||
* Compare two DNs - the destination DN is editable.
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$dn_src = isset($_POST['dn_src']) ? $_POST['dn_src'] : null;
|
||||
$dn_dst = isset($_POST['dn_dst']) ? $_POST['dn_dst'] : null;
|
||||
|
||||
$encoded_dn_src = rawurlencode($dn_src);
|
||||
$encoded_dn_dst = rawurlencode($dn_dst);
|
||||
|
||||
$server_id_src = (isset($_POST['server_id_src']) ? $_POST['server_id_src'] : '');
|
||||
$server_id_dst = (isset($_POST['server_id_dst']) ? $_POST['server_id_dst'] : '');
|
||||
|
||||
$ldapserver_src = $ldapservers->Instance($server_id_src);
|
||||
if ( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$ldapserver_dst = $ldapservers->Instance($server_id_dst);
|
||||
if ( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
dn_exists($ldapserver_src,$dn_src) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_src)));
|
||||
dn_exists($ldapserver_dst,$dn_dst) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_dst)));
|
||||
|
||||
$friendly_attrs = process_friendly_attr_table();
|
||||
|
||||
$attrs_src = get_object_attrs($ldapserver_src,$dn_src,false,$config->GetValue('deref','view'));
|
||||
$attrs_dst = get_object_attrs($ldapserver_dst,$dn_dst,false,$config->GetValue('deref','view'));
|
||||
|
||||
# Get a list of all attributes.
|
||||
$attrs_all = array_keys($attrs_src);
|
||||
foreach ($attrs_dst as $key => $val)
|
||||
if (! in_array($key,$attrs_all))
|
||||
$attrs_all[] = $key;
|
||||
|
||||
include './header.php';
|
||||
?>
|
||||
|
||||
<body>
|
||||
|
||||
<table class="comp_dn" border=0>
|
||||
<tr><td colspan=6>
|
||||
<h3 class="title"><?php echo $lang['comparing']; ?></h3>
|
||||
</td></tr>
|
||||
|
||||
<tr>
|
||||
<td colspan=2 width=20%>
|
||||
<h3 class="subtitle"><?php echo $lang['attribute']; ?><br /> </h3>
|
||||
</td>
|
||||
<td colspan=2 width=40%>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_src->name; ?></b><br /><?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars(($dn_src)); ?></b></h3>
|
||||
</td>
|
||||
<td colspan=2 width=40%>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_dst->name; ?></b><br /><?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars(($dn_dst)); ?></b></h3>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=6 align=right>
|
||||
<form action="compare.php" method="post" name="compare_form">
|
||||
<input type="hidden" name="server_id_src" value="<?php echo $ldapserver_dst->server_id; ?>" />
|
||||
<input type="hidden" name="server_id_dst" value="<?php echo $ldapserver_src->server_id; ?>" />
|
||||
<input type="hidden" name="dn_src" value="<?php echo htmlspecialchars( $dn_dst ); ?>" />
|
||||
<input type="hidden" name="dn_dst" value="<?php echo htmlspecialchars( $dn_src ); ?>" />
|
||||
<input type="submit" value="<?php echo $lang['switch_entry']; ?>" />
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
if(! $attrs_all || ! is_array($attrs_all)) {
|
||||
printf('<tr><td colspan="2">(%s)</td></tr>',$lang['no_attributes']);
|
||||
print '</table>';
|
||||
print '</html>';
|
||||
die();
|
||||
}
|
||||
|
||||
sort($attrs_all);
|
||||
|
||||
# Work through each of the attributes.
|
||||
foreach ($attrs_all as $attr) {
|
||||
flush();
|
||||
|
||||
# If this is the DN, get the next attribute.
|
||||
if (! strcasecmp($attr,'dn'))
|
||||
continue;
|
||||
|
||||
# Has the config.php specified that this attribute is to be hidden or shown?
|
||||
if (is_attr_hidden($ldapserver_src,$attr) || is_attr_hidden($ldapserver_dst,$attr))
|
||||
continue;
|
||||
?>
|
||||
|
||||
<!-- Begin Attribute -->
|
||||
<tr>
|
||||
|
||||
<?php foreach (array('src','dst') as $side) { ?>
|
||||
|
||||
<?php
|
||||
if ($side == 'dst' && ! $ldapserver_dst->isReadOnly()) { ?>
|
||||
|
||||
<form action="update_confirm.php" method="post" name="edit_form">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver_dst->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $dn_dst; ?>" />
|
||||
|
||||
<?php }
|
||||
|
||||
$schema_attr_src = $ldapserver_src->getSchemaAttribute($attr,$dn_src);
|
||||
$schema_attr_dst = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst);
|
||||
|
||||
# Setup the $attr_note, which will be displayed to the right of the attr name (if any)
|
||||
$attr_note = '';
|
||||
$required_note = '';
|
||||
|
||||
# is there a user-friendly translation available for this attribute?
|
||||
if (isset($friendly_attrs[strtolower($attr)])) {
|
||||
$attr_display = $friendly_attrs[strtolower($attr)];
|
||||
$attr_note = sprintf('<acronym title="%s">alias</acronym>',sprintf($lang['alias_for'],$attr_display,$attr));
|
||||
|
||||
} else {
|
||||
$attr_note = '';
|
||||
$attr_display = $attr;
|
||||
}
|
||||
|
||||
# is this attribute required by an objectClass?
|
||||
$required_by = '';
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
$ldapserver = $ldapserver_src;
|
||||
if ($schema_attr_src)
|
||||
foreach ($schema_attr_src->getRequiredByObjectClasses() as $required)
|
||||
if (isset($attrs_src['objectClass']) && in_array(strtolower($required),arrayLower($attrs_src['objectClass'])))
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
# It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif( isset($attrs_src['objectclass']) && in_array(strtolower($required),arrayLower($attrs_src['objectclass'])))
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
$ldapserver = $ldapserver_dst;
|
||||
if ($schema_attr_dst)
|
||||
foreach ($schema_attr_dst->getRequiredByObjectClasses() as $required)
|
||||
if (isset($attrs_dst['objectClass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectClass'])))
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
# It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif (isset($attrs_dst['objectclass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectclass'])))
|
||||
$required_by .= $required . ' ';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($side == 'src') { ?>
|
||||
<td class="attr">
|
||||
<?php $schema_href="schema.php?server_id=$server_id_src&view=attributes&viewvalue=".real_attr_name($attr); ?>
|
||||
<b><a title="<?php echo sprintf($lang['attr_name_tooltip'],$attr) ?>" href="<?php echo $schema_href; ?>"><?php echo $attr_display; ?></a></b>
|
||||
</td>
|
||||
|
||||
<td class="attr_note">
|
||||
<sup><small><?php echo $attr_note; ?></small></sup>
|
||||
</td>
|
||||
<?php }
|
||||
|
||||
if ($required_by) {
|
||||
$required_note .= sprintf('<acronym title="%s">%s</acronym>',sprintf($lang['required_for'],$required_by),$lang['required']);
|
||||
?>
|
||||
<td colspan=2 class="attr_note">
|
||||
<sup><small><?php echo $required_note; ?></small></sup>
|
||||
</td>
|
||||
<?php } else { ?>
|
||||
<td colspan=2 class="attr_note"> </td>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (is_attr_read_only($ldapserver,$attr)) { ?>
|
||||
<small>(<acronym title="<?php echo $lang['read_only_tooltip']; ?>"><?php echo $lang['read_only']; ?></acronym>)</small>
|
||||
<?php } ?>
|
||||
</td>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</tr>
|
||||
<!-- End of Attribute -->
|
||||
|
||||
<!-- Begin Values -->
|
||||
<tr>
|
||||
|
||||
<?php
|
||||
foreach (array('src','dst') as $side) {
|
||||
$vals = null; ?>
|
||||
|
||||
|
||||
<?php
|
||||
# If this attribute isnt set, then show a blank.
|
||||
$toJump = 0;
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
print '<td colspan=2> </td><td class="attr">';
|
||||
|
||||
if (! isset($attrs_src[$attr])) {
|
||||
echo "<small><". $lang['no_value']."></small></td>";
|
||||
$toJump = 1;
|
||||
continue;
|
||||
} else
|
||||
$vals = $attrs_src[$attr];
|
||||
|
||||
$ldapserver = $ldapserver_src;
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
print '<td colspan=2> </td><td class="val">';
|
||||
|
||||
if (! isset($attrs_dst[$attr])) {
|
||||
echo "<small><". $lang['no_value']."></small></td>";
|
||||
$toJump = 1;
|
||||
continue;
|
||||
} else
|
||||
$vals = $attrs_dst[$attr];
|
||||
|
||||
$ldapserver = $ldapserver_dst;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($toJump) continue;
|
||||
|
||||
/*
|
||||
* Is this attribute a jpegPhoto?
|
||||
*/
|
||||
if (is_jpeg_photo($ldapserver,$attr)) {
|
||||
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
// Don't draw the delete buttons if there is more than one jpegPhoto
|
||||
// (phpLDAPadmin can't handle this case yet)
|
||||
draw_jpeg_photos( $ldapserver, $dn_src, $attr, false );
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
if( $ldapserver_dst->isReadOnly() || is_attr_read_only( $ldapserver_dst, $attr ) )
|
||||
draw_jpeg_photos( $ldapserver, $dn_dst, $attr, false );
|
||||
else
|
||||
draw_jpeg_photos( $ldapserver, $dn_dst, $attr, true );
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// proceed to the next attribute
|
||||
echo "</td>\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Is this attribute binary?
|
||||
*/
|
||||
if( is_attr_binary( $ldapserver, $attr ) ) {
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
$href = sprintf("download_binary_attr.php?server_id=%s&dn=%s&attr=%s",$ldapserver->server_id,$encoded_dn_src,$attr);
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
$href = sprintf("download_binary_attr.php?server_id=%s&dn=%s&attr=%s",$ldapserver->server_id,$encoded_dn_dst,$attr);
|
||||
break;
|
||||
}
|
||||
?>
|
||||
|
||||
<small>
|
||||
|
||||
<?php echo $lang['binary_value']; ?><br />
|
||||
|
||||
<?php if( count( $vals ) > 1 ) { for( $i=1; $i<=count($vals); $i++ ) { ?>
|
||||
<a href="<?php echo $href . "&value_num=$i"; ?>"><img
|
||||
src="images/save.png" /> <?php echo $lang['download_value']; ?>(<?php echo $i; ?>)</a><br />
|
||||
|
||||
<?php } } else { ?>
|
||||
<a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value']; ?></a><br />
|
||||
|
||||
<?php }
|
||||
|
||||
if( $side == 'dst' && ! $ldapserver_dst->isReadOnly() && ! is_attr_read_only( $ldapserver, $attr ) ) { ?>
|
||||
|
||||
<a href="javascript:deleteAttribute( '<?php echo $attr; ?>' );" style="color:red;"><img src="images/trash.png" /> <?php echo $lang['delete_attribute']; ?></a>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</small>
|
||||
</td>
|
||||
|
||||
<?php continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note: at this point, the attribute must be text-based (not binary or jpeg)
|
||||
*/
|
||||
|
||||
/*
|
||||
* If this server is in read-only mode or this attribute is configured as read_only,
|
||||
* simply draw the attribute values and continue.
|
||||
*/
|
||||
|
||||
if( $side == 'dst' && ($ldapserver->isReadOnly() || is_attr_read_only( $ldapserver, $attr )) ) {
|
||||
if( is_array( $vals ) ) {
|
||||
foreach( $vals as $i => $val ) {
|
||||
if( trim( $val ) == "" )
|
||||
echo "<span style=\"color:red\">[" . $lang['empty'] . "]</span><br />\n";
|
||||
|
||||
elseif( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display'))
|
||||
echo preg_replace( '/./', '*', $val ) . "<br />";
|
||||
|
||||
else
|
||||
echo htmlspecialchars( $val ) . "<br />";
|
||||
}
|
||||
|
||||
} else {
|
||||
if( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display'))
|
||||
echo preg_replace( '/./', '*', $vals ) . "<br />";
|
||||
else
|
||||
echo $vals . "<br />";
|
||||
}
|
||||
echo "</td>";
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Is this a userPassword attribute?
|
||||
*/
|
||||
if( ! strcasecmp( $attr, 'userpassword' ) ) {
|
||||
$user_password = $vals[0];
|
||||
$enc_type = get_enc_type( $user_password );
|
||||
|
||||
// Set the default hashing type if the password is blank (must be newly created)
|
||||
if( $user_password == '' ) {
|
||||
$enc_type = get_default_hash( $server_id );
|
||||
}
|
||||
|
||||
if ($side == 'dst') { ?>
|
||||
|
||||
<input type="hidden" name="old_values[userpassword]" value="<?php echo htmlspecialchars($user_password); ?>" />
|
||||
|
||||
<!-- Special case of enc_type to detect changes when user changes enc_type but not the password value -->
|
||||
<input size="38" type="hidden" name="old_enc_type" value="<?php echo ($enc_type==''?'clear':$enc_type); ?>" />
|
||||
|
||||
<?php }
|
||||
|
||||
if( obfuscate_password_display( $enc_type ) ) {
|
||||
echo htmlspecialchars( preg_replace( "/./", "*", $user_password ) );
|
||||
} else {
|
||||
echo htmlspecialchars( $user_password );
|
||||
} ?>
|
||||
|
||||
<br />
|
||||
|
||||
<?php if ($side == 'dst') { ?>
|
||||
|
||||
<input style="width: 260px" type="password" name="new_values[userpassword]" value="<?php echo htmlspecialchars( $user_password ); ?>" />
|
||||
|
||||
<?php echo enc_type_select_list($enc_type);
|
||||
|
||||
} ?>
|
||||
|
||||
<br />
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function passwordComparePopup()
|
||||
{
|
||||
mywindow = open( 'password_checker.php', 'myname', 'resizable=no,width=450,height=200,scrollbars=1' );
|
||||
mywindow.location.href = 'password_checker.php?hash=<?php echo base64_encode($user_password); ?>&base64=true';
|
||||
if( mywindow.opener == null )
|
||||
mywindow.opener = self;
|
||||
}
|
||||
-->
|
||||
</script>
|
||||
|
||||
<small><a href="javascript:passwordComparePopup()"><?php echo $lang['t_check_pass']; ?></a></small>
|
||||
|
||||
</td>
|
||||
|
||||
<?php continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Is this a boolean attribute?
|
||||
*/
|
||||
if( is_attr_boolean( $ldapserver, $attr) ) {
|
||||
$val = $vals[0];
|
||||
|
||||
if ($side = 'dst') {?>
|
||||
|
||||
<input type="hidden" name="old_values[<?php echo htmlspecialchars( $attr ); ?>]" value="<?php echo htmlspecialchars($val); ?>" />
|
||||
|
||||
<select name="new_values[<?php echo htmlspecialchars( $attr ); ?>]">
|
||||
<option value="TRUE"<?php echo ($val=='TRUE' ? ' selected' : ''); ?>><?php echo $lang['true']; ?></option>
|
||||
<option value="FALSE"<?php echo ($val=='FALSE' ? ' selected' : ''); ?>><?php echo $lang['false']; ?></option>
|
||||
<option value="">(<?php echo $lang['none_remove_value']; ?>)</option>
|
||||
</select>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</td>
|
||||
|
||||
<?php continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* End of special case attributes (non plain text).
|
||||
*/
|
||||
|
||||
foreach( $vals as $i => $val ) {
|
||||
|
||||
if ($side == 'dst') {
|
||||
$input_name = "new_values[" . htmlspecialchars( $attr ) . "][$i]";
|
||||
// We smack an id="..." tag in here that doesn't have [][] in it to allow the
|
||||
// draw_chooser_link() to identify it after the user clicks.
|
||||
$input_id = "new_values_" . htmlspecialchars($attr) . "_" . $i; ?>
|
||||
|
||||
<!-- The old_values array will let update.php know if the entry contents changed
|
||||
between the time the user loaded this page and saved their changes. -->
|
||||
<input type="hidden" name="old_values[<?php echo htmlspecialchars( $attr ); ?>][<?php echo $i; ?>]" value="<?php echo htmlspecialchars($val); ?>" />
|
||||
<?php }
|
||||
|
||||
// Is this value is a structural objectClass, make it read-only
|
||||
if( 0 == strcasecmp( $attr, 'objectClass' ) ) { ?>
|
||||
|
||||
<a title="<?php echo $lang['view_schema_for_oclass']; ?>" href="schema.php?server_id=<?php echo $ldapserver->server_id; ?>&view=objectClasses&viewvalue=<?php echo htmlspecialchars( $val ); ?>"><img src="images/info.png" /></a>
|
||||
|
||||
<?php $schema_object = $ldapserver->getSchemaObjectClass($val);
|
||||
|
||||
if ($schema_object->getType() == 'structural') {
|
||||
echo "$val <small>(<acronym title=\"" . sprintf( $lang['structural_object_class_cannot_remove'] ) . "\">" . $lang['structural'] . "</acronym>)</small><br />";
|
||||
|
||||
if ($side == 'dst') {?>
|
||||
|
||||
<input type="hidden" name="<?php echo $input_name; ?>" id="<?php echo $input_id; ?>" value="<?php echo htmlspecialchars($val); ?>" />
|
||||
|
||||
<?php }
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if( is_dn_string( $val ) || is_dn_attr( $ldapserver, $attr ) ) { ?>
|
||||
|
||||
<a title="<?php echo sprintf( $lang['go_to_dn'], htmlspecialchars($val) ); ?>" href="edit.php?server_id=<?php echo $ldapserver->server_id; ?>&dn=<?php echo rawurlencode($val); ?>"><img style="vertical-align: top" src="images/go.png" /></a>
|
||||
|
||||
<?php } elseif( is_mail_string( $val ) ) { ?>
|
||||
|
||||
<a href="mailto:<?php echo htmlspecialchars($val); ?>"><img style="vertical-align: center" src="images/mail.png" /></a>
|
||||
|
||||
<?php } elseif( is_url_string( $val ) ) { ?>
|
||||
|
||||
<a href="<?php echo htmlspecialchars($val); ?>" target="new"><img style="vertical-align: center" src="images/dc.png" /></a>
|
||||
|
||||
<?php }
|
||||
|
||||
if( is_multi_line_attr( $attr, $val, $ldapserver->server_id ) ) {
|
||||
|
||||
if ($side == 'dst') {?>
|
||||
<textarea class="val" rows="3" cols="30" name="<?php echo $input_name; ?>" id="<?php echo $input_id; ?>"><?php echo htmlspecialchars($val); ?></textarea>
|
||||
|
||||
<?php } else {
|
||||
echo htmlspecialchars($val);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if ($side == 'dst') {?>
|
||||
|
||||
<input type="text" class="val" name="<?php echo $input_name; ?>" id="<?php echo $input_id; ?>" value="<?php echo htmlspecialchars($val); ?>" />
|
||||
|
||||
<?php } else {
|
||||
echo htmlspecialchars($val);
|
||||
}
|
||||
}
|
||||
|
||||
// draw a link for popping up the entry browser if this is the type of attribute
|
||||
// that houses DNs.
|
||||
if( is_dn_attr( $ldapserver, $attr ) )
|
||||
draw_chooser_link( "edit_form.$input_id", false ); ?>
|
||||
|
||||
<br />
|
||||
<?php } ?>
|
||||
|
||||
</td>
|
||||
|
||||
<?php } /* end foreach value */ ?>
|
||||
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
/* Draw the "add value" link under the list of values for this attributes */
|
||||
|
||||
if (! $ldapserver_dst->isReadOnly()) {
|
||||
|
||||
// First check if the required objectClass is in this DN
|
||||
$isOK = 0;
|
||||
$src_oclass = array();
|
||||
$attr_object = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst);
|
||||
foreach ($attr_object->used_in_object_classes as $oclass) {
|
||||
if (in_array(strtolower($oclass),arrayLower($attrs_dst['objectClass']))) {
|
||||
$isOK = 1;
|
||||
break;
|
||||
} else {
|
||||
// Find oclass that the source has that provides this attribute.
|
||||
if (in_array($oclass,$attrs_src['objectClass']))
|
||||
$src_oclass[] = $oclass;
|
||||
}
|
||||
}
|
||||
|
||||
print "<tr><td colspan=2></td><td colspan=2> </td><td> </td><td>";
|
||||
if (! $isOK) {
|
||||
|
||||
if (count($src_oclass) == 1) {
|
||||
$add_href = "add_oclass_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&new_oclass=$src_oclass[0]";
|
||||
} else {
|
||||
$add_href = "add_value_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&attr=objectClass";
|
||||
}
|
||||
|
||||
if ($attr == 'objectClass')
|
||||
printf('<div class="add_oclass">(<a href="%s" title="%s">%s</a>)</div>',$add_href,$lang['add_oclass_and_attrs'],$lang['add_value']);
|
||||
else
|
||||
printf('<div class="add_oclass">(<a href="%s" title="%s">%s</a>)</div>',$add_href,sprintf($lang['need_oclass'], implode(" ",$src_oclass)),$lang['add_new_objectclass']);
|
||||
|
||||
} else {
|
||||
if(! $schema_attr_dst->getIsSingleValue() || (! isset($vals))) {
|
||||
|
||||
$add_href = "add_value_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&attr=" . rawurlencode( $attr );
|
||||
|
||||
printf('<div class="add_value">(<a href="%s" title="%s">%s</a>)</div>',
|
||||
$add_href,sprintf($lang['add_value_tooltip'],$attr),$lang['add_value']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "</td></tr>"; ?>
|
||||
|
||||
</td>
|
||||
|
||||
<?php flush(); ?>
|
||||
|
||||
</tr>
|
||||
|
||||
<?php } /* End foreach( $attrs as $attr => $vals ) */
|
||||
|
||||
if( ! $ldapserver_dst->isReadOnly( ) ) { ?>
|
||||
|
||||
<td colspan="2"> </td><td colspan=2><center><input type="submit" value="<?php echo $lang['save_changes']; ?>" /></center></td></tr></form>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</table>
|
||||
|
||||
<?php /* If this entry has a binary attribute, we need to provide a form for it to submit when deleting it. */ ?>
|
||||
<script language="javascript">
|
||||
//<!--
|
||||
function deleteAttribute( attrName )
|
||||
{
|
||||
if( confirm( "<?php echo $lang['really_delete_attribute']; ?> '" + attrName + "'?" ) ) {
|
||||
document.delete_attribute_form.attr.value = attrName;
|
||||
document.delete_attribute_form.submit();
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<!-- This form is submitted by JavaScript when the user clicks "Delete attribute" on a binary attribute -->
|
||||
<form name="delete_attribute_form" action="delete_attr.php" method="post">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver_dst->server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $dn_dst; ?>" />
|
||||
<input type="hidden" name="attr" value="FILLED IN BY JAVASCRIPT" />
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
79
htdocs/compare_form.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare_form.php,v 1.2 2005/07/22 05:47:43 wurley Exp $
|
||||
|
||||
/**
|
||||
* Compares to DN entries side by side.
|
||||
*
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = (isset($_GET['dn']) ? $_GET['dn'] : '');
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$rdn = get_rdn( $dn );
|
||||
$container = get_container( $dn );
|
||||
|
||||
$attrs = get_object_attrs( $ldapserver, $dn );
|
||||
$select_server_html = server_select_list($ldapserver->server_id,true,'server_id_dst');
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['compare_dn']. ' ' . $rdn; ?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver->name; ?></b>
|
||||
<?php if ($dn) { ?>
|
||||
<?php echo $lang['distinguished_name']?>: <b><?php echo $dn; ?></b>
|
||||
<?php } ?>
|
||||
</h3>
|
||||
|
||||
<center>
|
||||
<?php echo $lang['compare']; ?> <b><?php echo htmlspecialchars( $rdn ); ?></b> <?php echo $lang['with']; ?>:<br />
|
||||
<br />
|
||||
|
||||
<form action="compare.php" method="post" name="compare_form">
|
||||
<input type="hidden" name="server_id_src" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
|
||||
<table style="border-spacing: 10px">
|
||||
<tr>
|
||||
<?php if (! $dn) { ?>
|
||||
<td><acronym title="<?php echo $lang['compf_dn_tooltip']; ?>"><?php echo $lang['compf_source_dn']; ?></acronym>:</td>
|
||||
<td>
|
||||
<input type="text" name="dn_src" size="45" value="<?php echo htmlspecialchars( $dn ); ?>" />
|
||||
<?php draw_chooser_link( 'compare_form.dn_src', 'true', $rdn ); ?></td>
|
||||
</td>
|
||||
<?php } else { ?>
|
||||
<input type="hidden" name="dn_src" value="<?php echo htmlspecialchars( $dn ); ?>" />
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><acronym title="<?php echo $lang['compf_dn_tooltip']; ?>"><?php echo $lang['copyf_dest_dn']; ?></acronym>:</td>
|
||||
<td>
|
||||
<input type="text" name="dn_dst" size="45" value="" />
|
||||
<?php draw_chooser_link( 'compare_form.dn_dst', 'true', '' ); ?></td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><?php echo $lang['copyf_dest_server']?>:</td>
|
||||
<td><?php echo $select_server_html; ?></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2" align="right"><input type="submit" value="<?php echo $lang['compare']; ?>" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
222
htdocs/copy.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy.php,v 1.35.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* Vars that come in as POST vars
|
||||
* - source_dn (rawurlencoded)
|
||||
* - new_dn (form element)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id_src = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$server_id_dst = (isset($_POST['dest_server_id']) ? $_POST['dest_server_id'] : '');
|
||||
|
||||
$ldapserver_src = $ldapservers->Instance($server_id_src);
|
||||
$ldapserver_dst = $ldapservers->Instance($server_id_dst);
|
||||
|
||||
if ($ldapserver_dst->isReadOnly())
|
||||
pla_error($lang['copy_server_read_only']);
|
||||
|
||||
if (! $ldapserver_src->haveAuthInfo() || ! $ldapserver_dst->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn_src = $_POST['old_dn'];
|
||||
$dn_dst = $_POST['new_dn'];
|
||||
$do_recursive = (isset($_POST['recursive']) && $_POST['recursive'] == 'on') ? true : false;
|
||||
$do_remove = (isset($_POST['remove']) && $_POST['remove'] == 'yes') ? true : false;
|
||||
$encoded_dn = rawurlencode($dn_src);
|
||||
|
||||
include './header.php';
|
||||
|
||||
# Error checking
|
||||
if (0 == strlen(trim($dn_dst)))
|
||||
pla_error($lang['copy_dest_dn_blank']);
|
||||
|
||||
if (pla_compare_dns($dn_src,$dn_dst) == 0 && $server_id_src == $server_id_dst)
|
||||
pla_error($lang['copy_source_dest_dn_same']);
|
||||
|
||||
if (dn_exists($ldapserver_dst,$dn_dst))
|
||||
pla_error(sprintf($lang['copy_dest_already_exists'],pretty_print_dn($dn_dst)));
|
||||
|
||||
if (! dn_exists($ldapserver_dst,get_container($dn_dst)))
|
||||
pla_error(sprintf($lang['copy_dest_container_does_not_exist'],pretty_print_dn(get_container($dn_dst))));
|
||||
|
||||
if ($do_recursive) {
|
||||
$filter = isset($_POST['filter']) ? $_POST['filter'] : '(objectClass=*)';
|
||||
|
||||
# Build a tree similar to that of the tree browser to give to r_copy_dn
|
||||
$snapshot_tree = array();
|
||||
print '<body>';
|
||||
printf('<h3 class="title">%s%s</h3>',$lang['copy_copying'],htmlspecialchars($dn_src));
|
||||
printf('<h3 class="subtitle">%s</h3>',$lang['copy_recursive_copy_progress']);
|
||||
print '<br /><br />';
|
||||
print '<small>';
|
||||
print $lang['copy_building_snapshot'];
|
||||
|
||||
flush();
|
||||
|
||||
$snapshot_tree = build_tree($ldapserver_src,$dn_src,array(),$filter);
|
||||
printf('<span style="color:green">%s</span><br />',$lang['success']);
|
||||
flush();
|
||||
|
||||
# Prevent script from bailing early on a long delete
|
||||
@set_time_limit(0);
|
||||
|
||||
$copy_result = r_copy_dn($ldapserver_src,$ldapserver_dst,$snapshot_tree,$dn_src,$dn_dst);
|
||||
print '</small>';
|
||||
|
||||
} else {
|
||||
$copy_result = copy_dn($ldapserver_src,$ldapserver_dst,$dn_src,$dn_dst);
|
||||
}
|
||||
|
||||
if ($copy_result) {
|
||||
$edit_url = sprintf('edit.php?server_id=%s&dn=%s',$server_id_dst,rawurlencode($dn_dst));
|
||||
$new_rdn = get_rdn($dn_dst);
|
||||
$container = get_container($dn_dst);
|
||||
|
||||
if (array_key_exists('tree',$_SESSION)) {
|
||||
# do we not have a tree and tree icons yet? Build a new ones.
|
||||
initialize_session_tree();
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if (isset($tree[$server_id_dst][$container])) {
|
||||
$tree[$server_id_dst][$container][] = $dn_dst;
|
||||
sort($tree[$server_id_dst][$container]);
|
||||
$tree_icons[$server_id_dst][$dn_dst] = get_icon($ldapserver_dst,$dn_dst);
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<center>
|
||||
<?php printf('%s<a href="%s">%s</a>',$lang['copy_successful_like_to'],$edit_url,$lang['copy_view_new_entry']) ?>
|
||||
</center>
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
if ($do_remove) {
|
||||
sleep(2);
|
||||
$delete_url = sprintf('delete_form.php?server_id=%s&dn=%s',$server_id_dst,rawurlencode($dn_src));
|
||||
?>
|
||||
|
||||
<!-- redirect to the delete form -->
|
||||
<script language="javascript">
|
||||
parent.right_frame.location="<?php echo $delete_url; ?>"
|
||||
</script>
|
||||
<?php }
|
||||
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
|
||||
function r_copy_dn($ldapserver_src,$ldapserver_dst,$tree,$root_dn,$dn_dst) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('r_copy_dn: Entered with (%s,%s,%s,%s,%s)',2,
|
||||
$ldapserver_src->server_id,$ldapserver_dst->server_id,serialize($tree),$root_dn,$dn_dst);
|
||||
|
||||
global $lang;
|
||||
|
||||
printf('<nobr>%s %s...',$lang['copy_copying'],htmlspecialchars($root_dn));
|
||||
flush();
|
||||
|
||||
$copy_result = copy_dn($ldapserver_src,$ldapserver_dst,$root_dn,$dn_dst);
|
||||
|
||||
if (! $copy_result)
|
||||
return false;
|
||||
|
||||
printf('<span style="color:green">%s</span></nobr><br />',$lang['success']);
|
||||
flush();
|
||||
|
||||
$children = isset($tree[$root_dn]) ? $tree[$root_dn] : null;
|
||||
if (is_array($children) && count($children) > 0) {
|
||||
foreach($children as $child_dn) {
|
||||
$child_rdn = get_rdn($child_dn);
|
||||
$new_dest_dn = sprintf('%s,%s',$child_rdn,$dn_dst);
|
||||
r_copy_dn($ldapserver_src,$ldapserver_dst,$tree,$child_dn,$new_dest_dn);
|
||||
}
|
||||
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function copy_dn($ldapserver_src,$ldapserver_dst,$dn_src,$dn_dst) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('copy_dn: Entered with (%s,%s,%s,%s)',2,
|
||||
$ldapserver_src->server_id,$ldapserver_dst->server_id,$dn_src,$dn_dst);
|
||||
|
||||
global $lang;
|
||||
|
||||
$new_entry = get_object_attrs($ldapserver_src,$dn_src);
|
||||
|
||||
# modify the prefix-value (ie "bob" in cn=bob) to match the destination DN's value.
|
||||
$rdn_attr = substr($dn_dst,0,strpos($dn_dst,'='));
|
||||
$rdn_value = get_rdn($dn_dst);
|
||||
$rdn_value = substr($rdn_value,strpos($rdn_value,'=') + 1);
|
||||
$new_entry[$rdn_attr] = $rdn_value;
|
||||
|
||||
# don't need a dn attribute in the new entry
|
||||
unset($new_entry['dn']);
|
||||
|
||||
# Check the user-defined custom call back first
|
||||
if (true === run_hook('pre_entry_create',
|
||||
array ('server_id'=>$ldapserver_dst->server_id,'dn'=>$dn_dst,'attrs'=>$new_entry))) {
|
||||
|
||||
$add_result = @ldap_add($ldapserver_dst->connect(),$dn_dst,$new_entry);
|
||||
if (! $add_result) {
|
||||
run_hook('post_entry_create',array('server_id'=>$ldapserver_dst->server_id,
|
||||
'dn'=>$dn_dst,'attrs'=>$new_entry));
|
||||
|
||||
print '</small><br /><br />';
|
||||
pla_error($lang['copy_failed'] . $dn_dst,$ldapserver_dst->error(),$ldapserver_dst->errno());
|
||||
}
|
||||
|
||||
return $add_result;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $ldapserver
|
||||
* @param dn $dn
|
||||
* @param array $tree
|
||||
* @param string $filter
|
||||
*/
|
||||
function build_tree($ldapserver,$dn,$tree,$filter='(objectClass=*)') {
|
||||
$children = get_container_contents($ldapserver,$dn,0,$filter);
|
||||
|
||||
if (is_array($children) && count($children) > 0) {
|
||||
$tree[$dn] = $children;
|
||||
foreach ($children as $child_dn)
|
||||
$tree = build_tree($ldapserver,$child_dn,$tree,$filter);
|
||||
}
|
||||
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('build_tree: Entered with (%s,%s,%s,%s), Returning (%s)',1,
|
||||
$ldapserver->server_id,$dn,serialize($tree),$filter,serialize($tree));
|
||||
|
||||
return $tree;
|
||||
}
|
||||
?>
|
@@ -1,78 +1,84 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/copy_form.php,v 1.16 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy_form.php,v 1.24 2005/07/22 05:47:43 wurley Exp $
|
||||
|
||||
|
||||
/*
|
||||
* copy_form.php
|
||||
/**
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* - dn (rawurlencoded)
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in via GET variables
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = $_GET['dn'] ;
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
$rdn = get_rdn( $dn );
|
||||
$container = get_container( $dn );
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id_underline'] . htmlspecialchars( $server_id ) );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
$attrs = get_object_attrs( $ldapserver, $dn );
|
||||
$select_server_html = server_select_list($ldapserver->server_id,true,'dest_server_id');
|
||||
$children = get_container_contents( $ldapserver, $dn );
|
||||
|
||||
$attrs = get_object_attrs( $server_id, $dn );
|
||||
$server_name = $servers[$server_id]['name'];
|
||||
|
||||
$select_server_html = "";
|
||||
foreach( $servers as $id => $server )
|
||||
if( $server['host'] )
|
||||
$select_server_html .= "<option value=\"$id\"". ($id==$server_id?" selected":"") .">" . htmlspecialchars($server['name']) . "</option>\n";
|
||||
|
||||
$children = get_container_contents( $server_id, $dn );
|
||||
|
||||
include 'header.php';
|
||||
include './header.php';
|
||||
|
||||
// Draw some javaScrpt to enable/disable the filter field if this may be a recursive copy
|
||||
if( is_array( $children ) && count( $children ) > 0 ) { ?>
|
||||
<script language="javascript">
|
||||
//<!--
|
||||
|
||||
<script language="javascript">
|
||||
//<!--
|
||||
function toggle_disable_filter_field( recursive_checkbox )
|
||||
{
|
||||
if( recursive_checkbox.checked ) {
|
||||
recursive_checkbox.form.remove.disabled = false;
|
||||
recursive_checkbox.form.filter.disabled = false;
|
||||
} else {
|
||||
recursive_checkbox.form.remove.disabled = true;
|
||||
recursive_checkbox.form.remove.checked = false;
|
||||
recursive_checkbox.form.filter.disabled = true;
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['copyf_title_copy'] . $rdn; ?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $server_name; ?></b> <?php echo $lang['distinguished_name']?>: <b><?php echo $dn; ?></b></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver->name; ?></b> <?php echo $lang['distinguished_name']?>: <b><?php echo $dn; ?></b></h3>
|
||||
|
||||
<center>
|
||||
<?php echo $lang['copyf_title_copy'] ?><b><?php echo htmlspecialchars( $rdn ); ?></b> <?php echo $lang['copyf_to_new_object']?>:<br />
|
||||
<br />
|
||||
|
||||
<form action="copy.php" method="post" name="copy_form">
|
||||
<input type="hidden" name="old_dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
|
||||
<table style="border-spacing: 10px">
|
||||
<tr>
|
||||
<td><acronym title="<?php echo $lang['copyf_dest_dn_tooltip']; ?>"><?php echo $lang['copyf_dest_dn']?></acronym>:</td>
|
||||
<td>
|
||||
<input type="text" name="new_dn" size="45" value="<?php echo htmlspecialchars( $dn ); ?>" />
|
||||
<?php draw_chooser_link( 'copy_form.new_dn' ); ?></td>
|
||||
<?php draw_chooser_link( 'copy_form.new_dn', 'true', $rdn ); ?></td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><?php echo $lang['copyf_dest_server']?>:</td>
|
||||
<td><select name="dest_server_id"><?php echo $select_server_html; ?></select></td>
|
||||
<td><?php echo $select_server_html; ?></td>
|
||||
</tr>
|
||||
|
||||
<?php if( is_array( $children ) && count( $children ) > 0 ) { ?>
|
||||
@@ -85,8 +91,17 @@ if( is_array( $children ) && count( $children ) > 0 ) { ?>
|
||||
<td><acronym title="<?php echo $lang['filter_tooltip']; ?>"><?php echo $lang['filter']; ?></acronym>:</td>
|
||||
<td><input type="text" name="filter" value="(objectClass=*)" size="45" disabled />
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $lang['delete_after_copy']; ?></td>
|
||||
<td><input type="checkbox" name="remove" value="yes"/ disabled>
|
||||
<small>(<?php echo $lang['delete_after_copy_warn']; ?>)</small)</td>
|
||||
</tr>
|
||||
<?php } else { ?>
|
||||
<tr>
|
||||
<td><?php echo $lang['delete_after_copy']; ?></td>
|
||||
<td><input type="checkbox" name="remove" value="yes"/></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
<tr>
|
||||
<td colspan="2" align="right"><input type="submit" value="<?php echo $lang['copyf_title_copy']; ?>" /></td>
|
||||
</tr>
|
||||
@@ -94,14 +109,13 @@ if( is_array( $children ) && count( $children ) > 0 ) { ?>
|
||||
</form>
|
||||
|
||||
<script language="javascript">
|
||||
//<!--
|
||||
/* If the user uses the back button, this way we draw the filter field
|
||||
properly. */
|
||||
toggle_disable_filter_field( document.copy_form.recursive );
|
||||
//-->
|
||||
//<!--
|
||||
/* If the user uses the back button, this way we draw the filter field properly. */
|
||||
toggle_disable_filter_field( document.copy_form.recursive );
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<?php if( show_hints() ) {?>
|
||||
<?php if ($config->GetValue('appearance','show_hints')) {?>
|
||||
<small><img src="images/light.png" /><span class="hint"><?php echo $lang['copyf_note']?></span></small>
|
||||
<?php } ?>
|
||||
|
190
htdocs/create.php
Normal file
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create.php,v 1.43.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Creates a new object.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - new_dn
|
||||
* - attrs (an array of attributes)
|
||||
* - vals (an array of values for the above attrs)
|
||||
* - required_attrs (an array with indices being the attributes,
|
||||
* and the values being their respective values)
|
||||
* - object_classes (rawurlencoded, and serialized array of objectClasses)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
* @todo: posixgroup with empty memberlist generates an error.
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$new_dn = isset( $_POST['new_dn'] ) ? $_POST['new_dn'] : null;
|
||||
$required_attrs = isset( $_POST['required_attrs'] ) ? $_POST['required_attrs'] : false;
|
||||
$object_classes = unserialize( rawurldecode( $_POST['object_classes'] ) );
|
||||
$redirect = isset( $_POST['redirect'] ) ? $_POST['redirect'] : false;
|
||||
|
||||
$encoded_dn = rawurlencode( $new_dn );
|
||||
$container = get_container( $new_dn );
|
||||
|
||||
// See if there are any presubmit values to work out.
|
||||
if (isset($_POST['presubmit']) && count($_POST['presubmit']) && isset($_POST['template'])) {
|
||||
$templates = new Templates($ldapserver->server_id);
|
||||
$template = $templates->GetTemplate($_POST['template']);
|
||||
|
||||
foreach ($_POST['presubmit'] as $attr) {
|
||||
$_POST['attrs'][] = $attr;
|
||||
$_POST['form'][$attr] = $templates->EvaluateDefault($ldapserver,$template['attribute'][$attr]['presubmit'],$_POST['container']);
|
||||
$_POST['vals'][] = $_POST['form'][$attr];
|
||||
}
|
||||
|
||||
# @todo: This section needs to be cleaned up, and will be when the old templates are removed. In the mean time...
|
||||
# Rebuild the $_POST['attrs'] & $_POST['vals'], as they can be inconsistent.
|
||||
unset($_POST['attrs']);
|
||||
unset($_POST['vals']);
|
||||
foreach ($_POST['form'] as $attr => $val) {
|
||||
$_POST['attrs'][] = $attr;
|
||||
$_POST['vals'][] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
$vals = isset( $_POST['vals'] ) ? $_POST['vals'] : array();
|
||||
$attrs = isset( $_POST['attrs'] ) ? $_POST['attrs'] : array();
|
||||
|
||||
// build the new entry
|
||||
$new_entry = array();
|
||||
if( isset( $required_attrs ) && is_array( $required_attrs ) ) {
|
||||
foreach( $required_attrs as $attr => $val ) {
|
||||
if( $val == '' )
|
||||
pla_error( sprintf( $lang['create_required_attribute'], htmlspecialchars( $attr ) ) );
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
if( isset( $attrs ) && is_array( $attrs ) ) {
|
||||
foreach( $attrs as $i => $attr ) {
|
||||
if( is_attr_binary( $ldapserver, $attr ) ) {
|
||||
if( isset( $_FILES['vals']['name'][$i] ) && $_FILES['vals']['name'][$i] != '' ) {
|
||||
|
||||
// read in the data from the file
|
||||
$file = $_FILES['vals']['tmp_name'][$i];
|
||||
$f = fopen( $file, 'r' );
|
||||
$binary_data = fread( $f, filesize( $file ) );
|
||||
fclose( $f );
|
||||
|
||||
$val = $binary_data;
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (is_array($vals[$i])) {
|
||||
|
||||
# If the array has blank entries, then ignore them.
|
||||
foreach ($vals[$i] as $value) {
|
||||
# $new_entry[$attr] = $vals[$i];
|
||||
if (trim($value))
|
||||
$new_entry[$attr][] = $value;
|
||||
}
|
||||
} else {
|
||||
$val = isset( $vals[$i] ) ? $vals[$i] : '';
|
||||
|
||||
if( '' !== trim($val) )
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$new_entry['objectClass'] = $object_classes;
|
||||
if( ! in_array( 'top', $new_entry['objectClass'] ) )
|
||||
$new_entry['objectClass'][] = 'top';
|
||||
|
||||
foreach( $new_entry as $attr => $vals ) {
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $new_dn, $attr, $vals ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',
|
||||
$ldapserver->server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$new_dn,$search_href ) );
|
||||
}
|
||||
|
||||
if( ! is_attr_binary( $ldapserver, $attr ) )
|
||||
if( is_array( $vals ) )
|
||||
foreach( $vals as $i => $v )
|
||||
$new_entry[ $attr ][ $i ] = $v;
|
||||
|
||||
else
|
||||
$new_entry[ $attr ] = $vals;
|
||||
}
|
||||
|
||||
//echo "<pre>"; var_dump( $new_dn );print_r( $new_entry ); echo "</pre>";
|
||||
|
||||
// Check the user-defined custom call back first
|
||||
if( true === run_hook ( 'pre_entry_create', array ( 'server_id' => $ldapserver->server_id,'dn' => $new_dn,'attrs' => $new_entry ) ) )
|
||||
$add_result = @ldap_add( $ldapserver->connect(), $new_dn, $new_entry );
|
||||
|
||||
else {
|
||||
pla_error( $lang['create_could_not_add'] );
|
||||
exit;
|
||||
}
|
||||
|
||||
if( $add_result ) {
|
||||
run_hook ( 'post_entry_create', array ( 'server_id' => $ldapserver->server_id, 'dn' => $new_dn, 'attrs' => $new_entry ) );
|
||||
|
||||
if ($redirect)
|
||||
$redirect_url = $redirect;
|
||||
|
||||
else
|
||||
$redirect_url = sprintf('edit.php?server_id=%s&dn=%s',$ldapserver->server_id,rawurlencode($new_dn));
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) ) {
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if( isset( $tree[$ldapserver->server_id][$container] ) ) {
|
||||
$tree[$ldapserver->server_id][$container][] = $new_dn;
|
||||
sort( $tree[$ldapserver->server_id][$container] );
|
||||
$tree_icons[$ldapserver->server_id][$new_dn] = get_icon( $ldapserver, $new_dn );
|
||||
}
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<?php if (isset($tree[$ldapserver->server_id][$container]) || in_array($new_dn,$ldapserver->getBaseDN())) { ?>
|
||||
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
location.href='<?php echo $redirect_url; ?>';
|
||||
</script>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<meta http-equiv="refresh" content="0; url=<?php echo $redirect_url; ?>" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<?php echo $lang['redirecting'] ?> <a href="<?php echo $redirect_url; ?>"><?php echo $lang['here']?></a>.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php } else {
|
||||
pla_error( $lang['create_could_not_add'], $ldapserver->error(), $ldapserver->errno() );
|
||||
}
|
||||
?>
|
175
htdocs/create_form.php
Normal file
@@ -0,0 +1,175 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create_form.php,v 1.30.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* The menu where the user chooses an RDN, Container, and Template for creating a new entry.
|
||||
* After submitting this form, the user is taken to their chosen Template handler.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars
|
||||
* - container (rawurlencoded) (optional)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$step = isset( $_REQUEST['step'] ) ? $_REQUEST['step'] : 1; // defaults to 1
|
||||
$container = $_REQUEST['container'];
|
||||
|
||||
$server_menu_html = server_select_list($ldapserver->server_id,true);
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['createf_choose_temp']?></h3>
|
||||
<center><h3><?php echo $lang['createf_select_temp']?></h3></center>
|
||||
|
||||
<form action="creation_template.php" method="post">
|
||||
<input type="hidden" name="container" value="<?php echo htmlspecialchars( $container ); ?>" />
|
||||
<table class="create">
|
||||
<tr>
|
||||
<td class="heading"><?php echo $lang['server']; ?>:</td>
|
||||
<td><?php echo $server_menu_html; ?></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="heading"><?php echo $lang['template']; ?>:</td>
|
||||
<td>
|
||||
|
||||
<table class="template_display">
|
||||
<tr>
|
||||
<td>
|
||||
<table class="templates">
|
||||
|
||||
<?php
|
||||
$i = -1;
|
||||
|
||||
if ($config->GetValue('template_engine','enable')) {
|
||||
$template_xml = new Templates($ldapserver->server_id);
|
||||
|
||||
if ($config->GetValue('template_engine','disable_old'))
|
||||
$templates = $template_xml->getTemplates();
|
||||
|
||||
else
|
||||
$templates = array_merge($template_xml->getTemplates(),$templates);
|
||||
}
|
||||
|
||||
# Remove non-visable templates.
|
||||
foreach ($templates as $index => $template)
|
||||
if (isset($template['visible']) && (! $template['visible']))
|
||||
unset ($templates[$index]);
|
||||
|
||||
$templates['custom']['title'] = 'Custom';
|
||||
$templates['custom']['icon'] = 'images/object.png';
|
||||
|
||||
$count = count( $templates );
|
||||
foreach( $templates as $name => $template ) {
|
||||
$i++;
|
||||
|
||||
# If the template doesnt have a title, we'll use the desc field.
|
||||
$template['desc'] = isset($template['title']) ? $template['title'] : $template['desc'];
|
||||
|
||||
# Balance the columns properly
|
||||
if( ( count( $templates ) % 2 == 0 && $i == intval( $count / 2 ) ) ||
|
||||
( count( $templates ) % 2 == 1 && $i == intval( $count / 2 ) + 1 ) )
|
||||
|
||||
echo "</table></td><td><table class=\"templates\">";
|
||||
|
||||
# Check and see if this template should be shown in the list
|
||||
$isValid = false;
|
||||
|
||||
if( isset($template['regexp'] ) ) {
|
||||
if( @preg_match( "/".$template['regexp']."/i", $container ) ) {
|
||||
$isValid = true;
|
||||
}
|
||||
|
||||
} else {
|
||||
$isValid = true;
|
||||
|
||||
if (isset($template['invalid']) && $template['invalid'])
|
||||
$isValid = false;
|
||||
} ?>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<?php
|
||||
if (isset($template['invalid']) && $template['invalid'] || (isset($template['handler']) && ! file_exists(TMPLDIR.'creation/'.$template['handler']))) {
|
||||
?>
|
||||
<td class="icon">
|
||||
<img src="images/error.png" />
|
||||
</td>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
|
||||
<td>
|
||||
<input type="radio" name="template" value="<?php echo htmlspecialchars($name);?>"
|
||||
id="<?php echo htmlspecialchars($name); ?>"
|
||||
|
||||
<?php
|
||||
if( 0 == strcasecmp( 'Custom', $name ) ) echo ' checked';
|
||||
if( ! $isValid ) echo ' disabled';
|
||||
?> />
|
||||
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<td class="icon">
|
||||
<label for="<?php echo htmlspecialchars($name);?>">
|
||||
<img src="<?php echo $template['icon']; ?>" />
|
||||
</label>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<label for="<?php echo htmlspecialchars($name);?>">
|
||||
|
||||
<?php if( 0 == strcasecmp( 'Custom', $template['desc'] ) ) echo '<b>';
|
||||
|
||||
if( ! $isValid )
|
||||
if (isset($template['invalid']) && $template['invalid'])
|
||||
printf('<span style="color: gray"><acronym title="%s">',$lang['template_invalid']);
|
||||
else
|
||||
printf('<span style="color: gray"><acronym title="%s">',$lang['template_restricted']);
|
||||
|
||||
echo htmlspecialchars( $template['desc'] );
|
||||
|
||||
if( ! $isValid ) echo "</acronym></span>";
|
||||
if( 0 == strcasecmp( 'Custom', $template['desc'] ) ) echo '</b>'; ?>
|
||||
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php } // end foreach ?>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><center><input type="submit" name="submit" value="<?php echo $lang['proceed_gt']?>" /></center></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
71
htdocs/creation_template.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/creation_template.php,v 1.29 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* This file simply acts as a plugin grabber for the creator templates in
|
||||
* the directory templates/creation/
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* server_id
|
||||
* Expected POST vars:
|
||||
* template
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @deprecated This file is no longer need when the template engine is up and running.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($config->GetValue('template_engine','enable') && (! is_numeric($_REQUEST['template']))) {
|
||||
require './template_engine.php';
|
||||
die();
|
||||
}
|
||||
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$template = (isset($_REQUEST['template']) ? $_REQUEST['template'] : null);
|
||||
! is_null($template) or pla_error($lang['ctemplate_no_template']);
|
||||
|
||||
if ($template == 'custom') {
|
||||
foreach ($templates as $id => $template) {
|
||||
if ($template['handler'] == 'custom.php') {
|
||||
$template = $id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isset($templates[$template]) or pla_error(sprintf($lang['invalid_template'], htmlspecialchars($template)));
|
||||
$template_id = $template;
|
||||
$template = isset($templates[$template]) ? $templates[$template_id] : null;
|
||||
|
||||
if (! array_key_exists('no_header',$template)) {
|
||||
include './header.php';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['ctemplate_on_server']?> '<?php echo htmlspecialchars($ldapserver->name); ?>', <?php echo $lang['using_template']?> '<?php echo htmlspecialchars($template['desc']); ?>'</h3>
|
||||
|
||||
<?php }
|
||||
|
||||
$handler = TMPLDIR.'creation/' . $template['handler'];
|
||||
|
||||
if (! file_exists($handler))
|
||||
pla_error(sprintf($lang['template_does_not_exist'],htmlspecialchars($template['handler'])));
|
||||
|
||||
if (! is_readable($handler))
|
||||
pla_error(sprintf($lang['template_not_readable'],htmlspecialchars($template['handler'])));
|
||||
|
||||
include $handler;
|
||||
|
||||
if (! array_key_exists('no_header',$template))
|
||||
echo "</body>\n</html>";
|
||||
?>
|
@@ -1,10 +1,16 @@
|
||||
/* $Header: /cvsroot/phpldapadmin/phpldapadmin/style.css,v 1.34 2004/04/27 12:28:22 uugdave Exp $ */
|
||||
/* $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/css/style.css,v 1.44 2005/03/12 14:03:36 wurley Exp $ */
|
||||
span.hint {
|
||||
font-size: small;
|
||||
font-weight: normal;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
span.warning {
|
||||
font-size: small;
|
||||
font-weight: normal;
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
span.x-small {
|
||||
font-size: x-small;
|
||||
}
|
||||
@@ -81,7 +87,7 @@ table.error tr td h2 {
|
||||
}
|
||||
|
||||
table.error tr td.img {
|
||||
vertical-align: center;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
}
|
||||
@@ -124,9 +130,13 @@ table.browse tr td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.template_display tr td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.templates tr td {
|
||||
text-align: left;
|
||||
vertical-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table.templates tr {
|
||||
@@ -139,7 +149,7 @@ table.templates td.icon {
|
||||
|
||||
table.exporters tr td {
|
||||
text-align: left;
|
||||
vertical-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table.exporters tr {
|
||||
@@ -274,11 +284,32 @@ h3.subtitle {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
table.comp_dn {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
table.comp_dn tr {
|
||||
width: 200px;
|
||||
}
|
||||
table.comp_dn tr td.attr {
|
||||
background-color: #eee;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.comp_dn tr td.attr_note {
|
||||
text-align: right;
|
||||
background-color: #eee;
|
||||
padding-right: 50px;
|
||||
}
|
||||
|
||||
table.edit_dn {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
width: 500px;
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
table.edit_dn input {
|
||||
@@ -288,14 +319,14 @@ table.edit_dn input {
|
||||
table.edit_dn input.val {
|
||||
font-size: 14px;
|
||||
width: 350px;
|
||||
font-family: arial, helvetica, sans-serif
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
table.edit_dn textarea.val {
|
||||
font-size: 14px;
|
||||
width: 350px;
|
||||
font-family: arial, helvetica, sans-serif
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
@@ -314,6 +345,11 @@ table.edit_dn tr td.heading {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.edit_dn tr td.attr_note {
|
||||
text-align: right;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
table.edit_dn tr td.attr a {
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
@@ -326,15 +362,21 @@ table.edit_dn tr td.attr a:hover {
|
||||
|
||||
table.edit_dn tr td.val {
|
||||
text-align: left;
|
||||
vertical-align: center;
|
||||
vertical-align: middle;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 80px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
|
||||
/** When an attr is updated, it is highlighted to indicate such */
|
||||
table.edit_dn tr.updated_attr td.attr {
|
||||
border-top: 1px dashed green;
|
||||
border-left: 1px dashed green;
|
||||
background-color: #ded;
|
||||
}
|
||||
|
||||
table.edit_dn tr.updated_attr td.attr_note {
|
||||
border-top: 1px dashed green;
|
||||
border-right: 1px dashed green;
|
||||
background-color: #ded;
|
||||
}
|
||||
@@ -437,10 +479,40 @@ form.new_value {
|
||||
margin-left: 70px;
|
||||
}
|
||||
|
||||
table.search_result_table {
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
empty-cells: show;
|
||||
}
|
||||
|
||||
table.search_result_table td {
|
||||
vertical-align: top;
|
||||
border: 1px solid gray;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table.search_result_table th {
|
||||
border: 1px solid gray;
|
||||
padding: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.search_result_table tr.highlight {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
|
||||
ul.search {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.search_header {
|
||||
background-color: #ddf;
|
||||
width: 100%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.search_result {
|
||||
list-style-type: none;
|
||||
padding: 6px;
|
||||
@@ -560,6 +632,8 @@ p.doc {
|
||||
table.export_form {
|
||||
font-size: 75%;
|
||||
width: 400px;
|
||||
border-spacing: 10px;
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
table.export_form tr td {
|
||||
@@ -568,6 +642,16 @@ table.export_form tr td {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table.form tr td {
|
||||
vertical-align: top;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
|
||||
.attribute_failed {
|
||||
color: red;
|
||||
}
|
||||
|
||||
img.chooser {
|
||||
/* This makes the chooser image line up properly when placed next to a form element in a table cell*/
|
||||
vertical-align: bottom;
|
81
htdocs/delete.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete.php,v 1.23.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes a DN and presents a "job's done" message.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = $_POST['dn'];
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
if (is_null($dn))
|
||||
pla_error($lang['you_must_specify_a_dn']);
|
||||
|
||||
dn_exists($ldapserver,$dn) or pla_error(sprintf($lang['no_such_entry'], '<b>' . pretty_print_dn($dn) . '</b>'));
|
||||
|
||||
// Check the user-defined custom callback first.
|
||||
if (run_hook('pre_entry_delete',array('server_id' => $ldapserver->server_id,'dn' => $dn)))
|
||||
$del_result = @ldap_delete($ldapserver->connect(), $dn);
|
||||
|
||||
else
|
||||
pla_error(sprintf($lang['could_not_delete_entry'],'<b>'.pretty_print_dn($dn).'</b>'));
|
||||
|
||||
if ($del_result) {
|
||||
|
||||
# Custom callback
|
||||
run_hook('post_entry_delete',array('server_id' => $ldapserver->server_id,'dn' => $dn));
|
||||
|
||||
# kill the DN from the tree browser session variable and
|
||||
# refresh the tree viewer frame (left_frame)
|
||||
if (array_key_exists('tree', $_SESSION)) {
|
||||
$tree = $_SESSION['tree'];
|
||||
|
||||
if (isset($tree[$ldapserver->server_id]) && is_array($tree[$ldapserver->server_id])) {
|
||||
|
||||
# does it have children? (it shouldn't, but hey, you never know)
|
||||
if (isset($tree[$ldapserver->server_id][$dn]))
|
||||
unset($tree[$ldapserver->server_id][$dn]);
|
||||
|
||||
# search and destroy
|
||||
foreach ($tree[$ldapserver->server_id] as $tree_dn => $subtree)
|
||||
foreach ($subtree as $key => $sub_tree_dn)
|
||||
if (0 == strcasecmp($sub_tree_dn, $dn))
|
||||
unset($tree[$ldapserver->server_id][$tree_dn][$key]);
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
}
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<center><?php echo sprintf($lang['entry_deleted_successfully'],'<b>'.pretty_print_dn($dn).'</b>'); ?></center>
|
||||
|
||||
<?php
|
||||
} else {
|
||||
pla_error(sprintf($lang['could_not_delete_entry'], '<b>' . pretty_print_dn($dn) . '</b>'),
|
||||
$ldapserver->error(), $ldapserver->errno());
|
||||
}
|
||||
?>
|
54
htdocs/delete_attr.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_attr.php,v 1.13.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes an attribute from an entry with NO confirmation.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
*
|
||||
* On success, redirect to edit.php
|
||||
* On failure, echo an error.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = isset($_POST['dn']) ? $_POST['dn'] : null;
|
||||
$attr = isset($_POST['attr']) ? $_POST['attr'] : null;
|
||||
|
||||
if (! $dn)
|
||||
pla_error($lang['no_dn_specified']);
|
||||
|
||||
if (! $attr)
|
||||
pla_error($lang['no_attr_specified']);
|
||||
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
if (is_attr_read_only($ldapserver,$attr))
|
||||
pla_error(sprintf($lang['attr_is_read_only'],htmlspecialchars($attr)));
|
||||
|
||||
$update_array = array();
|
||||
$update_array[$attr] = array();
|
||||
|
||||
$res = @ldap_modify($ldapserver->connect(),$dn,$update_array);
|
||||
if ($res) {
|
||||
$redirect_url = sprintf("edit.php?server_id=%s&dn=%s",$ldapserver->server_id,$encoded_dn);
|
||||
|
||||
foreach($update_array as $attr => $junk)
|
||||
$redirect_url .= "&modified_attrs[]=$attr";
|
||||
|
||||
header("Location: $redirect_url");
|
||||
|
||||
} else {
|
||||
pla_error($lang['could_not_perform_ldap_modify'],$ldapserver->error(),$ldapserver->errno());
|
||||
}
|
||||
?>
|
153
htdocs/delete_form.php
Normal file
@@ -0,0 +1,153 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_form.php,v 1.20 2005/07/22 05:47:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* delete_form.php
|
||||
* Displays a last chance confirmation form to delete a dn.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$rdn = pla_explode_dn( $dn );
|
||||
$rdn = $rdn[0];
|
||||
$children = get_container_contents( $ldapserver,$dn,0,'(objectClass=*)',LDAP_DEREF_NEVER );
|
||||
$has_children = count($children) > 0 ? true : false;
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title"><?php echo sprintf( $lang['delete_dn'], htmlspecialchars( $rdn ) ); ?></b></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver->name; ?></b> <?php echo $lang['distinguished_name']; ?>: <b><?php echo htmlspecialchars( ( $dn ) ); ?></b></h3>
|
||||
|
||||
<?php if( $has_children ) { ?>
|
||||
|
||||
<center><b><?php echo $lang['permanently_delete_children']; ?></b><br /><br />
|
||||
|
||||
<?php
|
||||
flush();
|
||||
|
||||
# get the total number of child objects (whole sub-tree)
|
||||
$s = pla_ldap_search( $ldapserver, 'objectClass=*', $dn, array('dn'), 'sub' );
|
||||
$sub_tree_count = count( $s );
|
||||
?>
|
||||
|
||||
<table class="delete_confirm">
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<?php echo sprintf( $lang['entry_is_root_sub_tree'], $sub_tree_count ); ?>
|
||||
<small>(<a href="search.php?search=true&server_id=<?php echo $ldapserver->server_id; ?>&filter=<?php echo rawurlencode('objectClass=*'); ?>&base_dn=<?php echo $encoded_dn; ?>&form=advanced&scope=sub"><?php echo $lang['view_entries']; ?></a>)</small>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<?php echo sprintf( $lang['confirm_recursive_delete'], ($sub_tree_count-1) ); ?><br />
|
||||
<br />
|
||||
<small><?php echo $lang['confirm_recursive_delete_note']; ?></small>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<center>
|
||||
<form action="rdelete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="submit" class="scary" value="<?php echo sprintf( $lang['delete_all_x_objects'], $sub_tree_count ); ?>" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php flush(); ?>
|
||||
<br />
|
||||
<br />
|
||||
<?php echo $lang['list_of_entries_to_be_deleted']; ?><br />
|
||||
|
||||
<select size="<?php echo min( 10, $sub_tree_count );?>" multiple disabled style="background:white; color:black;width:500px" >
|
||||
<?php $i=0;
|
||||
foreach( $s as $dn => $junk ) {
|
||||
$i++; ?>
|
||||
|
||||
<option><?php echo $i; ?>. <?php echo htmlspecialchars( ( $dn ) ); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
|
||||
<br />
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<center>
|
||||
<table class="delete_confirm">
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $lang['sure_permanent_delete_object']; ?><br />
|
||||
<br />
|
||||
<nobr><acronym title="<?php echo $lang['distinguished_name']; ?>"><?php echo $lang['dn']; ?></acronym>: <b><?php echo pretty_print_dn( $dn ); ?></b><nobr><br />
|
||||
<nobr><?php echo $lang['server']; ?>: <b><?php echo htmlspecialchars($ldapserver->name); ?></b></nobr><br />
|
||||
<br />
|
||||
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<center>
|
||||
<form action="delete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['delete']; ?>" class="scary" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,9 +1,16 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/documentation.php,v 1.2 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/documentation.php,v 1.9 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
include 'common.php';
|
||||
include 'header.php';
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
//include './header.php';
|
||||
|
||||
echo "<body>";
|
||||
|
||||
$view = isset( $_GET['view'] ) ? $_GET['view'] : false;
|
||||
switch( $view ) {
|
||||
@@ -11,7 +18,7 @@ switch( $view ) {
|
||||
echo "<h3 class=\"title\">phpLDAPadmin Credits</h3>";
|
||||
echo "<pre>";
|
||||
echo "<small>";
|
||||
include 'doc/CREDITS';
|
||||
include DOCDIR.'CREDITS';
|
||||
echo "</small>";
|
||||
echo "</pre>";
|
||||
echo "</body>";
|
||||
@@ -22,7 +29,7 @@ switch( $view ) {
|
||||
echo "<h3 class=\"title\">phpLDAPadmin ChangeLog</h3>";
|
||||
echo "<pre>";
|
||||
echo "<small>";
|
||||
include 'doc/ChangeLog';
|
||||
include DOCDIR.'ChangeLog';
|
||||
echo "</small>";
|
||||
echo "</pre>";
|
||||
echo "</body>";
|
||||
@@ -43,5 +50,3 @@ switch( $view ) {
|
||||
|
||||
<h3 class="doc">Modification Templates</h3>
|
||||
<p class="doc">TODO: Write me.</p>
|
||||
|
||||
|
52
htdocs/donate.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/donate.php,v 1.7 2005/02/26 12:35:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
include './common.php';
|
||||
include './header.php';
|
||||
|
||||
$donate_base_href="https://sourceforge.net/donate/index.php?group_id=61828&type=0";
|
||||
$amounts = array( 10, 20, 50, 100 );
|
||||
?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title">Donate</h3>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<p style="text-align: center"><?php echo $lang['donation_instructions']; ?></p>
|
||||
<br />
|
||||
|
||||
<table style="width: 100%; font-size: 12px">
|
||||
<tr>
|
||||
<?php foreach( $amounts as $amount ) { ?>
|
||||
|
||||
<td align="center">
|
||||
<a href="<?php echo $donate_base_href; ?>&amt=<?php echo $amount; ?>" target="new">
|
||||
<img src="images/paypal-donate.png"
|
||||
alt="[<?php echo sprintf( $lang['donate_amount'], '$US ' . $amount ); ?>]"
|
||||
title="<?php echo sprintf( $lang['donate_amount'], '$US ' . $amount ); ?>" /></a>
|
||||
</td>
|
||||
|
||||
<?php } ?>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<?php foreach( $amounts as $amount ) { ?>
|
||||
<td align="center"><?php echo sprintf( $lang['donate_amount'], '$' . $amount ); ?></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
</body>
|
||||
</html>
|
44
htdocs/download_binary_attr.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/download_binary_attr.php,v 1.12.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = rawurldecode($_GET['dn']);
|
||||
$attr = $_GET['attr'];
|
||||
|
||||
# if there are multiple values in this attribute, which one do you want to see?
|
||||
$value_num = isset($_GET['value_num']) ? $_GET['value_num'] : 0;
|
||||
|
||||
dn_exists($ldapserver,$dn) or
|
||||
pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn)));
|
||||
|
||||
$search = @ldap_read($ldapserver->connect(),$dn,"(objectClass=*)",array($attr),0,0,0,$config->GetValue('deref','view'));
|
||||
if (! $search)
|
||||
pla_error($lang['error_performing_search'],$ldapserver->error(),$ldapserver->errno());
|
||||
|
||||
$entry = ldap_first_entry($ldapserver->connect(),$search);
|
||||
$attrs = ldap_get_attributes($ldapserver->connect(),$entry);
|
||||
$attr = ldap_first_attribute($ldapserver->connect(),$entry,$attrs);
|
||||
$values = ldap_get_values_len($ldapserver->connect(),$entry,$attr);
|
||||
$count = $values['count'];
|
||||
|
||||
// Dump the binary data to the browser
|
||||
header("Content-type: octet-stream");
|
||||
header("Content-disposition: attachment; filename=$attr");
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
echo $values[$value_num];
|
||||
?>
|
59
htdocs/edit.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/edit.php,v 1.56 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays the specified dn from the specified server for editing
|
||||
* in its template as determined by get_template(). This is a simple
|
||||
* shell for displaying entries. The real work is done by the templates
|
||||
* found in tempaltes/modification/
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - use_default_template (optional) If set, use the default template no matter what
|
||||
* - Other vars may be set and used by the modification templates
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = isset($_GET['dn']) ? $_GET['dn'] : false;
|
||||
$dn !== false or pla_error($lang['missing_dn_in_query_string']);
|
||||
|
||||
$decoded_dn = rawurldecode($dn);
|
||||
$encoded_dn = rawurlencode($decoded_dn);
|
||||
|
||||
/* Template authors may wish to present the user with a link back to the default, generic
|
||||
template for editing. They may use this as the target of the href to do so.
|
||||
@deprectated
|
||||
*/
|
||||
$default_href = sprintf("edit.php?server_id=%s&dn=%s&use_default_template=true",$ldapserver->server_id,$encoded_dn);
|
||||
$use_default_template = isset( $_GET['use_default_template'] ) || $config->GetValue('template_engine','enable');
|
||||
|
||||
if( $use_default_template ) {
|
||||
if ($config->GetValue('template_engine','enable'))
|
||||
require './template_engine.php';
|
||||
else
|
||||
require TMPLDIR.'modification/default.php';
|
||||
|
||||
} else {
|
||||
$template = get_template($ldapserver,$dn);
|
||||
$template_file = TMPLDIR."modification/$template.php";
|
||||
|
||||
if (file_exists($template_file))
|
||||
require $template_file;
|
||||
|
||||
else {
|
||||
printf('%s <b>%s</b> %s<br />',$lang['missing_template_file'],$template_file,$lang['using_default']);
|
||||
require TMPLDIR.'modification/default.php';
|
||||
}
|
||||
}
|
||||
?>
|
115
htdocs/entry_chooser.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/entry_chooser.php,v 1.26.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Display a selection (popup window) to pick a DN.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$container = isset($_GET['container']) ? rawurldecode($_GET['container']) : false;
|
||||
$return_form_element = isset($_GET['form_element']) ? htmlspecialchars($_GET['form_element']) : null;
|
||||
$rdn = isset($_GET['rdn']) ? htmlspecialchars($_GET['rdn']) : null;
|
||||
|
||||
include "./header.php";
|
||||
|
||||
printf('<h3 class="subtitle">%s</h3>',$lang['entry_chooser_title']);
|
||||
flush();
|
||||
?>
|
||||
|
||||
<script language="javascript">
|
||||
function returnDN( dn ) {
|
||||
opener.document.<?php echo $return_form_element; ?>.value = dn;
|
||||
close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
if ($container) {
|
||||
printf('%s<b>%s</b>',$lang['server_colon_pare'],htmlspecialchars($ldapserver->name));
|
||||
print '<br />';
|
||||
printf('%s<b>%s</b>',$lang['look_in'],htmlspecialchars($container));
|
||||
print '<br />';
|
||||
}
|
||||
|
||||
/* Has the use already begun to descend into a specific server tree? */
|
||||
if (isset($ldapserver) && $container !== false) {
|
||||
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn_list = get_container_contents($ldapserver,$container,0,'(objectClass=*)',$config->GetValue('deref','tree'));
|
||||
sort($dn_list);
|
||||
|
||||
foreach ($ldapserver->getBaseDN() as $base_dn) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('entry_chooser.php: Comparing BaseDN [%s] with container [%s]',9,$base_dn,$container);
|
||||
|
||||
if (! pla_compare_dns($container,$base_dn)) {
|
||||
$parent_container = false;
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s',$return_form_element,$rdn);
|
||||
break;
|
||||
|
||||
} else {
|
||||
$parent_container = get_container($container);
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s&server_id=%s&container=%s',
|
||||
$return_form_element,$rdn,$ldapserver->server_id,rawurlencode($parent_container));
|
||||
}
|
||||
}
|
||||
|
||||
print ' ';
|
||||
printf('<a href="%s" style="text-decoration:none"><img src="images/up.png"> %s</a>',$up_href,$lang['back_up_p']);
|
||||
print '<br />';
|
||||
|
||||
if (! count($dn_list))
|
||||
printf(' (%s)<br />',$lang['no_entries']);
|
||||
|
||||
else
|
||||
foreach ($dn_list as $dn) {
|
||||
$href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn);
|
||||
print ' ';
|
||||
printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a>',
|
||||
$ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn));
|
||||
|
||||
printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn));
|
||||
print '<br />';
|
||||
}
|
||||
|
||||
/* draw the root of the selection tree (ie, list all the servers) */
|
||||
} else {
|
||||
foreach ($ldapservers->GetServerList() as $id) {
|
||||
|
||||
$ldapserver = $ldapservers->Instance($id);
|
||||
|
||||
if ($ldapserver->isVisible()) {
|
||||
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
continue;
|
||||
|
||||
else {
|
||||
printf('<b>%s</b>',htmlspecialchars($ldapserver->name));
|
||||
print '<br />';
|
||||
foreach ($ldapserver->getBaseDN() as $dn) {
|
||||
if (! $dn) {
|
||||
printf('<small> (%s)</small><br />',$lang['could_not_det_base_dn']);
|
||||
|
||||
} else {
|
||||
$href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn);
|
||||
|
||||
print ' ';
|
||||
printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a> ',
|
||||
$ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn));
|
||||
|
||||
printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn));
|
||||
print '<br />';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
@@ -1,55 +1,52 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/expand.php,v 1.15 2004/03/19 20:13:08 i18phpldapadmin Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/expand.php,v 1.22 2005/07/22 05:47:44 wurley Exp $
|
||||
|
||||
|
||||
/*
|
||||
* expand.php
|
||||
/**
|
||||
* This script alters the session variable 'tree', expanding it
|
||||
* at the dn specified in the query string.
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* Note: this script is equal and opposite to collapse.php
|
||||
* @package phpLDAPadmin
|
||||
* @see collapse.php
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require 'common.php';
|
||||
require './common.php';
|
||||
|
||||
// no expire header stuff
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
# no expire header stuff
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
// This allows us to display large sub-trees without running out of time.
|
||||
# This allows us to display large sub-trees without running out of time.
|
||||
@set_time_limit( 0 );
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
pla_ldap_connect( $server_id ) or pla_error( $lang['could_not_connect'] );
|
||||
$contents = get_container_contents( $server_id, $dn );
|
||||
$contents = get_container_contents( $ldapserver, $dn, 0, '(objectClass=*)', $config->GetValue('deref','tree'));
|
||||
|
||||
usort( $contents, 'pla_compare_dns' );
|
||||
$tree[$server_id][$dn] = $contents;
|
||||
|
||||
//echo "<pre>";
|
||||
//var_dump( $contents );
|
||||
//exit;
|
||||
$tree[$ldapserver->server_id][$dn] = $contents;
|
||||
|
||||
foreach( $contents as $dn )
|
||||
$tree_icons[$server_id][$dn] = get_icon( $server_id, $dn );
|
||||
$tree_icons[$ldapserver->server_id][$dn] = get_icon( $ldapserver, $dn );
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
@@ -63,11 +60,10 @@ $random_junk = md5( strtotime( 'now' ) . $time['usec'] );
|
||||
// If cookies were disabled, build the url parameter for the session id.
|
||||
// It will be append to the url to be redirect
|
||||
$id_session_param="";
|
||||
if( SID != "" ){
|
||||
if( SID != "" )
|
||||
$id_session_param = "&".session_name()."=".session_id();
|
||||
}
|
||||
|
||||
session_write_close();
|
||||
|
||||
header( "Location:tree.php?foo=$random_junk#{$server_id}_{$encoded_dn}$id_session_param" );
|
||||
header(sprintf('Location:tree.php?foo=%s#%s_%s%s',$random_junk,$ldapserver->server_id,$encoded_dn,$id_session_param));
|
||||
?>
|
@@ -1,22 +1,43 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/export.php,v 1.6 2004/05/05 23:22:57 xrenard Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export.php,v 1.15 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
require 'export_functions.php';
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
# Fix a bug with IE:
|
||||
ini_set('session.cache_limiter','');
|
||||
|
||||
require './common.php';
|
||||
require LIBDIR.'export_functions.php';
|
||||
|
||||
// get the POST parameters
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$base_dn = isset($_POST['dn']) ? $_POST['dn']:NULL;
|
||||
$server_id = isset($_POST['server_id']) ? $_POST['server_id']:NULL;
|
||||
$format = isset( $_POST['format'] ) ? $_POST['format'] : "unix";
|
||||
$scope = isset($_POST['scope']) ? $_POST['scope'] : 'base';
|
||||
$filter = isset($_POST['filter']) ? $_POST['filter'] : 'objectclass=*';
|
||||
$target = isset($_POST['target']) ? $_POST['target'] : 'display';
|
||||
$save_as_file = isset( $_POST['save_as_file'] ) && $_POST['save_as_file'] == 'on';
|
||||
|
||||
// add system attributes if needed
|
||||
$attributes = array();
|
||||
if( isset( $_POST['sys_attr'] ) ){
|
||||
array_push($attributes,'*');
|
||||
array_push($attributes,'+');
|
||||
}
|
||||
|
||||
isset($_POST['exporter_id']) or pla_error( $lang['must_choose_export_format'] );
|
||||
$exporter_id = $_POST['exporter_id'];
|
||||
isset($exporters[$exporter_id]) or pla_error( $lang['invalid_export_format'] );
|
||||
|
||||
// do some check
|
||||
check_server_id( $server_id ) or pla_error( $lang['bad_server_id'] );
|
||||
have_auth_info( $server_id ) or pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
// Initialisation of other varaiables
|
||||
// Initialisation of other variables
|
||||
$rdn = get_rdn( $base_dn );
|
||||
$friendly_rdn = get_rdn( $base_dn, 1 );
|
||||
$extension = $exporters[$exporter_id]['extension'];
|
||||
@@ -38,7 +59,7 @@ switch( $format ) {
|
||||
}
|
||||
|
||||
// get the decoree,ie the source
|
||||
$plaLdapExporter = new PlaLdapExporter($server_id,'objectclass=*',$base_dn,$scope);
|
||||
$plaLdapExporter = new PlaLdapExporter($server_id,$filter,$base_dn,$scope,$attributes);
|
||||
|
||||
// the decorator
|
||||
// do it that way for the moment
|
||||
@@ -51,6 +72,12 @@ switch($exporter_id){
|
||||
case 1:
|
||||
$exporter = new PlaDsmlExporter($plaLdapExporter);
|
||||
break;
|
||||
case 2:
|
||||
$exporter = new PlaVcardExporter($plaLdapExporter);
|
||||
break;
|
||||
case 3:
|
||||
$exporter = new PlaCSVExporter($plaLdapExporter);
|
||||
break;
|
||||
default:
|
||||
// truly speaking,this default case will never be reached. See check at the bottom.
|
||||
$plaLdapExporter->pla_close();
|
||||
@@ -63,8 +90,12 @@ $exporter->setOutputFormat($br);
|
||||
// prevent script from bailing early for long search
|
||||
@set_time_limit( 0 );
|
||||
|
||||
|
||||
// send the header
|
||||
header( "Content-type: application/download" );
|
||||
if( $save_as_file )
|
||||
header( "Content-type: application/download" );
|
||||
else
|
||||
header( "Content-type: text/plain" );
|
||||
header( "Content-Disposition: filename=$friendly_rdn.".$exporters[$exporter_id]['extension'] );
|
||||
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
|
||||
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
|
150
htdocs/export_form.php
Executable file
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export_form.php,v 1.22 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* export_form.php
|
||||
* --------------------
|
||||
*
|
||||
* Html form to choose an export format(ldif,...)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require LIBDIR.'export_functions.php';
|
||||
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id']:NULL ;
|
||||
$format = isset( $_GET['format'] ) ? $_GET['format'] : get_line_end_format();
|
||||
$scope = isset( $_GET['scope'] ) ? $_GET['scope'] : 'base' ;
|
||||
$exporter_id = isset( $_GET['exporter_id'] ) ? $_GET['exporter_id'] : 0 ;
|
||||
$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : null;
|
||||
$filter = isset( $_GET['filter'] ) ? $_GET['filter'] : '(objectClass=*)';
|
||||
$attributes = isset( $_GET['attributes'] ) ? $_GET['attributes'] : '*';
|
||||
$sys_attr = isset( $_GET['sys_attr'] ) && $_GET['sys_attr'] == 'true' ? true : false;
|
||||
|
||||
$available_formats = array(
|
||||
'unix' => 'UNIX (Linux, BSD)',
|
||||
'mac' => 'Macintosh',
|
||||
'win' => 'Windows'
|
||||
);
|
||||
|
||||
$available_scopes = array(
|
||||
'base' => $lang['scope_base'],
|
||||
'one' => $lang['scope_one'],
|
||||
'sub' => $lang['scope_sub']
|
||||
);
|
||||
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['export']; ?></h3>
|
||||
<br />
|
||||
<center>
|
||||
<form name="export_form" action="export.php" method="POST">
|
||||
<table class="export_form">
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['export']; ?></legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td><?php echo $lang['server']; ?></td>
|
||||
<td><?php print server_select_list(); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="white-space:nowrap"><?php echo $lang['base_dn']; ?></td>
|
||||
<td><nobr><input type="text" name="dn" id="dn" style="width:230px" value="<?php echo htmlspecialchars( $dn ); ?>" /> <?php draw_chooser_link( 'export_form.dn' ); ?></nobr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span style="white-space: nowrap"><?php echo $lang['search_scope']; ?></span></td>
|
||||
<td>
|
||||
<?php foreach( $available_scopes as $id => $desc ) {
|
||||
$id = htmlspecialchars( $id );
|
||||
$desc = htmlspecialchars( $desc ); ?>
|
||||
|
||||
<input type="radio" name="scope" value="<?php echo $id; ?>" id="<?php echo $id; ?>"<?php if($id==$scope) echo ' checked="true"';?> /><label for="<?php echo $id; ?>"><?php echo $desc; ?></label><br />
|
||||
|
||||
<?php } ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $lang['search_filter']; ?></td>
|
||||
<td><input type="text" name="filter" style="width:300px" value="<?php echo htmlspecialchars($filter); ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="checkbox" name="sys_attr" id="sys_attr" <?php if( $sys_attr ) echo 'checked="true" '; ?>/> <label for="sys_attr"><?php echo $lang['include_system_attrs']; ?></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="checkbox" id="save_as_file" name="save_as_file" /><label for="save_as_file"><?php echo $lang['save_as_file']; ?></label></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table style="width: 100%">
|
||||
<tr><td style="width: 50%">
|
||||
<fieldset style="height: 100px">
|
||||
<legend><?php echo $lang['export_format']; ?></legend>
|
||||
|
||||
<?php foreach($exporters as $index => $exporter){?>
|
||||
|
||||
<input type="radio" name="exporter_id" value="<?php echo htmlspecialchars($index); ?>" id="<?php echo htmlspecialchars($index); ?>" <?php if($index==$exporter_id) echo ' checked="true"'; ?> />
|
||||
<label for="<?php echo htmlspecialchars( $index ); ?>"><?php echo htmlspecialchars( $exporter['desc'] ); ?></label><br />
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</fieldset>
|
||||
</td>
|
||||
<td style="width: 50%">
|
||||
<fieldset style="height: 100px">
|
||||
<legend><?php echo $lang['line_ends']; ?></legend>
|
||||
<?php foreach( $available_formats as $id => $desc ) {
|
||||
$id = htmlspecialchars( $id );
|
||||
$desc = htmlspecialchars( $desc );
|
||||
?>
|
||||
|
||||
<input type="radio" name="format" value="<?php echo $id; ?>" id="<?php echo $id; ?>"<?php if($format==$id) echo ' checked="true"'; ?> /><label for="<?php echo $id; ?>"><?php echo $desc; ?></label><br />
|
||||
|
||||
<?php } ?>
|
||||
</fieldset>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<center>
|
||||
<input type="submit" name="target" value="<?php echo $lang['proceed_gt']; ?>" />
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Helper functoin for fetching the line end format.
|
||||
* @return String 'win', 'unix', or 'mac' based on the user's browser..
|
||||
*/
|
||||
function get_line_end_format()
|
||||
{
|
||||
if( is_browser_os_windows() )
|
||||
return 'win';
|
||||
elseif( is_browser_os_unix() )
|
||||
return 'unix';
|
||||
elseif( is_browser_os_mac() )
|
||||
return 'mac';
|
||||
else
|
||||
return 'unix';
|
||||
}
|
49
htdocs/header.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/header.php,v 1.19.2.2 2005/10/25 20:21:15 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
|
||||
// We want to get $language into scope in case we were included
|
||||
// from within a function
|
||||
global $config;
|
||||
$language = isset($config) ? $language = $config->GetValue('appearance','language') : 'auto';
|
||||
|
||||
// text/xml won't work with MSIE, but is very useful for debugging xhtml code.
|
||||
//@header( "Content-type: text/xml; charset=\"UTF-8\"" );
|
||||
@header( "Content-type: text/html; charset=\"UTF-8\"" );
|
||||
|
||||
// XML version and encoding for well-behaved browsers
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $language; ?>" lang="<?php echo $language; ?>" dir="ltr">
|
||||
<head>
|
||||
<?php if (isset($config) && $pagetitle = $config->GetValue('appearance','page_title')) { ?>
|
||||
<title>phpLDAPadmin - <?php echo $pagetitle; ?></title>
|
||||
<?php } else { ?>
|
||||
<title>phpLDAPadmin</title>
|
||||
<?php } ?>
|
||||
<link rel="stylesheet" href="<?php echo CSSDIR ?>style.css" media="screen" />
|
||||
|
||||
<?php if( isset( $server_id ) ) {
|
||||
$custom_file = get_custom_file( $server_id, 'style.css',CSSDIR );
|
||||
|
||||
if( strcmp( $custom_file, 'style.css' ) != 0 ) { ?>
|
||||
<link rel="stylesheet" href="<?php echo $custom_file ?>" media="screen" />
|
||||
<?php }
|
||||
} ?>
|
||||
<script src="<?php echo JSDIR; ?>entry_chooser.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>ie_png_work_around.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>search_util.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>generic_utils.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="js/jscalendar/calendar-blue.css" title="blue" />
|
||||
<script type="text/javascript" src="js/jscalendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="js/jscalendar/lang/calendar-en.js"></script>
|
||||
<script type="text/javascript" src="js/jscalendar/calendar-setup.js"></script>
|
||||
<script type="text/javascript" src="<?php echo JSDIR; ?>date_selector.js"></script>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
</head>
|
28
htdocs/help.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/help.php,v 1.5 2005/02/26 12:35:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
include './common.php';
|
||||
include './header.php';
|
||||
|
||||
$forum_href = get_href( 'forum' );
|
||||
?>
|
||||
|
||||
<body>
|
||||
|
||||
<h3 class="title">Help</h3>
|
||||
<br />
|
||||
<center>
|
||||
<p>Do you have a problem or question?</p>
|
||||
<p>Perhaps you are new to LDAP and need a little guidance?</p>
|
||||
<p>Help is only one click away. Visit the online <a href="<?php echo $forum_href; ?>">phpLDAPadmin support forum</a>.</p>
|
||||
<br />
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 528 B After Width: | Height: | Size: 528 B |
Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 278 B |
BIN
htdocs/images/calendar.png
Normal file
After Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 342 B |
BIN
htdocs/images/compare.png
Normal file
After Width: | Height: | Size: 665 B |
BIN
htdocs/images/countries/af.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/al.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/am.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/an.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ao.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ar.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/at.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/au.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/aw.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/az.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ba.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bb.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bd.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/be.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bf.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bg.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bh.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bi.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bj.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bm.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bn.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bo.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/br.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bs.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bt.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bw.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/by.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/bz.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ca.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/cf.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/cg.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ch.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
htdocs/images/countries/ci.png
Normal file
After Width: | Height: | Size: 1.0 KiB |