$zone_name = get_zone_name_from_id($zid); if (isset($_POST["commit"])) { if ($zone_type == "SLAVE" || $perm_content_edit == "none" || ($perm_content_edit == "own" || $perm_content_edit == "own_as_client") && $user_is_zone_owner == "0") { error(ERR_PERM_EDIT_RECORD); } else { $old_record_info = get_record_from_id($_POST["rid"]); $ret_val = edit_record($_POST); if ($ret_val == "1") { if ($_POST['type'] != "SOA") { update_soa_serial($zid); } success(SUC_RECORD_UPD); $new_record_info = get_record_from_id($_POST["rid"]); log_info(sprintf('client_ip:%s user:%s operation:edit_record' . ' old_record_type:%s old_record:%s old_content:%s old_ttl:%s old_priority:%s' . ' record_type:%s record:%s content:%s ttl:%s priority:%s', $_SERVER['REMOTE_ADDR'], $_SESSION["userlogin"], $old_record_info['type'], $old_record_info['name'], $old_record_info['content'], $old_record_info['ttl'], $old_record_info['prio'], $new_record_info['type'], $new_record_info['name'], $new_record_info['content'], $new_record_info['ttl'], $new_record_info['prio'])); if ($pdnssec_use) { if (dnssec_rectify_zone($zid)) { success(SUC_EXEC_PDNSSEC_RECTIFY_ZONE); } } } } } echo " <h2>" . _('Edit record in zone') . " \"<a href=\"edit.php?id=" . $zid . "\">" . $zone_name . "</a>\"</h2>\n"; if ($perm_view == "none" || $perm_view == "own" && $user_is_zone_owner == "0") { error(ERR_PERM_VIEW_RECORD); } else { $record = get_record_from_id($_GET["id"]); echo " <form method=\"post\" action=\"edit_record.php?domain=" . $zid . "&id=" . $_GET["id"] . "\">\n"; echo " <table>\n"; echo " <tr>\n"; echo " <th>" . _('Name') . "</th>\n";
/** Add a record * * This function validates it if correct it inserts it into the database. * * @param int $zone_id Zone ID * @param string $name Name part of record * @param string $type Type of record * @param string $content Content of record * @param int $ttl Time-To-Live of record * @param int $prio Priority of record * * @return boolean true if successful */ function add_record($zone_id, $name, $type, $content, $ttl, $prio) { global $db; global $pdnssec_use; if (do_hook('verify_permission', 'zone_content_edit_others')) { $perm_content_edit = "all"; } elseif (do_hook('verify_permission', 'zone_content_edit_own')) { $perm_content_edit = "own"; } elseif (do_hook('verify_permission', 'zone_content_edit_own_as_client')) { $perm_content_edit = "own_as_client"; } else { $perm_content_edit = "none"; } $user_is_zone_owner = do_hook('verify_user_is_owner_zoneid', $zone_id); $zone_type = get_domain_type($zone_id); if ($zone_type == "SLAVE" || $perm_content_edit == "none" || ($perm_content_edit == "own" || $perm_content_edit == "own_as_client") && $user_is_zone_owner == "0") { error(ERR_PERM_ADD_RECORD); return false; } else { $response = $db->beginTransaction(); if (validate_input(-1, $zone_id, $type, $content, $name, $prio, $ttl)) { $change = time(); $name = strtolower($name); // powerdns only searches for lower case records if ($type == "SPF" || $type == "TXT") { $content = $db->quote(stripslashes('\\"' . $content . '\\"'), 'text'); } else { $content = $db->quote($content, 'text'); } $query = "INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date) VALUES (" . $db->quote($zone_id, 'integer') . "," . $db->quote($name, 'text') . "," . $db->quote($type, 'text') . "," . $content . "," . $db->quote($ttl, 'integer') . "," . $db->quote($prio, 'integer') . "," . $db->quote($change, 'integer') . ")"; $response = $db->exec($query); if (PEAR::isError($response)) { error($response->getMessage()); $response = $db->rollback(); return false; } else { $response = $db->commit(); if ($type != 'SOA') { update_soa_serial($zone_id); } if ($pdnssec_use) { dnssec_rectify_zone($zone_id); } return true; } } else { return false; } } }
} if ($perm_view == "none" || $perm_view == "own" && $user_is_zone_owner == "0") { error(ERR_PERM_VIEW_ZONE); include_once "inc/footer.inc.php"; exit; } if (zone_id_exists($zone_id) == "0") { error(ERR_ZONE_NOT_EXIST); include_once "inc/footer.inc.php"; exit; } if (isset($_POST['sign_zone'])) { $zone_name = get_zone_name_from_id($zone_id); update_soa_serial($zone_id); dnssec_secure_zone($zone_name); dnssec_rectify_zone($zone_id); } if (isset($_POST['unsign_zone'])) { $zone_name = get_zone_name_from_id($zone_id); dnssec_unsecure_zone($zone_name); update_soa_serial($zone_id); } $domain_type = get_domain_type($zone_id); $record_count = count_zone_records($zone_id); $zone_templates = get_list_zone_templ($_SESSION['userid']); $zone_template_id = get_zone_template($zone_id); echo " <h2>" . _('Edit zone') . " \"" . get_zone_name_from_id($zone_id) . "\"</h2>\n"; echo " <div class=\"showmax\">\n"; show_pages($record_count, $iface_rowamount, $zone_id); echo " </div>\n"; $records = get_records_from_domain_id($zone_id, ROWSTART, $iface_rowamount, RECORD_SORT_BY);
} elseif ($dns_third_level_check && get_domain_level($domain) > 2 && domain_exists(get_second_level_domain($domain))) { error($domain . ' failed - ' . ERR_DOMAIN_EXISTS); $error = true; } elseif (domain_exists($domain) || record_name_exists($domain)) { error($domain . ' failed - ' . ERR_DOMAIN_EXISTS); // TODO: repopulate domain name(s) to the form if there was an error occured $error = true; } elseif (add_domain($domain, $owner, $dom_type, '', $zone_template)) { $domain_id = get_zone_id_from_name($domain); success("<a href=\"edit.php?id=" . $domain_id . "\">" . $domain . " - " . SUC_ZONE_ADD . '</a>'); log_info(sprintf('client_ip:%s user:%s operation:add_zone zone:%s zone_type:%s zone_template:%s', $_SERVER['REMOTE_ADDR'], $_SESSION["userlogin"], $domain, $dom_type, $zone_template)); if ($pdnssec_use) { if ($enable_dnssec) { dnssec_secure_zone($domain); } dnssec_rectify_zone($domain_id); } } } if (false === $error) { unset($domains, $owner, $dom_type, $zone_template); } } if ($zone_master_add != "1") { error(ERR_PERM_ADD_ZONE_MASTER); } else { echo " <h2>" . _('Add master zone') . "</h2>\n"; $available_zone_types = array("MASTER", "NATIVE"); $users = do_hook('show_users'); $zone_templates = get_list_zone_templ($_SESSION['userid']); echo " <form method=\"post\" action=\"add_zone_master.php\">\n";