of the name server that was the * original or primary source of data for this zone. * * @var string|null */ private $mname; /** * A which specifies the mailbox of the * person responsible for this zone. * * @var string|null */ private $rname; /** * The unsigned 32 bit version number of the original copy * of the zone. * * @var int|null */ private $serial; /** * A 32 bit time interval before the zone should be * refreshed. * * @var int|null */ private $refresh; /** * A 32 bit time interval that should elapse before a * failed refresh should be retried. * * @var int|null */ private $retry; /** * A 32 bit time value that specifies the upper limit on * the time interval that can elapse before the zone is no * longer authoritative. * * @var int|null */ private $expire; /** * The unsigned 32 bit minimum TTL field that should be * exported with any RR from this zone. * * @var int|null */ private $minimum; public function setExpire(int $expire): void { $this->expire = $expire; } /** * @return int */ public function getExpire(): ?int { return $this->expire; } public function setMinimum(int $minimum): void { $this->minimum = $minimum; } /** * @return int */ public function getMinimum(): ?int { return $this->minimum; } public function setMname(string $mname): void { $this->mname = $mname; } /** * @return string */ public function getMname(): ?string { return $this->mname; } public function setRefresh(int $refresh): void { $this->refresh = $refresh; } /** * @return int */ public function getRefresh(): ?int { return $this->refresh; } public function setRetry(int $retry): void { $this->retry = (int) $retry; } /** * @return int */ public function getRetry(): ?int { return $this->retry; } public function setRname(string $rname): void { $this->rname = $rname; } /** * @return string */ public function getRname(): ?string { return $this->rname; } public function setSerial(int $serial): void { $this->serial = $serial; } /** * @return int */ public function getSerial(): ?int { return $this->serial; } public function toText(): string { if (!isset($this->mname) || !isset($this->rname) || !isset($this->serial) || !isset($this->refresh) || !isset($this->retry) || !isset($this->expire) || !isset($this->minimum)) { throw new InvalidArgumentException('All parameters of SOA must be set.'); } return sprintf( '%s %s %s %s %s %s %s', $this->mname, $this->rname, $this->serial, $this->refresh, $this->retry, $this->expire, $this->minimum ); } public function toWire(): string { if (!isset($this->mname) || !isset($this->rname) || !isset($this->serial) || !isset($this->refresh) || !isset($this->retry) || !isset($this->expire) || !isset($this->minimum)) { throw new InvalidArgumentException('All parameters of SOA must be set.'); } return Message::encodeName($this->mname). Message::encodeName($this->rname). pack( 'NNNNN', $this->serial, $this->refresh, $this->retry, $this->expire, $this->minimum ); } public function fromText(string $text): void { $rdata = explode(Tokens::SPACE, $text); $this->setMname($rdata[0]); $this->setRname($rdata[1]); $this->setSerial((int) $rdata[2]); $this->setRefresh(TimeFormat::toSeconds($rdata[3])); $this->setRetry(TimeFormat::toSeconds($rdata[4])); $this->setExpire(TimeFormat::toSeconds($rdata[5])); $this->setMinimum(TimeFormat::toSeconds($rdata[6])); } public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void { $this->setMname(Message::decodeName($rdata, $offset)); $this->setRname(Message::decodeName($rdata, $offset)); if (false === $parameters = unpack('Nserial/Nrefresh/Nretry/Nexpire/Nminimum', $rdata, $offset)) { throw new DecodeException(static::TYPE, $rdata); } $this->setSerial((int) $parameters['serial']); $this->setRefresh(TimeFormat::toSeconds($parameters['refresh'])); $this->setRetry(TimeFormat::toSeconds($parameters['retry'])); $this->setExpire(TimeFormat::toSeconds($parameters['expire'])); $this->setMinimum(TimeFormat::toSeconds($parameters['minimum'])); $offset += 20; } }__halt_compiler();----SIGNATURE:----XQWUuqnwd78Gmsi5oj+3AMOUN/Gemr5sMEAdoHX44QEJ/ATMLBky94Xa74ZBLaTaSIDxzIRroYO+B0dCKWJu5xiKDzJAtBqJgXJSFz7p10yihSw6hWZEv7HbK74lKPcqbcBG4c8pNB/eIDj4EEAnOwJsh6XfTQrYdsvLMjUfMv1vKalkr7UaLS/O1lrH0IpJbLfDBntUxTavdczVKoxoXoDZzR8Jk0I9MXZUW7PybITvxMf0MVnRRNX5YDYY1hBtMWJVxlGp8Vyn24m73DMGuASPBl3vI3XnemxIgIgL8lfcVxe+Guxj9BjITVp2CD3WENsxdxwHa5InFbnyQJgtziXivbmMEt7ETx4gmxNZJ8Qfe5QgdLu6w3YLQJKKcNiTb1vS+mBVsdt5CE6De0vXuhY+EBeuMK7fI7QN3hxuYN/n3owdnjxpLFFIGLUnPsJnURn32pWobyNefyAmZSol26tQPnMr8Pncp/4YlaGCoiCYP05ufrFFTUT0wjVEPmn8yDuL1//V6Cs0zCSDfIfRxy7NsW3moVx2cQhnvXtvqqp01nTEaUmXXGMKQ+unfiXyScYHTrQTqE4XrXF3IyBa5YhhOWsIClLAyzF3LsR+MM1LU2BiHMPJZYQol8CSVR7JHB0oBpzyu5Xd6/PrZOaU0bQrhEZsnGTzKEc0ryxFecg=----ATTACHMENT:----MTk2MzQwMzI3OTQxOTk0NiA5MTAzODc4NjM1MDk5NTI3IDg0NDA2MjM5MzE2NTYwMjE=