85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Jilo components status checks
 | 
						|
 *
 | 
						|
 * This page ("status") checks the status of various Jilo platform components
 | 
						|
 * by fetching data from agents and determining their availability.
 | 
						|
 * It generates output for each platform and agent.
 | 
						|
 */
 | 
						|
 | 
						|
// Get any new messages
 | 
						|
include '../app/includes/messages.php';
 | 
						|
include '../app/includes/messages-show.php';
 | 
						|
 | 
						|
require '../app/classes/agent.php';
 | 
						|
require '../app/classes/host.php';
 | 
						|
$agentObject = new Agent($dbWeb);
 | 
						|
$hostObject = new Host($dbWeb);
 | 
						|
 | 
						|
include '../app/templates/status-server.php';
 | 
						|
 | 
						|
// loop through all platforms to check their agents
 | 
						|
foreach ($platformsAll as $platform) {
 | 
						|
 | 
						|
    // check if we can connect to the jilo database
 | 
						|
    $response = connectDB($config, 'jilo', $platform['jilo_database'], $platform['id']);
 | 
						|
    if ($response['error'] !== null) {
 | 
						|
        $jilo_database_status = $response['error'];
 | 
						|
    } else {
 | 
						|
        $jilo_database_status = 'Connected';
 | 
						|
    }
 | 
						|
 | 
						|
    include '../app/templates/status-platform.php';
 | 
						|
 | 
						|
    // fetch hosts for the current platform
 | 
						|
    $hostDetails = $hostObject->getHostDetails($platform['id']);
 | 
						|
    foreach ($hostDetails as $host) {
 | 
						|
        // fetch agent details for the current host
 | 
						|
        $agentDetails = $agentObject->getAgentDetails($host['id']);
 | 
						|
        foreach ($agentDetails as $agent) {
 | 
						|
            // we try to parse the URL to scheme:/host:port
 | 
						|
            $agent_url = parse_url($agent['url']);
 | 
						|
            $agent_protocol = isset($agent_url['scheme']) ? $agent_url['scheme']: '';
 | 
						|
            // on failure we keep the full value for displaying purpose
 | 
						|
            $agent_host = isset($agent_url['host']) ? $agent_url['host']: $agent['url'];
 | 
						|
            $agent_port = isset($agent_url['port']) ? $agent_url['port']: '';
 | 
						|
 | 
						|
            // we get agent data to check availability
 | 
						|
            $agent_response = $agentObject->fetchAgent($agent['id'], true);
 | 
						|
            $agent_data = json_decode($agent_response);
 | 
						|
 | 
						|
            // determine agent availability based on response data
 | 
						|
            if (json_last_error() === JSON_ERROR_NONE) {
 | 
						|
                $agent_availability = 'unknown';
 | 
						|
                foreach ($agent_data as $key => $value) {
 | 
						|
                    if ($key === 'error') {
 | 
						|
                        $agent_availability = $value;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    if (preg_match('/_state$/', $key)) {
 | 
						|
                        if ($value === 'error') {
 | 
						|
                            $agent_availability = 'not running';
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                        if ($value === 'running') {
 | 
						|
                            $agent_availability = 'running';
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            } else {
 | 
						|
                $agent_availability = 'json error';
 | 
						|
            }
 | 
						|
 | 
						|
            include '../app/templates/status-agent.php';
 | 
						|
        }
 | 
						|
    }
 | 
						|
    echo "\n\t\t\t\t\t\t\t</div>\n";
 | 
						|
}
 | 
						|
echo "\n\t\t\t\t\t\t</div>";
 | 
						|
echo "\n\t\t\t\t\t</div>";
 | 
						|
echo "\n\t\t\t\t</div>";
 | 
						|
 | 
						|
?>
 |