require 'common.php';
$dn = rawurldecode($_POST['dn']);
$server_id = $_POST['server_id'];
$attr = $_POST['attr'];
$val = $_POST['val'];
$val = utf8_encode($val);
$encoded_dn = rawurlencode($dn);
$encoded_attr = rawurlencode($attr);
$is_binary_val = isset($_POST['binary']) ? true : false;
if (!$is_binary_val && $val == "") {
    pla_error("You left the attribute value blank. Please go back and try again.");
}
if (is_server_read_only($server_id)) {
    pla_error("You cannot perform updates while server is in read-only mode");
}
check_server_id($server_id) or pla_error("Bad server_id: " . htmlspecialchars($server_id));
have_auth_info($server_id) or pla_error("Not enough information to login to server. Please check your configuration.");
// 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
if ($is_binary_val) {
    $file = $_FILES['val']['tmp_name'];
    $f = fopen($file, 'r');
    $binary_data = fread($f, filesize($file));
    fclose($f);
    $val = $binary_data;
}
// Automagically hash new userPassword attributes according to the
// chosen in config.php.
if (0 == strcasecmp($attr, 'userpassword')) {
    if ($servers[$server_id]['default_hash'] != '') {
        $enc_type = $servers[$server_id]['default_hash'];
<?php

require 'common.php';
// Common to all templates
$container = $_POST['container'];
$server_id = $_POST['server_id'];
// Unique to this template
$step = $_POST['step'];
if (!$step) {
    $step = 1;
}
check_server_id($server_id) or die("Bad server_id: " . htmlspecialchars($server_id));
have_auth_info($server_id) or die("Not enough information to login to server. Please check your configuration.");
?>

	<center><h2>New DNS Entry</h2></center>

	<?php 
if ($step == 1) {
    ?>

	<form action="creation_template.php" method="post" name="dns_form">
	<input type="hidden" name="step" value="2" />
	<input type="hidden" name="server_id" value="<?php 
    echo $server_id;
    ?>
" />
	<input type="hidden" name="template" value="<?php 
    echo $_POST['template'];
    ?>
" />
<?php

/*
 * refresh.php
 * This script alters the session variable 'tree', by re-querying
 * the LDAP server to grab the contents of every expanded container.
 *
 * Variables that come in as GET vars:
 *  - server_id
 */
require 'common.php';
$server_id = $_GET['server_id'];
if (!check_server_id($server_id) || !have_auth_info($server_id)) {
    header("Location: tree.php");
}
session_start();
if (!session_is_registered('tree')) {
    header("Location: tree.php");
}
$tree = $_SESSION['tree'];
$tree_icons = $_SESSION['tree_icons'];
// Get the icon for the base object for this server
$base_dn = $servers[$server_id]['base'];
$tree_icons[$server_id][$base_dn] = get_icon($server_id, $base_dn);
// get all the icons and container contents for all expanded entries
if ($tree[$server_id] && is_array($tree[$server_id])) {
    foreach ($tree[$server_id] as $dn => $children) {
        $tree[$server_id][$dn] = get_container_contents($server_id, $dn);
        foreach ($tree[$server_id][$dn] as $child_dn) {
            $tree_icons[$server_id][$child_dn] = get_icon($server_id, $child_dn);
        }
 * 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_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);
function dn_exists($server_id, $dn)
{
    if (!check_server_id($server_id)) {
        return false;
    }
    $ds = pla_ldap_connect($server_id);
    if (!$ds) {
        return false;
    }
    $search_result = @ldap_read($ds, $dn, 'objectClass=*', array('dn'));
    if (!$search_result) {
        return false;
    }
    $num_entries = ldap_count_entries($ds, $search_result);
    if ($num_entries > 0) {
        return true;
    } else {
        return false;
    }
}