示例#1
0
 // 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') {
示例#2
0
 /**
  * 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;
 }