Skip to content

Commit

Permalink
fmDNS - #330 Fixed cloned zone serial number updates
Browse files Browse the repository at this point in the history
  • Loading branch information
WillyXJ committed Jul 18, 2016
1 parent 717f116 commit f68146d
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 14 deletions.
2 changes: 2 additions & 0 deletions server/fm-modules/fmDNS/change.log
Expand Up @@ -4,6 +4,8 @@
accept any input. (Issue #329)
* Server - [improvement] AJAX now redirects to login page when fM and module
database updates are required.
* Server - [bug] Fixed an issue where SOA serial numbers were not incrementing
for cloned zones. (Issue #330)

2.2.3 (2016-06-14)
==================
Expand Down
25 changes: 18 additions & 7 deletions server/fm-modules/fmDNS/classes/class_records.php
Expand Up @@ -614,32 +614,35 @@ function buildSOA($result, $show = array('template_menu', 'create_template', 'te
}


function updateSOAReload($domain_id, $status = 'yes') {
function updateSOAReload($domain_id, $status = 'yes', $associated = 'single') {
global $fmdb, $fm_dns_zones, $__FM_CONFIG;

/** Check domain_id and soa */
$parent_domain_ids = getZoneParentID($domain_id);
if (isset($parent_domain_ids[2])) {
$query = "SELECT * FROM fm_{$__FM_CONFIG['fmDNS']['prefix']}domains d, fm_{$__FM_CONFIG['fmDNS']['prefix']}soa s WHERE domain_status='active' AND d.account_id='{$_SESSION['user']['account_id']}' AND
s.soa_id=(SELECT soa_id FROM fm_dns_domains WHERE domain_id={$parent_domain_ids[2]})";
s.soa_id=(SELECT soa_id FROM fm_{$__FM_CONFIG['fmDNS']['prefix']}domains WHERE domain_id={$parent_domain_ids[2]})";
} else {
$query = "SELECT * FROM fm_{$__FM_CONFIG['fmDNS']['prefix']}domains d, fm_{$__FM_CONFIG['fmDNS']['prefix']}soa s WHERE domain_status='active' AND d.account_id='{$_SESSION['user']['account_id']}' AND
s.soa_id=d.soa_id AND d.domain_id IN (" . join(',', $parent_domain_ids) . ')';
}
$result = $fmdb->query($query);
if (!$fmdb->num_rows) return false;

$domain_reload = getNameFromID($domain_id, "fm_{$__FM_CONFIG['fmDNS']['prefix']}domains", 'domain_', 'domain_id', 'domain_reload');

if (!$domain_reload) return false;

/** Update the SOA serial number */
if ($fmdb->last_result[0]->domain_reload == 'no') {
if ($domain_reload == 'no') {
if (!isset($fm_dns_zones)) {
include_once(ABSPATH . 'fm-modules/fmDNS/classes/class_zones.php');
}
$fm_dns_zones->updateSOASerialNo($domain_id, getNameFromID($domain_id, "fm_{$__FM_CONFIG['fmDNS']['prefix']}domains", 'domain_', 'domain_id', 'soa_serial_no'));
}

$id = ($clone_id = getNameFromID($domain_id, "fm_{$__FM_CONFIG['fmDNS']['prefix']}domains", 'domain_', 'domain_id', 'domain_clone_domain_id')) ? $clone_id : $domain_id;

reloadZoneSQL($id, $status);
$id = ($domain_clone_domain_id = getNameFromID($domain_id, "fm_{$__FM_CONFIG['fmDNS']['prefix']}domains", 'domain_', 'domain_id', 'domain_clone_domain_id')) ? $domain_clone_domain_id : $domain_id;
reloadZoneSQL($id, $status, $associated);
}


Expand Down Expand Up @@ -778,8 +781,16 @@ function processSOAUpdates($domain_id, $record_type, $action) {
global $fm_dns_zones;

if (!$fm_dns_zones) include(ABSPATH . 'fm-modules/' . $_SESSION['module'] . '/classes/class_zones.php');

$possible_domain_ids = $fm_dns_zones->getZoneTemplateChildren($domain_id);
if (count($possible_domain_ids)) {
foreach($possible_domain_ids as $parent_id) {
$possible_domain_ids = array_merge($possible_domain_ids, $fm_dns_zones->getZoneCloneChildren($parent_id));
}
}
$possible_domain_ids = array_unique(array_merge($possible_domain_ids, $fm_dns_zones->getZoneCloneChildren($domain_id)));

foreach ($fm_dns_zones->getZoneTemplateChildren($domain_id) as $child_id) {
foreach ($possible_domain_ids as $child_id) {
$domain_id = getParentDomainID($child_id);
$soa_count = getSOACount($domain_id);
$ns_count = getNSCount($domain_id);
Expand Down
4 changes: 2 additions & 2 deletions server/fm-modules/fmDNS/classes/class_zones.php
Expand Up @@ -1095,7 +1095,7 @@ function buildZoneConfig($domain_id) {
if (!$failures) {
global $fm_dns_records;
if (!isset($fm_dns_records)) include(ABSPATH . 'fm-modules/fmDNS/classes/class_records.php');
$fm_dns_records->updateSOAReload($domain_id, 'no');
$fm_dns_records->updateSOAReload($domain_id, 'no', 'all');
}

addLogEntry(sprintf(__("Reloaded zone '%s'."), displayFriendlyDomainName($domain_name)));
Expand Down Expand Up @@ -1157,7 +1157,7 @@ function updateSOASerialNo($domain_id, $soa_serial_no) {
/** Increment serial */
$soa_serial_no = (strpos($soa_serial_no, $current_date) === false) ? $current_date . '00' : $soa_serial_no + 1;

$query = "UPDATE `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` SET `soa_serial_no`=$soa_serial_no WHERE `domain_id`=$domain_id";
$query = "UPDATE `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` SET `soa_serial_no`=$soa_serial_no WHERE `domain_template`='no' AND `domain_id`=$domain_id";
$result = $fmdb->query($query);
}

Expand Down
14 changes: 9 additions & 5 deletions server/fm-modules/fmDNS/functions.php
Expand Up @@ -375,13 +375,17 @@ function moduleCompleteClientInstallation() {
}


function reloadZoneSQL($domain_ids, $reload_zone) {
function reloadZoneSQL($domain_ids, $reload_zone, $associated) {
global $fmdb, $__FM_CONFIG;

if (!is_array($domain_ids)) $domain_ids = array($domain_ids);

$query = "UPDATE `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` SET `domain_reload`='$reload_zone' WHERE `domain_template` = 'no' AND
(`domain_id` IN (" . join(',', $domain_ids) . ") OR `domain_clone_domain_id` IN (" . join(',', $domain_ids) . ") OR `domain_template_id` IN (" . join(',', $domain_ids) . '))';
if ($associated == 'all') {
if (!is_array($domain_ids)) $domain_ids = array($domain_ids);

$query = "UPDATE `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` SET `domain_reload`='$reload_zone' WHERE `domain_template` = 'no' AND
(`domain_id` IN (" . join(',', $domain_ids) . ") OR `domain_clone_domain_id` IN (" . join(',', $domain_ids) . ") OR `domain_template_id` IN (" . join(',', $domain_ids) . '))';
} else {
$query = "UPDATE `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` SET `domain_reload`='$reload_zone' WHERE `domain_template` = 'no' AND `domain_id`=$domain_ids";
}
$fmdb->query($query);
}

Expand Down

0 comments on commit f68146d

Please sign in to comment.