protected-resources-list/plugins/named/BindPlugin.php

57 lines
1.2 KiB
PHP

<?php
class BindPlugin extends Plugin
{
public function restart(): string|bool|null
{
$selectedDomains = [];
$networks = (new NetworkConfigReader())->getConfigs();
//add new routes
foreach ($this->context->getConfig()["networks"] as $key) {
if (isset($networks[$key])) {
foreach ($networks[$key]["domains"] as $domain) {
$selectedDomains[] = $domain;
}
}
}
$selectedDomains = array_unique($selectedDomains);
$data = [];
foreach ($selectedDomains as $domain) {
$data[] = $this->createForwardRecord($domain);
}
file_put_contents($this->config["file"], implode("\n", $data));
return shell_exec($this->config["restart_cmd"]);
}
private function createForwardRecord($domain)
{
$fwd = implode(";", $this->config["forwarders"]) . ";";
return <<<TXT
zone "{$domain}" IN {
type forward;
forward only;
forwarders{{$fwd}};
};
TXT;
}
public function onServerStarted()
{
$this->restart();
}
public function onSync()
{
$this->restart();
}
}