// delete each zone one by one if admin or no usergroup if ($config->usergroups && $group->getGroupRights($user->userid) == 'A' || !$config->usergroups) { if ($config->usergroups) { $zonelist = $group->listallzones(); } else { $zonelist = $user->listallzones(); } while ($otherzones = array_pop($zonelist)) { $zone = new Zone($otherzones[0], $otherzones[1], $otherzones[2]); if ($zone->zonetype == 'P') { $currenttype = $l['str_primary']; } else { $currenttype = $l['str_secondary']; } $content .= sprintf($l['str_deleting_x_x_from_x'], $zone->zonename, $currenttype, $config->sitename) . '...<br>'; if (!$zone->zoneDelete()) { $content .= $zone->error . ' ' . $l['str_errors_occured_during_deletion_plz_try_again'] . '<br> ' . sprintf($l['str_if_problem_persists_x_contact_us_x'], '<a href="mailto:' . $config->contactemail . '">', '</a>') . '<p >'; $localerror = 1; } else { $content .= $l['str_zone_successfully_deleted'] . '<p >'; } } // end while zone } // end zones has to be deleted // delete user // if group admin, delete grouplogs if (!$localerror) { if ($config->usergroups) { if ($config->userlogs) { if ($group->getGroupRights($user->userid) == 'A') {
/** * Takes list of items to be deleted, and process them * *@access public *@param array $delete list of items cname(alias), a(name), ns(name), etc.. *@return string text of result (Deleting XXX record... Ok<br>) */ function delete($delete, $updatereverse, $updatea) { global $db; global $html, $l; $result = ''; // for each delete entry, delete item cname(alias), a(name), ns(name), // mx(name) while (list($key, $value) = each($delete)) { if ($value != "") { $newvalue = preg_replace("/^.*\\(([^\\)]+)\\)/", "\\1", $value); // name of item to be deleted: preg_match("/^(.*)\\(/", $value, $item); $item = $item[1]; switch ($item) { case "www": preg_match("/^(.*)-(.*)/", $newvalue, $item); $valname = $item[1]; $valid = $item[2]; $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='WWW' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_www_x'], xssafe($valname)) . "... "; break; case "srv": preg_match("/^(.*)-(.*)/", $newvalue, $item); $valname = $item[1]; $valid = $item[2]; $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='SRV' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_srv_x'], xssafe($valname)) . "... "; break; case "cname": preg_match("/^(.*)-(.*)/", $newvalue, $item); $valname = $item[1]; $valid = $item[2]; // www IN CNAME toto. $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='CNAME' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_cname_x'], xssafe($valname)) . "... "; break; case "a": // www IN A IP preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $val1 = $item[1]; $val2 = $item[2]; if (preg_match("/^(.*)-(.*)/", $val2, $itembis)) { $valid = $itembis[1]; $valip = $itembis[2]; } else { $valid = 0; $valip = $val2; } $result .= $this->DeleteARecord($val1, $valid, $valip, $updatereverse); $query = ""; break; case "aaaa": // www IN AAAA IPv6 preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $val1 = $item[1]; $val2 = $item[2]; # TODO: use DeleteARecord function(!) $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='AAAA' AND id='" . mysql_real_escape_string($val2) . "'"; $result .= sprintf($l['str_primary_deleting_aaaa_x'], xssafe($val1)) . "... "; break; case "txt": // www IN TXT String preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $val1 = $item[1]; $val2 = $item[2]; $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='TXT' AND id='" . mysql_real_escape_string($val2) . "' "; $result .= sprintf($l['str_primary_deleting_txt_x'], xssafe($val1)) . "... "; break; case "ptr": // ip IN PTR name preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $val1 = $item[1]; $val2 = $item[2]; preg_match("/^(.*)-(.*)/", $val2, $itembis); $valid = $itembis[1]; $valname = $itembis[2]; $result .= $this->DeletePTRRecord($val1, $valid, $valname, $updatea); $query = ""; break; case "ns": preg_match("/^(.*)-(.*)/", $newvalue, $item); $valname = $item[1]; $valid = $item[2]; // IN NS name $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='NS' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_ns_x'], xssafe($valname)) . "... "; break; case "mx": preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $valname = $item[1]; $valid = $item[2]; // * IN MX pref name $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='MX' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_mx_x'], xssafe($valname)) . "... "; break; case "subns": // newzone IN NS ns.name preg_match("/^(.*)\\/(.*)/", $newvalue, $item); $val1 = $item[1]; $val2 = $item[2]; preg_match("/^(.*)-(.*)/", $val2, $itembis); $valname = $item[1]; $valid = $item[2]; $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='SUBNS' AND id='" . mysql_real_escape_string($valid) . "'"; $result .= sprintf($l['str_primary_deleting_sub_zone_x'], xssafe($valname)) . "... "; break; case "delegate": // $newvalue: XX-YY list($from, $to) = split('-', $newvalue); // remove CNAMEs for ($cnamecounter = intval($from); $cnamecounter <= intval($to); $cnamecounter++) { $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='CNAME' AND val1='" . $cnamecounter . "'"; $res = $db->query($query); if ($db->error()) { $this->error = $l['str_trouble_with_db']; } } // remove NS $query = "DELETE FROM dns_record WHERE zoneid='" . $this->zoneid . "'\n AND type='SUBNS' AND val1='" . mysql_real_escape_string($newvalue) . "'"; $res = $db->query($query); if ($db->error()) { $this->error = $l['str_trouble_with_db']; } // delete zone // use zoneDelete() $query = "SELECT userid FROM dns_zone WHERE zone='" . mysql_real_escape_string($newvalue) . "." . $this->zonename . "' AND zonetype='P'"; $res = $db->query($query); $line = $db->fetch_row($res); $zonetodelete = new Zone($newvalue . "." . $this->zonename, 'P', '', $line[0]); $zonetodelete->zoneDelete(); // delete DELEGATE record $query = "DELETE FROM dns_record\n WHERE zoneid='" . $this->zoneid . "'\n AND type='DELEGATE' AND val1='" . mysql_real_escape_string($newvalue) . "'"; break; } } if (!empty($query)) { $res = $db->query($query); if ($db->error()) { $this->error = $l['str_trouble_with_db']; } else { $result .= $l['str_primary_deleting_ok'] . "<br>\n"; } } } return $result; }