/** Delete array of domains * * Deletes a domain by a given id. * Function always succeeds. If the field is not found in the database, thats what we want anyway. * * @param int[] $domains Array of Domain IDs to delete * * @return boolean true on success, false otherwise */ function delete_domains($domains) { global $db; global $pdnssec_use; $error = false; $return = false; $response = $db->beginTransaction(); foreach ($domains as $id) { if (do_hook('verify_permission', 'zone_content_edit_others')) { $perm_edit = "all"; } elseif (do_hook('verify_permission', 'zone_content_edit_own')) { $perm_edit = "own"; } else { $perm_edit = "none"; } $user_is_zone_owner = do_hook('verify_user_is_owner_zoneid', $id); if ($perm_edit == "all" || $perm_edit == "own" && $user_is_zone_owner == "1") { if (is_numeric($id)) { $zone_type = get_domain_type($id); if ($pdnssec_use && $zone_type == 'MASTER') { $zone_name = get_zone_name_from_id($id); dnssec_unsecure_zone($zone_name); } $db->exec("DELETE FROM zones WHERE domain_id=" . $db->quote($id, 'integer')); $db->exec("DELETE FROM domains WHERE id=" . $db->quote($id, 'integer')); $db->exec("DELETE FROM records WHERE domain_id=" . $db->quote($id, 'integer')); $db->query("DELETE FROM records_zone_templ WHERE domain_id=" . $db->quote($id, 'integer')); } else { error(sprintf(ERR_INV_ARGC, "delete_domains", "id must be a number")); $error = true; } } else { error(ERR_PERM_DEL_ZONE); $error = true; } } if (PEAR::isError($response)) { $response = $db->rollback(); $commit = false; } else { $response = $db->commit(); $commit = true; } if (true == $commit && false == $error) { $return = true; } return $return; }
$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"; } if (do_hook('verify_permission', 'zone_meta_edit_others')) { $perm_meta_edit = "all"; } elseif (do_hook('verify_permission', 'zone_meta_edit_own')) { $perm_meta_edit = "own"; } else { $perm_meta_edit = "none"; } $zid = get_zone_id_from_record_id($_GET['id']); $user_is_zone_owner = do_hook('verify_user_is_owner_zoneid', $zid); $zone_type = get_domain_type($zid); $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) {
function add_record($zoneid, $name, $type, $content, $ttl, $prio) { global $db; if (verify_permission('zone_content_edit_others')) { $perm_content_edit = "all"; } elseif (verify_permission('zone_content_edit_own')) { $perm_content_edit = "own"; } else { $perm_content_edit = "none"; } $user_is_zone_owner = verify_user_is_owner_zoneid($zoneid); $zone_type = get_domain_type($zoneid); if ($zone_type == "SLAVE" || $perm_content_edit == "none" || $perm_content_edit == "own" && $user_is_zone_owner == "0") { error(ERR_PERM_ADD_RECORD); return false; } else { if (validate_input(-1, $zoneid, $type, $content, $name, $prio, $ttl)) { $change = time(); 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($zoneid, 'integer') . "," . $db->quote($name, 'text') . "," . $db->quote($type, 'text') . "," . $content . "," . $db->quote($ttl, 'integer') . "," . $db->quote($prio, 'integer') . "," . $db->quote($change, 'integer') . ")"; $response = $db->query($query); if (PEAR::isError($response)) { error($response->getMessage()); return false; } else { if ($type != 'SOA') { update_soa_serial($zoneid); } return true; } } else { return false; } } }