Skip to content

Commit 91a3943

Browse files
author
Florian Schaal
committed
fixed sql-queries in mail_domain_edit.php
1 parent d84a2dc commit 91a3943

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

interface/web/mail/mail_domain_edit.php

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,12 @@ function onAfterInsert() {
296296
}
297297
} // endif spamfilter policy
298298

299+
//* create dns-record with dkim-values if the zone exists
300+
if ( $this->dataRecord['active'] == 'y' && $this->dataRecord['dkim'] == 'y' ) {
301+
$soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $this->dataRecord['domain'].'.');
302+
if ( isset($soa) && !empty($soa) ) $this->update_dns($this->dataRecord, $soa);
303+
}
304+
299305
}
300306

301307
function onBeforeUpdate() {
@@ -407,17 +413,17 @@ function onAfterUpdate() {
407413
$selector = @($this->dataRecord['dkim_selector'] != $this->oldDataRecord['dkim_selector']) ? true : false;
408414
$dkim_private = @($this->dataRecord['dkim_private'] != $this->oldDataRecord['dkim_private']) ? true : false;
409415

410-
$soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $this->dataRecord['domain']);
416+
$soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $this->dataRecord['domain'].'.');
411417

412418
if ( ($selector || $dkim_private || $dkim_active) && $dkim_active )
413419
//* create a new record only if the dns-zone exists
414420
if ( isset($soa) && !empty($soa) ) {
415421
$this->update_dns($this->dataRecord, $soa);
416422
}
417-
elseif ( !isset($this->dataRecord['dkim']) ) {
423+
if (! $dkim_active) {
418424
// updated existing dmarc-record to policy 'none'
419-
$sql = "SELECT * from dns_rr WHERE name ='_dmarc.?.' AND data LIKE 'v=DMARC1%' AND ?";
420-
$rec = $app->db->queryOneRecord($sql, $this->dataRecord['domain'], $app->tform->getAuthSQL('r'));
425+
$sql = "SELECT * from dns_rr WHERE name = ? AND data LIKE 'v=DMARC1%' AND ?";
426+
$rec = $app->db->queryOneRecord($sql, '_dmarc.'.$this->dataRecord['domain'].'.', $app->tform->getAuthSQL('r'));
421427
if (is_array($rec))
422428
if (strpos($rec['data'], 'p=none=') === false) {
423429
$rec['data'] = str_replace(array('quarantine', 'reject'), 'none', $rec['data']);
@@ -435,15 +441,15 @@ private function update_dns($dataRecord, $new_rr) {
435441
global $app, $conf;
436442

437443
// purge old rr-record(s)
438-
$sql = "SELECT * FROM dns_rr WHERE name LIKE '%._domainkey.?.' AND data LIKE 'v=DKIM1%' AND ? ORDER BY serial DESC";
439-
$rec = $app->db->queryAllRecords($sql, $dataRecord['domain'], $app->tform->getAuthSQL('r'));
444+
$sql = "SELECT * FROM dns_rr WHERE name LIKE ? AND data LIKE 'v=DKIM1%' AND ? ORDER BY serial DESC";
445+
$rec = $app->db->queryAllRecords($sql, '%._domainkey.'.$dataRecord['domain'].'.', $app->tform->getAuthSQL('r'));
440446
if (is_array($rec[1])) {
441447
for ($i=1; $i < count($rec); ++$i)
442448
$app->db->datalogDelete('dns_rr', 'id', $rec[$i]['id']);
443449
}
444450
// also delete a dsn-records with same selector
445-
$sql = "SELECT * from dns_rr WHERE name ='?._domainkey.?.' AND data LIKE 'v=DKIM1%' AND ?";
446-
$rec = $app->db->queryAllRecords($sql, $dataRecord['dkim_selector'], $dataRecord['domain'], $app->tform->getAuthSQL('r'));
451+
$sql = "SELECT * from dns_rr WHERE name ? AND data LIKE 'v=DKIM1%' AND ?";
452+
$rec = $app->db->queryAllRecords($sql, '.._domainkey.'.$dataRecord['dkim_selector'].'.', $dataRecord['domain'], $app->tform->getAuthSQL('r'));
447453
if (is_array($rec))
448454
foreach ($rec as $del)
449455
$app->db->datalogDelete('dns_rr', 'id', $del['id']);
@@ -456,7 +462,7 @@ private function update_dns($dataRecord, $new_rr) {
456462
$new_rr['stamp'] = date('Y-m-d H:i:s');
457463
$new_rr['serial'] = $app->validate_dns->increase_serial($new_rr['serial']);
458464
$app->db->datalogInsert('dns_rr', $new_rr, 'id', $new_rr['zone']);
459-
$zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ".$app->functions->intval($new_rr['zone']));
465+
$zone = $app->db->queryOneRecord("SELECT id, serial FROM dns_soa WHERE active = 'Y' AND id = ?", $new_rr['zone']);
460466
$new_serial = $app->validate_dns->increase_serial($zone['serial']);
461467
$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
462468
}

0 commit comments

Comments
 (0)