From 77808f84cf851e1d347879c93d66f795d22179f3 Mon Sep 17 00:00:00 2001 From: tracer Date: Tue, 1 Mar 2022 16:43:48 +0100 Subject: [PATCH] finished check domains Signed-off-by: tracer --- src/Controller/DomainController.php | 80 ++++++++++++++--------------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/src/Controller/DomainController.php b/src/Controller/DomainController.php index 3cca68e..089071e 100644 --- a/src/Controller/DomainController.php +++ b/src/Controller/DomainController.php @@ -24,7 +24,7 @@ class DomainController private string $keyhelpNamedCond; - public function __construct(private NameserverRepository $nameserverRepository, private ApiController $checkController, private DomainRepository $domainRepository, private PanelRepository $panelRepository, private array $config, private Logger $log) + public function __construct(private NameserverRepository $nameserverRepository, private ApiController $checkController, private DomainRepository $domainRepository, private PanelRepository $panelRepository, private array $config, private Logger $log) { if ($this->config['debug']) { @@ -35,11 +35,10 @@ class DomainController $this->localZonesDir = '/etc/bind/zones/'; $this->namedConfLocalFile = '/etc/bind/named.conf.local'; $this->zoneCachePath = '/var/cache/bind/'; - $this-> keyhelpNamedCond = '/etc/bind/named.conf.keyhelp'; + $this->keyhelpNamedCond = '/etc/bind/named.conf.keyhelp'; } - function createIncludeFile() { if ($this->config['debug']) { @@ -109,15 +108,15 @@ class DomainController echo 'Checking permission:' . PHP_EOL . PHP_EOL; $uid = posix_geteuid(); - print("UID:\t$uid" . PHP_EOL); + print("UID:\t" . COLOR_YELLOW . $uid . PHP_EOL); $pwuid = posix_getpwuid(user_id: $uid); $name = $pwuid['name']; - print("Name:\t$name" . PHP_EOL); + echo COLOR_DEFAULT . "Name:\t" . COLOR_YELLOW . $name . PHP_EOL; $bindGroup = posix_getgrnam(name: 'bind'); $members = $bindGroup['members']; if (in_array(needle: $name, haystack: $members)) { - echo "\t✅ $name is in group 'bind" . PHP_EOL; + echo "\t✅ $name" . COLOR_DEFAULT . ' is in group ' . COLOR_YELLOW . 'bind' . PHP_EOL; } else { echo "\t❌$name needs to be in group $bindGroup!" . PHP_EOL; @@ -126,7 +125,7 @@ class DomainController echo 'Checking file: ' . $this->localZoneFile . PHP_EOL; $localZoneFilePermissions = fileperms(filename: $this->localZoneFile); if ($localZoneFilePermissions & 0x0010) { - echo "\t✅ Group has write access . " . PHP_EOL; + echo "\t✅ Group has write access." . PHP_EOL; } else { echo "\t❌Group needs write permission!" . PHP_EOL; } @@ -145,7 +144,7 @@ class DomainController echo 'Checking directory: ' . $this->localZonesDir . PHP_EOL; $localZoneDirPermissions = fileperms(filename: $this->localZonesDir); if ($localZoneDirPermissions & 0x0010) { - echo "\t✅ Group has write access . " . PHP_EOL; + echo "\t✅ Group has write access." . PHP_EOL; } else { echo "\t❌Group needs write permission!" . PHP_EOL; } @@ -153,47 +152,37 @@ class DomainController /** - * @return array|bool + * @return void */ - function checkDomains(): array|bool + function checkDomains(): void { + $localZones = file_get_contents(filename: $this->localZoneFile); + $maxNameLength = $this->domainRepository->getLongestEntry(field: 'name'); + $domains = $this->domainRepository->findAll(); - return true; - /* - $domains = $this->findAll(); - - if ($namedConfLocal = file_get_contents(filename: $this->namedConfLocalFile)) { - if (!str_contains(haystack: $namedConfLocal, needle: $this->localZoneFile)) { - return "$this->localZoneFile needs to be included in $this->namedConfLocalFile . "; - } - } else { - return "No access to '$this->namedConfLocalFile' . Please check permissions"; - } - - if (!fileperms($this->localZoneFile)) { - return "No access to $this->localZoneFile . Please check permissions . "; - } - - $localZones = file_get_contents($this->localZoneFile); - - foreach($domains as $domain) { - if(!str_contains($localZones, $domain['name'])) { - $errors[] = $domain['name'] . " is missing in '$this->localZoneFile'"; + foreach ($domains as $domain) { + echo COLOR_YELLOW . str_pad(string: $domain->getName(), length: $maxNameLength + 1) . COLOR_DEFAULT; + + if ($this->isMasterZone(domain: $domain)) { + echo 'Master Zone lies on this panel.'; + } else { + if (!str_contains(haystack: $localZones, needle: $domain->getName())) { + echo COLOR_RED . ' is missing in ' . COLOR_YELLOW . $this->localZoneFile . COLOR_DEFAULT; + } else { + echo $domain->getName() . ' exists in ' . COLOR_YELLOW . $this->localZoneFile; + } + + $zoneFile = $this->localZonesDir . $domain->getName(); + + if (!file_exists(filename: $zoneFile)) { + echo "Missing zone file for $zoneFile . Update zone to create it"; + } } - $zoneFile = $this->localZonesDir . $domain['name']; - if (!file_exists($zoneFile)) { - $errors[] = "Missing zone file for $zoneFile . Update zone to create it"; - } + echo COLOR_DEFAULT . PHP_EOL; } - if (empty($errors)) { - return true; - } else { - return $errors; - } - */ } @@ -237,5 +226,12 @@ class DomainController $this->createIncludeFile(); } - + private function isMasterZone(Domain $domain): bool + { + if (file_exists(filename: '/etc/bind/keyhelp_domains/' . $domain->getName())) { + return true; + } else { + return false; + } + } } \ No newline at end of file