mirror of
https://github.com/tuxis-ie/nsedit.git
synced 2025-04-19 20:09:14 +03:00
We can now import, create AND delete zones
This commit is contained in:
parent
c8774fc05e
commit
2cc92e6842
2 changed files with 37 additions and 39 deletions
|
@ -12,6 +12,7 @@ class Zone {
|
|||
$this->soa_edit_api = '';
|
||||
$this->keyinfo = '';
|
||||
$this->account = '';
|
||||
$this->zone = false;
|
||||
$this->nameservers = Array();
|
||||
$this->rrsets = Array();
|
||||
$this->masters = Array();
|
||||
|
@ -49,6 +50,10 @@ class Zone {
|
|||
}
|
||||
}
|
||||
|
||||
public function importdata($data) {
|
||||
$this->zone = $data;
|
||||
}
|
||||
|
||||
public function setkeyinfo($info) {
|
||||
$this->keyinfo = $info;
|
||||
}
|
||||
|
@ -162,21 +167,24 @@ class Zone {
|
|||
public function export() {
|
||||
$ret = Array();
|
||||
$ret['account'] = $this->account;
|
||||
$ret['nameservers'] = $this->nameservers;
|
||||
$ret['kind'] = $this->kind;
|
||||
$ret['name'] = $this->name;
|
||||
$ret['soa_edit'] = $this->soa_edit;
|
||||
$ret['soa_edit_api'] = $this->soa_edit_api;
|
||||
if ($this->zone) {
|
||||
$ret['zone'] = $this->zone;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$ret['dnssec'] = $this->dnssec;
|
||||
if ($this->dnssec) {
|
||||
$ret['keyinfo'] = $this->keyinfo;
|
||||
}
|
||||
$ret['id'] = $this->id;
|
||||
$ret['kind'] = $this->kind;
|
||||
$ret['masters'] = $this->masters;
|
||||
$ret['name'] = $this->name;
|
||||
if (count($this->nameservers) > 0) {
|
||||
$ret['nameservers'] = $this->nameservers;
|
||||
}
|
||||
$ret['rrsets'] = $this->export_rrsets();
|
||||
$ret['serial'] = $this->serial;
|
||||
$ret['soa_edit'] = $this->soa_edit;
|
||||
$ret['soa_edit_api'] = $this->soa_edit_api;
|
||||
$ret['url'] = $this->url;
|
||||
|
||||
return $ret;
|
||||
|
|
54
zones.php
54
zones.php
|
@ -318,6 +318,14 @@ case "listrecords":
|
|||
jtable_respond($records);
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
$zone = $api->loadzone($_POST['id']);
|
||||
$api->deletezone($_POST['id']);
|
||||
|
||||
delete_db_zone($zone['name']);
|
||||
jtable_respond(null, 'delete');
|
||||
break;
|
||||
|
||||
|
||||
case "create":
|
||||
$zonename = isset($_POST['name']) ? $_POST['name'] : '';
|
||||
|
@ -334,39 +342,29 @@ case "create":
|
|||
jtable_respond(null, 'error', "Not enough data");
|
||||
}
|
||||
|
||||
$createOptions = array(
|
||||
'name' => $zonename,
|
||||
'kind' => $zonekind,
|
||||
);
|
||||
|
||||
$nameservers = array();
|
||||
foreach($_POST['nameserver'] as $ns) {
|
||||
if (isset($ns) && !empty($ns)) {
|
||||
array_push($nameservers, $ns);
|
||||
}
|
||||
}
|
||||
$zone = new Zone();
|
||||
$zone->setkind($zonekind);
|
||||
$zone->setname($zonename);
|
||||
|
||||
if ($zonekind != "Slave") {
|
||||
$createOptions['nameservers'] = $nameservers;
|
||||
if (!isset($_POST['zone'])) {
|
||||
if (0 == count($nameservers)) {
|
||||
jtable_respond(null, 'error', "Require nameservers");
|
||||
if (!isset($_POST['zone']) or isset($_POST['owns'])) {
|
||||
foreach ($_POST['nameserver'] as $ns) {
|
||||
$zone->addnameserver($ns);
|
||||
}
|
||||
} else {
|
||||
$createOptions['zone'] = $_POST['zone'];
|
||||
$zone->importdata($_POST['zone']);
|
||||
}
|
||||
if (isset($defaults['soa_edit_api'])) {
|
||||
$createOptions['soa_edit_api'] = $defaults['soa_edit_api'];
|
||||
$zone->setsoaeditapi($defaults['soa_edit_api']);
|
||||
}
|
||||
if (isset($defaults['soa_edit'])) {
|
||||
$createOptions['soa_edit'] = $defaults['soa_edit'];
|
||||
$zone->setsoaedit($defaults['soa_edit']);
|
||||
}
|
||||
} else { // Slave
|
||||
if (isset($_POST['masters'])) {
|
||||
$createOptions['masters'] = preg_split('/[,;\s]+/', $_POST['masters'], null, PREG_SPLIT_NO_EMPTY);
|
||||
}
|
||||
if (0 == count($createOptions['masters'])) {
|
||||
jtable_respond(null, 'error', "Slave requires master servers");
|
||||
foreach (preg_split('/[,;\s]+/', $_POST['masters'], null, PREG_SPLIT_NO_EMPTY) as $master) {
|
||||
$zone->addmaster($master);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,8 +374,8 @@ case "create":
|
|||
jtable_respond(null, 'error', 'Zone already owned by someone else');
|
||||
}
|
||||
|
||||
$zone = zones_api_request($createOptions);
|
||||
$zonename = $zone['name'];
|
||||
$zone = $api->savezone($zone->export());
|
||||
$zonename = $zone->name;
|
||||
|
||||
if (is_adminuser() && isset($_POST['owner'])) {
|
||||
add_db_zone($zonename, $_POST['owner']);
|
||||
|
@ -454,14 +452,6 @@ case "update":
|
|||
jtable_respond($newZone, 'single');
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
$zone = $api->loadzone($_POST['id']);
|
||||
$api->deletezone($_POST['id']);
|
||||
|
||||
delete_db_zone($zone['name']);
|
||||
jtable_respond(null, 'delete');
|
||||
break;
|
||||
|
||||
case "createrecord":
|
||||
$zone = get_zone_by_url(isset($_GET['zoneurl']) ? $_GET['zoneurl'] : '');
|
||||
$record = create_record($zone, $_POST);
|
||||
|
|
Loading…
Add table
Reference in a new issue