Sindbad~EG File Manager

Current Path : /opt/nginxhttpd_/vendor/extensions-cpanel/cpanel-development-lib/src/Service/
Upload File :
Current File : //opt/nginxhttpd_/vendor/extensions-cpanel/cpanel-development-lib/src/Service/HealthCheck.php

<?php

namespace O2switch\CpanelLib\Service;

use O2switch\CpanelLib\Client\NginxVarnish;
use O2switch\CpanelLib\DataEntity\NginxVarnishConfig;
use O2switch\CpanelLib\Helper\ConfigHelper;

class HealthCheck
{
    /** @var NginxVarnish */
    private $nginxVarnish;
    /** @var ConfigHelper */
    private $configHelper;

    public function __construct(NginxVarnish $nginxVarnish, ConfigHelper $configHelper){
        $this->nginxVarnish = $nginxVarnish;
        $this->configHelper = $configHelper;
    }

    public function healthCheck(string $type) : bool {
        $servers = $this->typeToServersIds($type);
        foreach($servers as $server){
            $serverId = key($server);
            $appType = $server[$serverId];

            try {
                $config = (new NginxVarnishConfig())
                    ->setAlgo($this->configHelper->getServerAlgo($serverId))
                    ->setPort($this->configHelper->getServerPort($serverId, $appType))
                    ->setSecretHash($this->configHelper->getServerSecret($serverId))
                    ->setToken($this->configHelper->getServerToken($serverId))
                    ->setServerIp($this->configHelper->getServerMainIp($serverId));
                if(!$this->nginxVarnish->setConfig($config)->health($appType)){
                    return false;
                }
            } catch (\Exception $e){
                return false;
            }
        }
        return true;
    }

    /**
     * @param string $type
     * @return array[] of serverId => appType
     */
    protected function typeToServersIds(string $type) : array  {
        // We just check one server, the cluster will be checked on the API directly, for instance, while testing server1
        // it will also check all ipxtender servers. The logic of looping over the clusters is on the API, not here.
        switch($type){
            default:
            case 'nginx':
                return [['server1' => 'nginx']];
            case 'varnish':
            case 'xtremcache':
                return [['server1' => 'nginx'], ['varnish-1' => 'varnish'], ['varnish-1' => 'forwarder']];
            case 'litespeed':
            case 'lslb':
                return [['server1' => 'nginx'], ['lslb-1'=> 'lslb'], ['lslb-1' => 'forwarder']];
        }
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists