#!/usr/bin/php
<?php
define('ECATP_TIMEOUT',50);
define('ECATP_RETRY',1);
define('ECATP_RETRY_TIMEOUT',10);
define('DEBUG_MODE',false);

$user = get_current_user();
$debug_mode = DEBUG_MODE;
$debug_file = "/tmp/check_gesa_$user.log";

$bin_path = '/usr/local/esia/plugins';
$bin_name = 'check_gesa_bin';
$bin_cmd = "$bin_path/$bin_name";

$argvCopy = $GLOBALS['argv'];
array_shift($argvCopy);

$tmp = array();

if( $debug_mode )
{
        $now = new DateTime();
        $date = $now->format('Y-m-d H:i:s'); // Exemple : 2025-10-03 21:45:12
	$cmd = "$bin_cmd ".implode(" ",$argvCopy);
        file_put_contents($debug_file,"$date BEFORE : $cmd\n",FILE_APPEND|LOCK_EX);
}


for($i=0;$i<count($argvCopy);$i++)
{
	$tmp[] = $argvCopy[$i];
	if( trim($argvCopy[$i]) == '-A' )
	{
		$i++;
		$row = array();
		for($j=$i;$j<count($argvCopy);$j++)
		{
			$row[] = $argvCopy[$j];
		}
		$tmp[] = "'".implode(' ',$row)."'";
		$i=$j;
	}
}
$argvCopy = $tmp;

$params = implode(' ',$argvCopy);
$cmd = "$bin_cmd ". $params;

if( $debug_mode )
{
	$now = new DateTime();
	$date = $now->format('Y-m-d H:i:s'); // Exemple : 2025-10-03 21:45:12
	file_put_contents($debug_file,"$date AFTER  : $cmd\n",FILE_APPEND|LOCK_EX);
}


$i=ECATP_RETRY;
do
{
    if( $i != ECATP_RETRY )
    {
        sleep(ECATP_RETRY_TIMEOUT);
    }
    $output = array();
    $f_row=exec($cmd,$output,$ret);
    $i--;

    $end=true;
    if($i < 0 )
    {
        $end = true;
    }
    else if( $ret == 3 )
    {
        if(preg_match('/WEBSOCKET/',$f_row) || 
            preg_match('/NRPE/',$f_row) ||
            preg_match('/ENDPOINT/',$f_row) ||
            preg_match('/Error execute: Bad return code/',$f_row) || 
            preg_match('/EsiaDaemon could not connect to host/',$f_row)
        )
        {
            $end = false;
        }
    }
    elseif( empty(trim(implode("\n",$output))))
    {
        $end = false;
    }
}while(!$end);

//exec($cmd,$output,$ret);
$output = implode("\n",$output);
echo trim($output)."\n";
exit($ret);
