mirror of
https://github.com/tuxis-ie/nsedit.git
synced 2025-07-26 20:00:28 +03:00
php lint + code standard PSR-2
This commit is contained in:
parent
ebd12ebeb2
commit
73f290e896
15 changed files with 796 additions and 531 deletions
315
zones.php
315
zones.php
|
@ -1,32 +1,34 @@
|
|||
<?php
|
||||
|
||||
include_once('includes/config.inc.php');
|
||||
include_once('includes/session.inc.php');
|
||||
include_once('includes/misc.inc.php');
|
||||
include_once('includes/class/PdnsApi.php');
|
||||
include_once('includes/class/Zone.php');
|
||||
include_once 'includes/config.inc.php';
|
||||
include_once 'includes/session.inc.php';
|
||||
include_once 'includes/misc.inc.php';
|
||||
include_once 'includes/class/PdnsApi.php';
|
||||
include_once 'includes/class/Zone.php';
|
||||
|
||||
if (!is_csrf_safe()) {
|
||||
header('Status: 403');
|
||||
header('Location: ./index.php');
|
||||
jtable_respond(null, 'error', "Authentication required");
|
||||
jtable_respond(null, 'error', 'Authentication required');
|
||||
}
|
||||
|
||||
|
||||
$quoteus = array('TXT', 'SPF');
|
||||
$quoteus = ['TXT', 'SPF'];
|
||||
|
||||
/* This function is taken from:
|
||||
http://pageconfig.com/post/how-to-validate-ascii-text-in-php and got fixed by
|
||||
#powerdns */
|
||||
function is_ascii($string) {
|
||||
return ( bool ) ! preg_match( '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x80-\\xff]/' , $string );
|
||||
function is_ascii($string)
|
||||
{
|
||||
return ( bool ) ! preg_match('/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x80-\\xff]/', $string);
|
||||
}
|
||||
|
||||
function _valid_label($name) {
|
||||
return is_ascii($name) && ( bool ) preg_match("/^([-.a-z0-9_\/\*]+)?.$/i", $name );
|
||||
function _valid_label($name)
|
||||
{
|
||||
return is_ascii($name) && ( bool ) preg_match("/^([-.a-z0-9_\/\*]+)?.$/i", $name);
|
||||
}
|
||||
|
||||
function decode_record_id($id) {
|
||||
function decode_record_id($id)
|
||||
{
|
||||
$record = json_decode($id, 1);
|
||||
if (!$record
|
||||
|| !isset($record['name'])
|
||||
|
@ -34,18 +36,19 @@ function decode_record_id($id) {
|
|||
|| !isset($record['ttl'])
|
||||
|| !isset($record['content'])
|
||||
|| !isset($record['disabled'])) {
|
||||
jtable_respond(null, 'error', "Invalid record id");
|
||||
jtable_respond(null, 'error', 'Invalid record id');
|
||||
}
|
||||
return $record;
|
||||
}
|
||||
|
||||
function compareName($a, $b) {
|
||||
function compareName($a, $b)
|
||||
{
|
||||
$a = array_reverse(explode('.', $a));
|
||||
$b = array_reverse(explode('.', $b));
|
||||
for ($i = 0; ; ++$i) {
|
||||
if (!isset($a[$i])) {
|
||||
return isset($b[$i]) ? -1 : 0;
|
||||
} else if (!isset($b[$i])) {
|
||||
} elseif (!isset($b[$i])) {
|
||||
return 1;
|
||||
}
|
||||
$cmp = strnatcasecmp($a[$i], $b[$i]);
|
||||
|
@ -55,14 +58,18 @@ function compareName($a, $b) {
|
|||
}
|
||||
}
|
||||
|
||||
function zone_compare($a, $b) {
|
||||
if ($cmp = strnatcasecmp($a['name'], $b['name'])) return $cmp;
|
||||
function zone_compare($a, $b)
|
||||
{
|
||||
if ($cmp = strnatcasecmp($a['name'], $b['name'])) {
|
||||
return $cmp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function rrtype_compare($a, $b) {
|
||||
function rrtype_compare($a, $b)
|
||||
{
|
||||
# sort specials before everything else
|
||||
$specials = array('SOA', 'NS', 'MX');
|
||||
$specials = ['SOA', 'NS', 'MX'];
|
||||
$spa = array_search($a, $specials, true);
|
||||
$spb = array_search($b, $specials, true);
|
||||
if ($spa === false) {
|
||||
|
@ -72,32 +79,55 @@ function rrtype_compare($a, $b) {
|
|||
}
|
||||
}
|
||||
|
||||
function record_compare_default($a, $b) {
|
||||
if ($cmp = compareName($a['name'], $b['name'])) return $cmp;
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) return $cmp;
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) return $cmp;
|
||||
function record_compare_default($a, $b)
|
||||
{
|
||||
if ($cmp = compareName($a['name'], $b['name'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) {
|
||||
return $cmp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function record_compare_name($a, $b) {
|
||||
function record_compare_name($a, $b)
|
||||
{
|
||||
return record_compare_default($a, $b);
|
||||
}
|
||||
|
||||
function record_compare_type($a, $b) {
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) return $cmp;
|
||||
if ($cmp = compareName($a['name'], $b['name'])) return $cmp;
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) return $cmp;
|
||||
function record_compare_type($a, $b)
|
||||
{
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = compareName($a['name'], $b['name'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) {
|
||||
return $cmp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function record_compare_content($a, $b) {
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) return $cmp;
|
||||
if ($cmp = compareName($a['name'], $b['name'])) return $cmp;
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) return $cmp;
|
||||
function record_compare_content($a, $b)
|
||||
{
|
||||
if ($cmp = strnatcasecmp($a['content'], $b['content'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = compareName($a['name'], $b['name'])) {
|
||||
return $cmp;
|
||||
}
|
||||
if ($cmp = rrtype_compare($a['type'], $b['type'])) {
|
||||
return $cmp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function add_db_zone($zonename, $accountname) {
|
||||
function add_db_zone($zonename, $accountname)
|
||||
{
|
||||
if (valid_user($accountname) === false) {
|
||||
jtable_respond(null, 'error', "$accountname is not a valid username");
|
||||
}
|
||||
|
@ -110,49 +140,53 @@ function add_db_zone($zonename, $accountname) {
|
|||
}
|
||||
|
||||
$db = get_db();
|
||||
$q = $db->prepare("INSERT OR REPLACE INTO zones (zone, owner) VALUES (?, (SELECT id FROM users WHERE emailaddress = ?))");
|
||||
$q = $db->prepare('INSERT OR REPLACE INTO zones (zone, owner) VALUES (?, (SELECT id FROM users WHERE emailaddress = ?))');
|
||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||
$q->bindValue(2, $accountname, SQLITE3_TEXT);
|
||||
$q->execute();
|
||||
}
|
||||
|
||||
function delete_db_zone($zonename) {
|
||||
function delete_db_zone($zonename)
|
||||
{
|
||||
if (!_valid_label($zonename)) {
|
||||
jtable_respond(null, 'error', "$zonename is not a valid zonename");
|
||||
}
|
||||
$db = get_db();
|
||||
$q = $db->prepare("DELETE FROM zones WHERE zone = ?");
|
||||
$q = $db->prepare('DELETE FROM zones WHERE zone = ?');
|
||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||
$q->execute();
|
||||
}
|
||||
|
||||
function get_zone_account($zonename, $default) {
|
||||
function get_zone_account($zonename, $default)
|
||||
{
|
||||
if (!_valid_label($zonename)) {
|
||||
jtable_respond(null, 'error', "$zonename is not a valid zonename");
|
||||
}
|
||||
$db = get_db();
|
||||
$q = $db->prepare("SELECT u.emailaddress FROM users u, zones z WHERE z.owner = u.id AND z.zone = ?");
|
||||
$q = $db->prepare('SELECT u.emailaddress FROM users u, zones z WHERE z.owner = u.id AND z.zone = ?');
|
||||
$q->bindValue(1, $zonename, SQLITE3_TEXT);
|
||||
$result = $q->execute();
|
||||
$zoneinfo = $result->fetchArray(SQLITE3_ASSOC);
|
||||
if (isset($zoneinfo['emailaddress']) && $zoneinfo['emailaddress'] != null ) {
|
||||
if (isset($zoneinfo['emailaddress']) && $zoneinfo['emailaddress'] != null) {
|
||||
return $zoneinfo['emailaddress'];
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
function quote_content($content) {
|
||||
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)).'"';
|
||||
$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());
|
||||
}
|
||||
|
||||
|
@ -163,13 +197,13 @@ if (isset($_GET['action'])) {
|
|||
}
|
||||
|
||||
try {
|
||||
$api = new PdnsAPI;
|
||||
$api = new PdnsAPI();
|
||||
|
||||
switch ($action) {
|
||||
switch ($action) {
|
||||
|
||||
case "list":
|
||||
case "listslaves":
|
||||
$return = Array();
|
||||
case 'list':
|
||||
case 'listslaves':
|
||||
$return = [];
|
||||
$q = isset($_POST['domsearch']) ? $_POST['domsearch'] : false;
|
||||
foreach ($api->listzones($q) as $sresult) {
|
||||
$zone = new Zone();
|
||||
|
@ -178,104 +212,107 @@ case "listslaves":
|
|||
$zone->setAccount(get_zone_account($zone->name, 'admin'));
|
||||
}
|
||||
|
||||
if (!check_account($zone))
|
||||
if (!check_account($zone)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($action == "listslaves" and $zone->kind == "Slave") {
|
||||
if ($action == 'listslaves' and $zone->kind == 'Slave') {
|
||||
array_push($return, $zone->export());
|
||||
} elseif ($action == "list" and $zone->kind != "Slave") {
|
||||
} elseif ($action == 'list' and $zone->kind != 'Slave') {
|
||||
if ($zone->dnssec) {
|
||||
$zone->setKeyinfo($api->getzonekeys($zone->id));
|
||||
}
|
||||
array_push($return, $zone->export());
|
||||
}
|
||||
}
|
||||
usort($return, "zone_compare");
|
||||
usort($return, 'zone_compare');
|
||||
jtable_respond($return);
|
||||
break;
|
||||
|
||||
case "listrecords":
|
||||
case 'listrecords':
|
||||
$zonedata = $api->loadzone($_GET['zoneid']);
|
||||
$zone = new Zone();
|
||||
$zone->parse($zonedata);
|
||||
$records = $zone->rrsets2records();
|
||||
|
||||
if(!empty($_POST['label'])) {
|
||||
$records=array_filter($records,
|
||||
if (!empty($_POST['label'])) {
|
||||
$records=array_filter(
|
||||
$records,
|
||||
function ($val) {
|
||||
return(stripos($val['name'], $_POST['label']) !== FALSE);
|
||||
return(stripos($val['name'], $_POST['label']) !== false);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if(!empty($_POST['type'])) {
|
||||
$records=array_filter($records,
|
||||
if (!empty($_POST['type'])) {
|
||||
$records=array_filter(
|
||||
$records,
|
||||
function ($val) {
|
||||
return($val['type'] == $_POST['type']);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if(!empty($_POST['content'])) {
|
||||
$records=array_filter($records,
|
||||
if (!empty($_POST['content'])) {
|
||||
$records=array_filter(
|
||||
$records,
|
||||
function ($val) {
|
||||
return(stripos($val['content'], $_POST['content']) !== FALSE);
|
||||
return(stripos($val['content'], $_POST['content']) !== false);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($_GET['jtSorting'])) {
|
||||
list($scolumn, $sorder) = preg_split("/ /", $_GET['jtSorting']);
|
||||
list($scolumn, $sorder) = preg_split('/ /', $_GET['jtSorting']);
|
||||
switch ($scolumn) {
|
||||
case "type":
|
||||
usort($records, "record_compare_type");
|
||||
case 'type':
|
||||
usort($records, 'record_compare_type');
|
||||
break;
|
||||
case "content":
|
||||
usort($records, "record_compare_content");
|
||||
case 'content':
|
||||
usort($records, 'record_compare_content');
|
||||
break;
|
||||
default:
|
||||
usort($records, "record_compare_name");
|
||||
usort($records, 'record_compare_name');
|
||||
break;
|
||||
}
|
||||
if ($sorder == "DESC") {
|
||||
if ($sorder == 'DESC') {
|
||||
$records = array_reverse($records);
|
||||
}
|
||||
} else {
|
||||
usort($records, "record_compare_name");
|
||||
usort($records, 'record_compare_name');
|
||||
}
|
||||
jtable_respond($records);
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
case 'delete':
|
||||
$zone = $api->loadzone($_POST['id']);
|
||||
$api->deletezone($_POST['id']);
|
||||
|
||||
delete_db_zone($zone['name']);
|
||||
writelog("Deleted zone ".$zone['name']);
|
||||
writelog('Deleted zone ' . $zone['name']);
|
||||
jtable_respond(null, 'delete');
|
||||
break;
|
||||
|
||||
|
||||
case "create":
|
||||
case 'create':
|
||||
$zonename = isset($_POST['name']) ? $_POST['name'] : '';
|
||||
$zonekind = isset($_POST['kind']) ? $_POST['kind'] : '';
|
||||
|
||||
if (!is_adminuser() and $allowzoneadd !== true) {
|
||||
jtable_respond(null, 'error', "You are not allowed to add zones");
|
||||
jtable_respond(null, 'error', 'You are not allowed to add zones');
|
||||
}
|
||||
if (!_valid_label($zonename)) {
|
||||
jtable_respond(null, 'error', "Please only use [a-z0-9_/.-]");
|
||||
jtable_respond(null, 'error', 'Please only use [a-z0-9_/.-]');
|
||||
}
|
||||
|
||||
if (!$zonename || !$zonekind) {
|
||||
jtable_respond(null, 'error', "Not enough data");
|
||||
jtable_respond(null, 'error', 'Not enough data');
|
||||
}
|
||||
|
||||
$zone = new Zone();
|
||||
$zone->setKind($zonekind);
|
||||
$zone->setName($zonename);
|
||||
|
||||
if ($zonekind != "Slave") {
|
||||
if ($zonekind != 'Slave') {
|
||||
if (!isset($_POST['zone']) or isset($_POST['owns'])) {
|
||||
foreach ($_POST['nameserver'] as $ns) {
|
||||
$zone->addNameserver($ns);
|
||||
|
@ -284,7 +321,7 @@ case "create":
|
|||
$zone->importData($_POST['zone']);
|
||||
}
|
||||
if (isset($defaults['soa_edit_api'])) {
|
||||
$zone->setSoaEditApi($defaults['soa_edit_api'], True);
|
||||
$zone->setSoaEditApi($defaults['soa_edit_api'], true);
|
||||
}
|
||||
if (isset($defaults['soa_edit'])) {
|
||||
$zone->setSoaEdit($defaults['soa_edit']);
|
||||
|
@ -319,7 +356,9 @@ case "create":
|
|||
|
||||
if (isset($_POST['template']) && $_POST['template'] != 'None') {
|
||||
foreach (user_template_list() as $template) {
|
||||
if ($template['name'] !== $_POST['template']) continue;
|
||||
if ($template['name'] !== $_POST['template']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($template['records'] as $record) {
|
||||
$rrset = $zone->getRRSet($record['name'], $record['type']);
|
||||
|
@ -330,8 +369,8 @@ case "create":
|
|||
$api->savezone($zone->export());
|
||||
|
||||
foreach ($template['records'] as $record) {
|
||||
$name = $record['name'] != '' ? join(Array($record['name'],'.',$zonename)) : $zonename;
|
||||
$record['content'] = str_replace("[zonename]", $zonename, $record['content']);
|
||||
$name = $record['name'] != '' ? join([$record['name'],'.',$zonename]) : $zonename;
|
||||
$record['content'] = str_replace('[zonename]', $zonename, $record['content']);
|
||||
$zone->addRecord($name, $record['type'], $record['content']);
|
||||
}
|
||||
|
||||
|
@ -340,20 +379,21 @@ case "create":
|
|||
}
|
||||
|
||||
$zone = $api->savezone($zone->export());
|
||||
writelog("Created zone ".$zone['name']);
|
||||
writelog('Created zone ' . $zone['name']);
|
||||
jtable_respond($zone, 'single');
|
||||
break;
|
||||
|
||||
case "update":
|
||||
case 'update':
|
||||
$zone = new Zone();
|
||||
$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);
|
||||
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;
|
||||
|
||||
if ($zone->account !== $zoneaccount) {
|
||||
if (!is_adminuser()) {
|
||||
header("Status: 403 Access denied");
|
||||
header('Status: 403 Access denied');
|
||||
jtable_respond(null, 'error', "Can't change account");
|
||||
} else {
|
||||
add_db_zone($zone->name, $zoneaccount);
|
||||
|
@ -363,20 +403,21 @@ case "update":
|
|||
|
||||
if (isset($_POST['masters'])) {
|
||||
$zone->eraseMasters();
|
||||
foreach(preg_split('/[,;\s]+/', $_POST['masters'], null, PREG_SPLIT_NO_EMPTY) as $master) {
|
||||
foreach (preg_split('/[,;\s]+/', $_POST['masters'], null, PREG_SPLIT_NO_EMPTY) as $master) {
|
||||
$zone->addMaster($master);
|
||||
}
|
||||
}
|
||||
|
||||
writelog("Updated zone ".$zone->name);
|
||||
writelog('Updated zone ' . $zone->name);
|
||||
jtable_respond($api->savezone($zone->export()), 'single');
|
||||
break;
|
||||
|
||||
case "createrecord":
|
||||
case 'createrecord':
|
||||
$zone = new Zone();
|
||||
$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);
|
||||
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'] : '';
|
||||
$type = $_POST['type'];
|
||||
|
@ -387,40 +428,41 @@ case "createrecord":
|
|||
} elseif (string_ends_with($name, '.')) {
|
||||
# "absolute" name, shouldn't append zone[name] - but check.
|
||||
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)) {
|
||||
} elseif (!string_ends_with($name . '.', $zone->name)) {
|
||||
$name = $name . '.' . $zone->name;
|
||||
} else {
|
||||
$name = $name.'.';
|
||||
$name = $name . '.';
|
||||
}
|
||||
|
||||
if (!_valid_label($name)) {
|
||||
jtable_respond(null, 'error', "Please only use [a-z0-9_/.-]");
|
||||
jtable_respond(null, 'error', 'Please only use [a-z0-9_/.-]');
|
||||
}
|
||||
if (!$type) {
|
||||
jtable_respond(null, 'error', "Require a type");
|
||||
jtable_respond(null, 'error', 'Require a type');
|
||||
}
|
||||
if (!is_ascii($content)) {
|
||||
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) {
|
||||
if (array_search($type, $quoteus) !== false) {
|
||||
$content = quote_content($content);
|
||||
}
|
||||
|
||||
$record = $zone->addRecord($name, $type, $content, $_POST['disabled'], $_POST['ttl'], $_POST['setptr']);
|
||||
$api->savezone($zone->export());
|
||||
|
||||
writelog("Created record: ".$record['id']);
|
||||
writelog('Created record: ' . $record['id']);
|
||||
jtable_respond($record, 'single');
|
||||
break;
|
||||
|
||||
case "editrecord":
|
||||
case 'editrecord':
|
||||
$zone = new Zone();
|
||||
$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);
|
||||
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'] : '');
|
||||
|
||||
|
@ -429,7 +471,7 @@ case "editrecord":
|
|||
|
||||
$content = $_POST['content'];
|
||||
$type = $_POST['type'];
|
||||
if (array_search($type, $quoteus) !== FALSE) {
|
||||
if (array_search($type, $quoteus) !== false) {
|
||||
$content = quote_content($content);
|
||||
}
|
||||
|
||||
|
@ -438,15 +480,16 @@ case "editrecord":
|
|||
$api->savezone($zone->export());
|
||||
|
||||
$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');
|
||||
break;
|
||||
|
||||
case "deleterecord":
|
||||
case 'deleterecord':
|
||||
$zone = new Zone();
|
||||
$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);
|
||||
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'] : '');
|
||||
$rrset = $zone->getRRSet($old_record['name'], $old_record['type']);
|
||||
|
@ -454,31 +497,32 @@ case "deleterecord":
|
|||
|
||||
$api->savezone($zone->export());
|
||||
|
||||
writelog("Deleted record ".$_POST['id']);
|
||||
writelog('Deleted record ' . $_POST['id']);
|
||||
jtable_respond(null, 'delete');
|
||||
break;
|
||||
|
||||
case "export":
|
||||
writelog("Exported zone ".$_GET['zoneid']);
|
||||
case 'export':
|
||||
writelog('Exported zone ' . $_GET['zoneid']);
|
||||
jtable_respond($api->exportzone($_GET['zoneid']), 'single');
|
||||
break;
|
||||
|
||||
case "clone":
|
||||
case 'clone':
|
||||
$name = $_POST['destname'];
|
||||
$src = $_POST['sourcename'];
|
||||
|
||||
if (!string_ends_with($name, '.')) {
|
||||
$name = $name.".";
|
||||
$name = $name . '.';
|
||||
}
|
||||
|
||||
if (!_valid_label($name)) {
|
||||
jtable_respond(null, 'error', "Invalid destination zonename");
|
||||
jtable_respond(null, 'error', 'Invalid destination zonename');
|
||||
}
|
||||
|
||||
$srczone = new Zone();
|
||||
$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);
|
||||
if ($srczone->setSoaEditApi($defaults['soa_edit_api']) != false) {
|
||||
writelog('Set SOA-EDIT-API to ' . $defaults['soa_edit_api'] . ' for ', $srczone->name);
|
||||
}
|
||||
|
||||
$srczone->setId('');
|
||||
$srczone->setName($name);
|
||||
|
@ -491,7 +535,7 @@ case "clone":
|
|||
|
||||
foreach ($srczone->rrsets as $rrset) {
|
||||
$newname = $rrset->name;
|
||||
$newname = preg_replace('/'.$src.'$/', $name, $newname);
|
||||
$newname = preg_replace('/' . $src . '$/', $name, $newname);
|
||||
$rrset->setName($newname);
|
||||
}
|
||||
|
||||
|
@ -509,15 +553,17 @@ case "clone":
|
|||
jtable_respond($zone, 'single');
|
||||
break;
|
||||
|
||||
case "gettemplatenameservers":
|
||||
$ret = array();
|
||||
case 'gettemplatenameservers':
|
||||
$ret = [];
|
||||
$type = $_GET['prisec'];
|
||||
|
||||
foreach (user_template_list() as $template) {
|
||||
if ($template['name'] !== $_GET['template']) continue;
|
||||
if ($template['name'] !== $_GET['template']) {
|
||||
continue;
|
||||
}
|
||||
$rc = 0;
|
||||
foreach ($template['records'] as $record) {
|
||||
if ($record['type'] == "NS") {
|
||||
if ($record['type'] == 'NS') {
|
||||
if (($type == 'pri' && $rc == 0) or ($type == 'sec' && $rc == 1)) {
|
||||
echo $record['content'];
|
||||
exit(0);
|
||||
|
@ -525,31 +571,34 @@ case "gettemplatenameservers":
|
|||
$rc++;
|
||||
}
|
||||
}
|
||||
echo "";
|
||||
echo '';
|
||||
}
|
||||
break;
|
||||
case "getformnameservers":
|
||||
$inputs = array();
|
||||
case 'getformnameservers':
|
||||
$inputs = [];
|
||||
foreach (user_template_list() as $template) {
|
||||
if ($template['name'] !== $_GET['template']) continue;
|
||||
if ($template['name'] !== $_GET['template']) {
|
||||
continue;
|
||||
}
|
||||
foreach ($template['records'] as $record) {
|
||||
if ($record['type'] == "NS" and array_search($record['content'], $inputs) === false) {
|
||||
array_push($inputs, $record['content']);
|
||||
echo '<input type="text" name="nameserver[]" value="'.$record['content'].'" readonly /><br />';
|
||||
if ($record['type'] == 'NS' and array_search($record['content'], $inputs) === false) {
|
||||
array_push($inputs, $record['content']);
|
||||
echo '<input type="text" name="nameserver[]" value="' . $record['content'] . '" readonly /><br />';
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "formzonelist":
|
||||
case 'formzonelist':
|
||||
$zones = $api->listzones();
|
||||
usort($zones, "zone_compare");
|
||||
$ret = array();
|
||||
usort($zones, 'zone_compare');
|
||||
$ret = [];
|
||||
foreach ($zones as $zone) {
|
||||
if ($zone['kind'] == 'Slave')
|
||||
if ($zone['kind'] == 'Slave') {
|
||||
continue;
|
||||
array_push($ret, array(
|
||||
}
|
||||
array_push($ret, [
|
||||
'DisplayText' => $zone['name'],
|
||||
'Value' => $zone['id']));
|
||||
'Value' => $zone['id']]);
|
||||
}
|
||||
jtable_respond($ret, 'options');
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue