<?
include("./config.php"); //soubor s cofiguracnimi daty

class T_Row // trida ktera bude obsahovat data o jednotlivych procesech
{
    var $cislo;
    var $nazev;
    var $vlastnik;
    var $stav;
    var $cpu;
    var $ram;
    var $start;
    var $ppid;
}
    
function prtobj () // funkce vracejici data programu ps
{
		global $cmdps; // potrebuji globalni promenou ta je ulozena a includovana v config.php
		exec("$cmdps",$result); // vykonani prikazu
		$numb_of_row=0;
		foreach($result as $line) // zpracovani vystupu programu po radcich a ulozeni do pole zaznamu
		{
			if ($numb_of_row)
			{
				$My_ArrayOfRow[]=$My_NewRow = new T_Row; // data do pole
				$line = Str_Replace ("|"," ", $line);  // parsovaci upravy
				$line = Str_Replace ("     ", " ", $line);
				$line = Str_Replace ("    ", " ", $line);
				$line = Str_Replace ("   ", " ", $line);
				$line = Str_Replace ("  ", " ", $line);
	
				$line_array= explode(' ',$line); // oddeleni jednotlivych dat v konkretnim radku
				$My_NewRow->cislo=$numb_of_row;			// ukladani dat do policek zaznamu
				$My_NewRow->vlastnik=$line_array[0];
				$My_NewRow->cpu=$line_array[1];
				$My_NewRow->ram=$line_array[2];
				$My_NewRow->stav=$line_array[3];
				$My_NewRow->start=$line_array[4];
				$My_NewRow->ppid=$line_array[5];
				if ($line_array[6]=="\_") // zmena nazvu ulohy ktera byla spustena jinou ulohou 
					$My_NewRow->nazev="-".$line_array[7];
				else
					$My_NewRow->nazev=$line_array[6];
			}
			$numb_of_row++; // dalsi zaznam (radek)
		}
		return $My_ArrayOfRow; // vraci pole
}
		
		function najdi ($cmd)
{
    $vrat="";
    
    exec("$cmd", $result);
    for($index=0;$index<=strlen($result); $index++)
        if ($result[0][$index] === '0' || $result[0][$index] === '1' || $result[0][$index] === '2' || $result[0][$index] === '3' || $result[0][$index] === '4' || $result[0][$index] === '5' || $result[0][$index] === '6' || $result[0][$index] === '7' || $result[0][$index] === '8' || $result[0][$index] === '9' || $result[0][$index] === '.' || $result[0][$index] === ' ')
	    $vrat=$vrat.$result[0][$index];
        else
           break;
   return $vrat;
}
function prtuptime() // funkce vracejici dobu behu serveru
{
		global $cmduptime; // potrebuji globalni promenou ta je ulozena a includovana v config.php
    $fp = fopen($cmduptime, "r"); // data beru ze souboru
    $text = fread($fp, 15);
    $line_array= explode(' ',$text);
    $text= explode('.',$line_array[0]); // uprava dat
    $line=$text[0];
    fclose($soubor);
    return $line; // vraceni dat
}

function prtcpu() // funkce vraci vyuziti procesoru
{
    global $cmdcpu; // potrebuji globalni promenou ta je ulozena a includovana v config.php
    return najdi($cmdcpu);
}
	
function prtramall($param)  // funkce vraci celkou velikost pameti
{
    global $cmdramall; // potrebuji globalni promenou ta je ulozena a includovana v config.php
    Switch ($param) // funkce je volana s parametrem v jakych jednotkach chceme ulozit data
    {
			case "MB":
				return round(najdi($cmdramall)/1024,1);
				break;
    
			case "GB":
				return round(najdi($cmdramall)/(1024*1024),2);
				break;
    
			case "TB":
				return round(najdi($cmdramall)/(1024*1024*1024),2);
				break;
    
			default:
				return najdi($cmdramall);// defaultne se vraci kB
    }
}

function prtramused($param) // funkce vraci vyuziti pameti
{
    global $cmdramused; // potrebuji globalni promenou ta je ulozena a includovana v config.php
    Switch ($param) // funkce je volana s parametrem v jakych jednotkach chceme ulozit data
    {
			case "MB":
        return round(najdi($cmdramused)/1024,1);
				break;

			case "GB":
        return round(najdi($cmdramused)/(1024*1024),2);
				break;
			
			case "TB":
        return round(najdi($cmdramused)/(1024*1024*1024),2);
				break;
							
			default:
        return najdi($cmdramused); // defaultne se vraci kB
    }
}

 // inicializace objektu SOAP pro komunikaci se vzdalenym admin serverem
$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction('prtuptime');// zacleneni potrebnych funkci do SOAP
$server->addFunction('prtobj');
$server->addFunction('prtcpu');
$server->addFunction('prtramall');
$server->addFunction('prtramused');
$server->handle(); 
?>
												     					       
