host = $host; $this->auth = $auth; $this->db = $host->getConnection(); } public static function find(IcingaHost $host, $serviceName) { foreach ([ SingleServiceInfo::class, InheritedServiceInfo::class, ServiceSetServiceInfo::class, AppliedServiceInfo::class, AppliedServiceSetServiceInfo::class, ] as $class) { /** @var ServiceInfo $class */ if ($info = $class::find($host, $serviceName)) { return $info; } } return false; } /** * @param $serviceName * @return Url */ public function getRedirectionUrl($serviceName) { if ($this->auth === null) { throw new RuntimeException('Auth is required for ServiceFinder when dealing when asking for URLs'); } if ($this->auth->hasPermission('director/host')) { if ($info = $this::find($this->host, $serviceName)) { return $info->getUrl(); } } if ($this->auth->hasPermission('director/monitoring/services-ro')) { return Url::fromPath('director/host/servicesro', [ 'name' => $this->host->getObjectName(), 'service' => $serviceName ]); } return Url::fromPath('director/host/invalidservice', [ 'name' => $this->host->getObjectName(), 'service' => $serviceName, ]); } }