57 lines
1.2 KiB
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($remote_config)
|
|
{
|
|
$this->restart();
|
|
}
|
|
} |