fix startdomaincheckcontainer logic

Signed-off-by: szaimen <szaimen@e.mail.de>
This commit is contained in:
szaimen 2022-03-11 22:12:31 +01:00
parent 9b11c817b2
commit 79af222c2d

View file

@ -149,22 +149,32 @@ class DockerController
public function StartDomaincheckContainer() : void public function StartDomaincheckContainer() : void
{ {
# Don't start if domain is already set # Don't start if domain is already set
if ($this->configurationManager->GetDomain() != '') { if ($this->configurationManager->GetDomain() !== '' || $this->configurationManager->wasStartButtonClicked()) {
return; return;
} }
$id = 'nextcloud-aio-domaincheck'; $id = 'nextcloud-aio-domaincheck';
$container = $this->containerDefinitionFetcher->GetContainerById($id); $cacheKey = 'domaincheckWasStarted';
// don't start if the domaincheck is already running
if ($container->GetIdentifier() === $id && $container->GetRunningState() instanceof RunningState) { $domaincheckContainer = $this->containerDefinitionFetcher->GetContainerById($id);
return; $apacheContainer = $this->containerDefinitionFetcher->GetContainerById(self::TOP_CONTAINER);
// don't start if apache is already running // Don't start if apache is already running
} elseif ($container->GetIdentifier() === self::TOP_CONTAINER && $container->GetRunningState() instanceof RunningState) { if ($apacheContainer->GetRunningState() instanceof RunningState) {
return; return;
// Don't start if domaincheck is already running
} elseif ($domaincheckContainer->GetRunningState() instanceof RunningState) {
$domaincheckWasStarted = apcu_fetch($cacheKey);
// Start domaincheck again when 10 minutes are over by not returning here
if($domaincheckWasStarted !== false && is_string($domaincheckWasStarted)) {
return;
}
} }
$this->PerformRecursiveContainerStart($id); $this->PerformRecursiveContainerStart($id);
// Cache the start for 10 minutes
apcu_add($cacheKey, '1', 600);
} }
private function StopDomaincheckContainer() : void private function StopDomaincheckContainer() : void