generate multiline txt-record if content is too long, fixes #472
Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
@@ -41,7 +41,31 @@ class DnsEntry
|
|||||||
|
|
||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
$result = $this->record . "\t" . $this->ttl . "\t" . $this->class . "\t" . $this->type . "\t" . (($this->priority >= 0 && ($this->type == 'MX' || $this->type == 'SRV')) ? $this->priority . "\t" : "") . $this->content . PHP_EOL;
|
$_content = $this->content;
|
||||||
|
// check content length for txt records for bind9 (multiline)
|
||||||
|
if (Settings::Get('system.dns_server') != 'pdns' && $this->type == 'TXT' && strlen($_content) >= 64) {
|
||||||
|
// split string
|
||||||
|
$_contentlines = str_split($_content, 63);
|
||||||
|
// first line
|
||||||
|
$_l = array_shift($_contentlines);
|
||||||
|
// check for starting quote
|
||||||
|
if (substr($_l, 0, 1) == '"') {
|
||||||
|
$_l = substr($_l, 1);
|
||||||
|
}
|
||||||
|
$_content = '( "' . $_l . '"' . PHP_EOL;
|
||||||
|
$_l = array_pop($_contentlines);
|
||||||
|
// check for ending quote
|
||||||
|
if (substr($_l, -1) == '"') {
|
||||||
|
$_l = substr($_l, 0, -1);
|
||||||
|
}
|
||||||
|
foreach ($_contentlines as $_cl) {
|
||||||
|
// lines in between
|
||||||
|
$_content .= "\t\t\t\t" . '"' . $_cl . '"' . PHP_EOL;
|
||||||
|
}
|
||||||
|
// last line
|
||||||
|
$_content .= "\t\t\t\t" . '"'.$_l.'" )';
|
||||||
|
}
|
||||||
|
$result = $this->record . "\t" . $this->ttl . "\t" . $this->class . "\t" . $this->type . "\t" . (($this->priority >= 0 && ($this->type == 'MX' || $this->type == 'SRV')) ? $this->priority . "\t" : "") . $_content . PHP_EOL;
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user