mirror of
https://github.com/tuxis-ie/nsedit.git
synced 2025-04-20 20:13:40 +03:00
Merge remote-tracking branch 'origin/master' into issue-68
This commit is contained in:
commit
119e1376ee
4 changed files with 83 additions and 27 deletions
|
@ -26,10 +26,10 @@ class Zone {
|
||||||
$this->setAccount($data['account']);
|
$this->setAccount($data['account']);
|
||||||
$this->setSerial($data['serial']);
|
$this->setSerial($data['serial']);
|
||||||
$this->url = $data['url'];
|
$this->url = $data['url'];
|
||||||
if (isset($data['soa_edit']))
|
if (isset($data['soa_edit']) && $data['soa_edit'] != "")
|
||||||
$this->setSoaEdit($data['soa_edit']);
|
$this->setSoaEdit($data['soa_edit']);
|
||||||
if (isset($data['soa_edit_api']))
|
if (isset($data['soa_edit_api']) && $data['soa_edit_api'] != "")
|
||||||
$this->setSoaEditApi($data['soa_edit_api']);
|
$this->setSoaEditApi($data['soa_edit_api'], True);
|
||||||
|
|
||||||
foreach ($data['masters'] as $master) {
|
foreach ($data['masters'] as $master) {
|
||||||
$this->addMaster($master);
|
$this->addMaster($master);
|
||||||
|
@ -76,7 +76,12 @@ class Zone {
|
||||||
$this->soa_edit = $soaedit;
|
$this->soa_edit = $soaedit;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSoaEditApi($soaeditapi) {
|
public function setSoaEditApi($soaeditapi, $overwrite=False) {
|
||||||
|
if (isset($this->soa_edit_api) and $this->soa_edit_api != "") {
|
||||||
|
if ($overwrite === False) {
|
||||||
|
return False;
|
||||||
|
}
|
||||||
|
}
|
||||||
$this->soa_edit_api = $soaeditapi;
|
$this->soa_edit_api = $soaeditapi;
|
||||||
}
|
}
|
||||||
public function setName($name) {
|
public function setName($name) {
|
||||||
|
@ -181,8 +186,12 @@ class Zone {
|
||||||
$ret['nameservers'] = $this->nameservers;
|
$ret['nameservers'] = $this->nameservers;
|
||||||
$ret['kind'] = $this->kind;
|
$ret['kind'] = $this->kind;
|
||||||
$ret['name'] = $this->name;
|
$ret['name'] = $this->name;
|
||||||
$ret['soa_edit'] = $this->soa_edit;
|
if (isset($this->soa_edit) && $this->soa_edit != "") {
|
||||||
$ret['soa_edit_api'] = $this->soa_edit_api;
|
$ret['soa_edit'] = $this->soa_edit;
|
||||||
|
}
|
||||||
|
if (isset($this->soa_edit_api) && $this->soa_edit_api != "") {
|
||||||
|
$ret['soa_edit_api'] = $this->soa_edit_api;
|
||||||
|
}
|
||||||
if ($this->zone) {
|
if ($this->zone) {
|
||||||
$ret['zone'] = $this->zone;
|
$ret['zone'] = $this->zone;
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
|
@ -85,10 +85,12 @@ function string_ends_with($string, $suffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_db() {
|
function get_db() {
|
||||||
global $authdb;
|
global $authdb, $db;
|
||||||
|
|
||||||
$db = new SQLite3($authdb, SQLITE3_OPEN_READWRITE);
|
if (!isset($db)) {
|
||||||
$db->exec('PRAGMA foreign_keys = 1');
|
$db = new SQLite3($authdb, SQLITE3_OPEN_READWRITE);
|
||||||
|
$db->exec('PRAGMA foreign_keys = 1');
|
||||||
|
}
|
||||||
|
|
||||||
return $db;
|
return $db;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +132,6 @@ function get_user_info($u) {
|
||||||
$q->bindValue(1, $u);
|
$q->bindValue(1, $u);
|
||||||
$result = $q->execute();
|
$result = $q->execute();
|
||||||
$userinfo = $result->fetchArray(SQLITE3_ASSOC);
|
$userinfo = $result->fetchArray(SQLITE3_ASSOC);
|
||||||
$db->close();
|
|
||||||
|
|
||||||
return $userinfo;
|
return $userinfo;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +146,6 @@ function do_db_auth($u, $p) {
|
||||||
$q->bindValue(1, $u);
|
$q->bindValue(1, $u);
|
||||||
$result = $q->execute();
|
$result = $q->execute();
|
||||||
$userinfo = $result->fetchArray(SQLITE3_ASSOC);
|
$userinfo = $result->fetchArray(SQLITE3_ASSOC);
|
||||||
$db->close();
|
|
||||||
|
|
||||||
if ($userinfo and $userinfo['password'] and (crypt($p, $userinfo['password']) === $userinfo['password'])) {
|
if ($userinfo and $userinfo['password'] and (crypt($p, $userinfo['password']) === $userinfo['password'])) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -169,7 +169,6 @@ function add_user($username, $isadmin = FALSE, $password = '') {
|
||||||
$q->bindValue(2, $password, SQLITE3_TEXT);
|
$q->bindValue(2, $password, SQLITE3_TEXT);
|
||||||
$q->bindValue(3, (int)(bool) $isadmin, SQLITE3_INTEGER);
|
$q->bindValue(3, (int)(bool) $isadmin, SQLITE3_INTEGER);
|
||||||
$ret = $q->execute();
|
$ret = $q->execute();
|
||||||
$db->close();
|
|
||||||
|
|
||||||
if ($isadmin) {
|
if ($isadmin) {
|
||||||
writelog("Added user $username as admin.");
|
writelog("Added user $username as admin.");
|
||||||
|
@ -207,7 +206,6 @@ function update_user($id, $isadmin, $password) {
|
||||||
writelog("Updating settings for $username. Admin: ".(int)(bool)$isadmin);
|
writelog("Updating settings for $username. Admin: ".(int)(bool)$isadmin);
|
||||||
}
|
}
|
||||||
$ret = $q->execute();
|
$ret = $q->execute();
|
||||||
$db->close();
|
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +223,6 @@ function delete_user($id) {
|
||||||
$q = $db->prepare('DELETE FROM users WHERE id = ?');
|
$q = $db->prepare('DELETE FROM users WHERE id = ?');
|
||||||
$q->bindValue(1, $id, SQLITE3_INTEGER);
|
$q->bindValue(1, $id, SQLITE3_INTEGER);
|
||||||
$ret = $q->execute();
|
$ret = $q->execute();
|
||||||
$db->close();
|
|
||||||
|
|
||||||
writelog("Deleted user " . $userinfo['emailaddress'] . ".");
|
writelog("Deleted user " . $userinfo['emailaddress'] . ".");
|
||||||
return $ret;
|
return $ret;
|
||||||
|
@ -265,6 +262,8 @@ function jtable_respond($records, $method = 'multiple', $msg = 'Undefined errorm
|
||||||
$jTableResult['RecordCount'] = count($records);
|
$jTableResult['RecordCount'] = count($records);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$db = get_db();
|
||||||
|
$db->close();
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
print json_encode($jTableResult);
|
print json_encode($jTableResult);
|
||||||
exit(0);
|
exit(0);
|
||||||
|
@ -314,7 +313,6 @@ function clearlogs() {
|
||||||
|
|
||||||
$db = get_db();
|
$db = get_db();
|
||||||
$q = $db->query('DELETE FROM logs;');
|
$q = $db->query('DELETE FROM logs;');
|
||||||
$db->close();
|
|
||||||
writelog("Logtable truncated.");
|
writelog("Logtable truncated.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,7 +390,6 @@ function writelog($line, $user=False) {
|
||||||
$q->bindValue(':user', $user, SQLITE3_TEXT);
|
$q->bindValue(':user', $user, SQLITE3_TEXT);
|
||||||
$q->bindValue(':log', $line, SQLITE3_TEXT);
|
$q->bindValue(':log', $line, SQLITE3_TEXT);
|
||||||
$q->execute();
|
$q->execute();
|
||||||
$db->close();
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return jtable_respond(null, 'error', $e->getMessage());
|
return jtable_respond(null, 'error', $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
16
index.php
16
index.php
|
@ -619,6 +619,8 @@ $(document).ready(function () {
|
||||||
'SRV': 'SRV',
|
'SRV': 'SRV',
|
||||||
'SSHFP': 'SSHFP',
|
'SSHFP': 'SSHFP',
|
||||||
'TLSA': 'TLSA',
|
'TLSA': 'TLSA',
|
||||||
|
'DNAME': 'DNAME',
|
||||||
|
'DS': 'DS'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
@ -626,6 +628,8 @@ $(document).ready(function () {
|
||||||
'AAAA': 'AAAA',
|
'AAAA': 'AAAA',
|
||||||
'CERT': 'CERT',
|
'CERT': 'CERT',
|
||||||
'CNAME': 'CNAME',
|
'CNAME': 'CNAME',
|
||||||
|
'DNAME': 'DNAME',
|
||||||
|
'DS': 'DS',
|
||||||
'LOC': 'LOC',
|
'LOC': 'LOC',
|
||||||
'MX': 'MX',
|
'MX': 'MX',
|
||||||
'NAPTR': 'NAPTR',
|
'NAPTR': 'NAPTR',
|
||||||
|
@ -1330,6 +1334,18 @@ $(document).ready(function () {
|
||||||
entry: $('#searchlogs-entry').val()
|
entry: $('#searchlogs-entry').val()
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
<?php } else { ?>
|
||||||
|
$('#AboutMe').hide();
|
||||||
|
$('#aboutme').click(function () {
|
||||||
|
$('#MasterZones').hide();
|
||||||
|
$('#SlaveZones').hide();
|
||||||
|
$('#AboutMe').show();
|
||||||
|
});
|
||||||
|
$('#zoneadmin').click(function () {
|
||||||
|
$('#AboutMe').hide();
|
||||||
|
$('#MasterZones').show();
|
||||||
|
$('#SlaveZones').show();
|
||||||
|
});
|
||||||
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
$('#MasterZones').jtable('load');
|
$('#MasterZones').jtable('load');
|
||||||
|
|
56
zones.php
56
zones.php
|
@ -12,10 +12,12 @@ if (!is_csrf_safe()) {
|
||||||
jtable_respond(null, 'error', "Authentication required");
|
jtable_respond(null, 'error', "Authentication required");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$quoteus = array('TXT', 'SPF');
|
||||||
|
|
||||||
/* This function is taken from:
|
/* This function is taken from:
|
||||||
http://pageconfig.com/post/how-to-validate-ascii-text-in-php and got fixed by
|
http://pageconfig.com/post/how-to-validate-ascii-text-in-php and got fixed by
|
||||||
#powerdns */
|
#powerdns */
|
||||||
|
|
||||||
function is_ascii($string) {
|
function is_ascii($string) {
|
||||||
return ( bool ) ! preg_match( '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x80-\\xff]/' , $string );
|
return ( bool ) ! preg_match( '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x80-\\xff]/' , $string );
|
||||||
}
|
}
|
||||||
|
@ -112,7 +114,6 @@ function add_db_zone($zonename, $accountname) {
|
||||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||||
$q->bindValue(2, $accountname, SQLITE3_TEXT);
|
$q->bindValue(2, $accountname, SQLITE3_TEXT);
|
||||||
$q->execute();
|
$q->execute();
|
||||||
$db->close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete_db_zone($zonename) {
|
function delete_db_zone($zonename) {
|
||||||
|
@ -123,7 +124,6 @@ function delete_db_zone($zonename) {
|
||||||
$q = $db->prepare("DELETE FROM zones WHERE zone = ?");
|
$q = $db->prepare("DELETE FROM zones WHERE zone = ?");
|
||||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||||
$q->execute();
|
$q->execute();
|
||||||
$db->close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_zone_account($zonename, $default) {
|
function get_zone_account($zonename, $default) {
|
||||||
|
@ -135,7 +135,6 @@ function get_zone_account($zonename, $default) {
|
||||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||||
$result = $q->execute();
|
$result = $q->execute();
|
||||||
$zoneinfo = $result->fetchArray(SQLITE3_ASSOC);
|
$zoneinfo = $result->fetchArray(SQLITE3_ASSOC);
|
||||||
$db->close();
|
|
||||||
if (isset($zoneinfo['emailaddress']) && $zoneinfo['emailaddress'] != null ) {
|
if (isset($zoneinfo['emailaddress']) && $zoneinfo['emailaddress'] != null ) {
|
||||||
return $zoneinfo['emailaddress'];
|
return $zoneinfo['emailaddress'];
|
||||||
}
|
}
|
||||||
|
@ -143,6 +142,16 @@ function get_zone_account($zonename, $default) {
|
||||||
return $default;
|
return $default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function quote_content($content) {
|
||||||
|
# empty TXT records are ok, otherwise require surrounding quotes: "..."
|
||||||
|
if (strlen($content) == 1 || substr($content, 0, 1) !== '"' || substr($content, -1) !== '"') {
|
||||||
|
# fix quoting: first escape all \, then all ", then surround with quotes.
|
||||||
|
$content = '"'.str_replace('"', '\\"', str_replace('\\', '\\\\', $content)).'"';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
function check_account($zone) {
|
function check_account($zone) {
|
||||||
return is_adminuser() or ($zone->account === get_sess_user());
|
return is_adminuser() or ($zone->account === get_sess_user());
|
||||||
}
|
}
|
||||||
|
@ -165,7 +174,9 @@ case "listslaves":
|
||||||
foreach ($api->listzones($q) as $sresult) {
|
foreach ($api->listzones($q) as $sresult) {
|
||||||
$zone = new Zone();
|
$zone = new Zone();
|
||||||
$zone->parse($sresult);
|
$zone->parse($sresult);
|
||||||
$zone->setAccount(get_zone_account($zone->name, 'admin'));
|
if ($zone->account == '') {
|
||||||
|
$zone->setAccount(get_zone_account($zone->name, 'admin'));
|
||||||
|
}
|
||||||
|
|
||||||
if (!check_account($zone))
|
if (!check_account($zone))
|
||||||
continue;
|
continue;
|
||||||
|
@ -273,7 +284,7 @@ case "create":
|
||||||
$zone->importData($_POST['zone']);
|
$zone->importData($_POST['zone']);
|
||||||
}
|
}
|
||||||
if (isset($defaults['soa_edit_api'])) {
|
if (isset($defaults['soa_edit_api'])) {
|
||||||
$zone->setSoaEditApi($defaults['soa_edit_api']);
|
$zone->setSoaEditApi($defaults['soa_edit_api'], True);
|
||||||
}
|
}
|
||||||
if (isset($defaults['soa_edit'])) {
|
if (isset($defaults['soa_edit'])) {
|
||||||
$zone->setSoaEdit($defaults['soa_edit']);
|
$zone->setSoaEdit($defaults['soa_edit']);
|
||||||
|
@ -319,7 +330,8 @@ case "create":
|
||||||
$api->savezone($zone->export());
|
$api->savezone($zone->export());
|
||||||
|
|
||||||
foreach ($template['records'] as $record) {
|
foreach ($template['records'] as $record) {
|
||||||
$zone->addRecord($record['name'], $record['type'], $record['content']);
|
$name = $record['name'] != '' ? join(Array($record['name'],'.',$zonename)) : $zonename;
|
||||||
|
$zone->addRecord($name, $record['type'], $record['content']);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -334,6 +346,8 @@ case "create":
|
||||||
case "update":
|
case "update":
|
||||||
$zone = new Zone();
|
$zone = new Zone();
|
||||||
$zone->parse($api->loadzone($_POST['id']));
|
$zone->parse($api->loadzone($_POST['id']));
|
||||||
|
if ($zone->setSoaEditApi($defaults['soa_edit_api']) != False)
|
||||||
|
writelog("Set SOA-EDIT-API to ".$defaults['soa_edit_api']." for ",$zone->name);
|
||||||
$zoneaccount = isset($_POST['account']) ? $_POST['account'] : $zone->account;
|
$zoneaccount = isset($_POST['account']) ? $_POST['account'] : $zone->account;
|
||||||
|
|
||||||
if ($zone->account !== $zoneaccount) {
|
if ($zone->account !== $zoneaccount) {
|
||||||
|
@ -360,6 +374,8 @@ case "update":
|
||||||
case "createrecord":
|
case "createrecord":
|
||||||
$zone = new Zone();
|
$zone = new Zone();
|
||||||
$zone->parse($api->loadzone($_GET['zoneid']));
|
$zone->parse($api->loadzone($_GET['zoneid']));
|
||||||
|
if ($zone->setSoaEditApi($defaults['soa_edit_api']) != False)
|
||||||
|
writelog("Set SOA-EDIT-API to ".$defaults['soa_edit_api']." for ",$zone->name);
|
||||||
|
|
||||||
$name = isset($_POST['name']) ? $_POST['name'] : '';
|
$name = isset($_POST['name']) ? $_POST['name'] : '';
|
||||||
$type = $_POST['type'];
|
$type = $_POST['type'];
|
||||||
|
@ -369,12 +385,13 @@ case "createrecord":
|
||||||
$name = $zone->name;
|
$name = $zone->name;
|
||||||
} elseif (string_ends_with($name, '.')) {
|
} elseif (string_ends_with($name, '.')) {
|
||||||
# "absolute" name, shouldn't append zone[name] - but check.
|
# "absolute" name, shouldn't append zone[name] - but check.
|
||||||
$name = substr($name, 0, -1);
|
|
||||||
if (!string_ends_with($name, $zone->name)) {
|
if (!string_ends_with($name, $zone->name)) {
|
||||||
jtable_respond(null, 'error', "Name $name not in zone ".$zone->name);
|
jtable_respond(null, 'error', "Name $name not in zone ".$zone->name);
|
||||||
}
|
}
|
||||||
} else if (!string_ends_with($name, $zone->name)) {
|
} else if (!string_ends_with($name.'.', $zone->name)) {
|
||||||
$name = $name . '.' . $zone->name;
|
$name = $name . '.' . $zone->name;
|
||||||
|
} else {
|
||||||
|
$name = $name.'.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_valid_label($name)) {
|
if (!_valid_label($name)) {
|
||||||
|
@ -387,6 +404,10 @@ case "createrecord":
|
||||||
jtable_respond(null, 'error', "Please only use ASCII-characters in your fields");
|
jtable_respond(null, 'error', "Please only use ASCII-characters in your fields");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (array_search($type, $quoteus) !== FALSE) {
|
||||||
|
$content = quote_content($content);
|
||||||
|
}
|
||||||
|
|
||||||
$record = $zone->addRecord($name, $type, $content, $_POST['disabled'], $_POST['ttl'], $_POST['setptr']);
|
$record = $zone->addRecord($name, $type, $content, $_POST['disabled'], $_POST['ttl'], $_POST['setptr']);
|
||||||
$api->savezone($zone->export());
|
$api->savezone($zone->export());
|
||||||
|
|
||||||
|
@ -397,16 +418,24 @@ case "createrecord":
|
||||||
case "editrecord":
|
case "editrecord":
|
||||||
$zone = new Zone();
|
$zone = new Zone();
|
||||||
$zone->parse($api->loadzone($_GET['zoneid']));
|
$zone->parse($api->loadzone($_GET['zoneid']));
|
||||||
|
if ($zone->setSoaEditApi($defaults['soa_edit_api']) != False)
|
||||||
|
writelog("Set SOA-EDIT-API to ".$defaults['soa_edit_api']." for ",$zone->name);
|
||||||
|
|
||||||
$old_record = decode_record_id(isset($_POST['id']) ? $_POST['id'] : '');
|
$old_record = decode_record_id(isset($_POST['id']) ? $_POST['id'] : '');
|
||||||
|
|
||||||
$rrset = $zone->getRRSet($old_record['name'], $old_record['type']);
|
$rrset = $zone->getRRSet($old_record['name'], $old_record['type']);
|
||||||
$rrset->deleteRecord($old_record['content']);
|
$rrset->deleteRecord($old_record['content']);
|
||||||
$zone->addRecord($_POST['name'], $_POST['type'], $_POST['content'], $_POST['disabled'], $_POST['ttl'], $_POST['setptr']);
|
|
||||||
|
$content = $_POST['content'];
|
||||||
|
if (array_search($type, $quoteus) !== FALSE) {
|
||||||
|
$content = quote_content($content);
|
||||||
|
}
|
||||||
|
|
||||||
|
$zone->addRecord($_POST['name'], $_POST['type'], $content, $_POST['disabled'], $_POST['ttl'], $_POST['setptr']);
|
||||||
|
|
||||||
$api->savezone($zone->export());
|
$api->savezone($zone->export());
|
||||||
|
|
||||||
$record = $zone->getRecord($_POST['name'], $_POST['type'], $_POST['content']);
|
$record = $zone->getRecord($_POST['name'], $_POST['type'], $content);
|
||||||
writelog("Updated record ".$_POST['id']." to ".$record['id']);
|
writelog("Updated record ".$_POST['id']." to ".$record['id']);
|
||||||
jtable_respond($record, 'single');
|
jtable_respond($record, 'single');
|
||||||
break;
|
break;
|
||||||
|
@ -414,6 +443,8 @@ case "editrecord":
|
||||||
case "deleterecord":
|
case "deleterecord":
|
||||||
$zone = new Zone();
|
$zone = new Zone();
|
||||||
$zone->parse($api->loadzone($_GET['zoneid']));
|
$zone->parse($api->loadzone($_GET['zoneid']));
|
||||||
|
if ($zone->setSoaEditApi($defaults['soa_edit_api']) != False)
|
||||||
|
writelog("Set SOA-EDIT-API to ".$defaults['soa_edit_api']." for ",$zone->name);
|
||||||
|
|
||||||
$old_record = decode_record_id(isset($_POST['id']) ? $_POST['id'] : '');
|
$old_record = decode_record_id(isset($_POST['id']) ? $_POST['id'] : '');
|
||||||
$rrset = $zone->getRRSet($old_record['name'], $old_record['type']);
|
$rrset = $zone->getRRSet($old_record['name'], $old_record['type']);
|
||||||
|
@ -444,6 +475,8 @@ case "clone":
|
||||||
|
|
||||||
$srczone = new Zone();
|
$srczone = new Zone();
|
||||||
$srczone->parse($api->loadzone($src));
|
$srczone->parse($api->loadzone($src));
|
||||||
|
if ($srczone->setSoaEditApi($defaults['soa_edit_api']) != False)
|
||||||
|
writelog("Set SOA-EDIT-API to ".$defaults['soa_edit_api']." for ",$srczone->name);
|
||||||
|
|
||||||
$srczone->setId('');
|
$srczone->setId('');
|
||||||
$srczone->setName($name);
|
$srczone->setName($name);
|
||||||
|
@ -496,6 +529,7 @@ case "getformnameservers":
|
||||||
break;
|
break;
|
||||||
case "formzonelist":
|
case "formzonelist":
|
||||||
$zones = $api->listzones();
|
$zones = $api->listzones();
|
||||||
|
usort($zones, "zone_compare");
|
||||||
$ret = array();
|
$ret = array();
|
||||||
foreach ($zones as $zone) {
|
foreach ($zones as $zone) {
|
||||||
if ($zone['kind'] == 'Slave')
|
if ($zone['kind'] == 'Slave')
|
||||||
|
|
Loading…
Add table
Reference in a new issue