Skip to content

Commit e4befb5

Browse files
committed
Bugfix: PDNS PHP8 compatibility cleanup. Fixes #4337
1 parent dbe88de commit e4befb5

7 files changed

Lines changed: 28 additions & 15 deletions

File tree

app/admin/powerDNS/defaults.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# create csrf token
1111
$csrf = $User->Crypto->csrf_cookie ("create", "pdns_defaults");
1212

13+
$readonly = $POST->action=="delete" ? "readonly" : "";
1314
?>
1415
<!-- database settings -->
1516
<form name="pdns" id="pdns-defaults">

app/admin/powerDNS/domain-edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
if($POST->action!="add") {
3939
$domain = $PowerDNS->fetch_domain ($POST->id);
4040
$domain!==false ? : $Result->show("danger", _("Invalid ID"), true, true);
41+
} else {
42+
$domain = new Params();
4143
}
4244

4345
# disable edit on delete

app/admin/powerDNS/record-edit.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
}
6262
// match found ?
6363
if (isset($matches)) {
64+
$max = 0;
6465
foreach($matches as $k=>$m){
6566
$length = strlen($m->name);
6667
if($length > $max){ $max = $length; $element_id = $k; }
@@ -80,9 +81,8 @@
8081
}
8182
}
8283
else {
83-
$record = new StdClass ();
84+
$record = new Params ();
8485
$record->ttl = (isset($pdns->ttl) && $pdns->ttl > 0) ? $pdns->ttl : 3600;
85-
$record->name = $POST->domain_id;
8686
$record->content = $POST->id;
8787
}
8888
}

app/admin/powerDNS/settings-save.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040

4141
// get old settings for defaults
4242
$old_values = db_json_decode($User->settings->powerDNS);
43+
if (!is_object($old_values)) {
44+
$old_values = new Params();
45+
}
4346

4447
$values->ns = $old_values->ns;
4548
$values->hostmaster = $old_values->hostmaster;

app/tools/powerDNS/domains-print.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,12 @@
123123
$cnt = $PowerDNS->count_domain_records($d->id);
124124
// get SOA record
125125
$soa = $PowerDNS->fetch_domain_records_by_type($d->id, "SOA");
126-
$serial = pf_explode(" ", $soa[0]->content);
127-
$serial = $serial[2];
126+
if (is_object($soa)) {
127+
$serial = pf_explode(" ", $soa[0]->content);
128+
$serial = $serial[2];
129+
} else {
130+
$serial = '';
131+
}
128132

129133
print "<tr>";
130134
if ($User->get_module_permissions ("pdns")>=User::ACCESS_RW) {

db/SCHEMA.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ CREATE TABLE `settings` (
169169
`enableFirewallZones` TINYINT(1) NOT NULL DEFAULT '0',
170170
`firewallZoneSettings` VARCHAR(1024) NOT NULL DEFAULT '{"zoneLength":3,"ipType":{"0":"v4","1":"v6"},"separator":"_","indicator":{"0":"own","1":"customer"},"zoneGenerator":"2","zoneGeneratorType":{"0":"decimal","1":"hex","2":"text"},"deviceType":"3","padding":"on","strictMode":"on","pattern":{"0":"patternFQDN"}}', /* __no_html_escape__ */
171171
`enablePowerDNS` TINYINT(1) NULL DEFAULT '0',
172-
`powerDNS` TEXT NULL,
172+
`powerDNS` TEXT NULL, /* __no_html_escape__ */
173173
`enableDHCP` TINYINT(1) NULL DEFAULT '0',
174174
`DHCP` VARCHAR(256) NULL default '{"type":"kea","settings":{"file":"\/etc\/kea\/kea.conf"}}', /* __no_html_escape__ */
175175
`enableMulticast` TINYINT(1) NULL DEFAULT '0',

functions/classes/class.PowerDNS.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -601,19 +601,22 @@ public function fetch_domain_by_id ($id) {
601601
* @param mixed $name
602602
* @return object|false
603603
*/
604-
public function fetch_domain_by_name ($name) {
604+
public function fetch_domain_by_name($name) {
605605
# fetch
606-
try { $domain = $this->Database_pdns->findObjects("domains", "name", $name); }
607-
catch (Exception $e) {
608-
$this->Result->show("danger", _("Error: ").$e->getMessage());
606+
try {
607+
$domain = $this->Database_pdns->findObjects("domains", "name", $name);
608+
} catch (Exception $e) {
609+
$this->Result->show("danger", _("Error: ") . $e->getMessage());
610+
return false;
611+
}
612+
613+
if (!is_array($domain) || empty($domain)) {
609614
return false;
610615
}
611616

612617
# cache
613618
$this->domains_cache[$domain[0]->id] = $domain[0];
614-
615-
# result
616-
return is_object(($domain[0])) ? $domain[0] : false;
619+
return $domain[0];
617620
}
618621

619622
/**
@@ -1067,7 +1070,7 @@ private function update_soa_serial ($domain_id, $serial = false) {
10671070
$content = array(
10681071
"id"=>$soa->id,
10691072
"content"=>implode(" ", $soa_serial),
1070-
"change_date"=>$soa_serial[2]
1073+
"change_date"=>$this->set_default_change_date()
10711074
);
10721075
// update
10731076
$this->update_domain_record_content ($content);
@@ -1114,7 +1117,7 @@ public function create_default_records ($values, $checkOnly = false) {
11141117
$soa = array();
11151118
$soa[] = array_shift(pf_explode(";", $values['ns']));
11161119
$soa[] = str_replace ("@", ".", $values['hostmaster']);
1117-
$soa[] = $this->set_default_change_date ();
1120+
$soa[] = date("Ymd")."00";
11181121
$soa[] = $this->validate_refresh ($values['refresh']);
11191122
$soa[] = $this->validate_integer ($values['retry']);
11201123
$soa[] = $this->validate_integer ($values['expire']);
@@ -1394,7 +1397,7 @@ private function validate_integer ($int) {
13941397
* @return void
13951398
*/
13961399
private function set_default_change_date () {
1397-
return date("Ymd")."00";
1400+
return date("Y-m-d")." 0000";
13981401
}
13991402

14001403
/**

0 commit comments

Comments
 (0)