* @package astat module * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ */ If (!defined("in_BL_ADMIN")) { die("Dieses Script kann nicht ausserhalb des Frameworks laufen!"); } $session->page_begin("chat_admin", True); class manage_chat_panel extends admin_module{ function output(){ global $config, $db,$panel, $cache, $session; if(isset($_POST['start'])){ $istat = $this->get_status(); exec('/bin/systemctl status austria|grep running',$cat); $cat = trim($cat[0]); if($istat==2 && $cat!="not"){ shell_exec("kill -9 ".$cat); sleep(5); shell_exec("sudo /bin/systemctl restart austria"); }else{ shell_exec("sudo /bin/systemctl restart austria"); } $panel->admin_message("Triggered", 'The Chatstart has been triggered. please refresh the page to see if it was successful.',TRUE,"manage_chat"); }elseif(isset($_POST['emergency'])){ $istat = $this->get_status(); if($istat==1){ shell_exec("sudo /sbin/restart topia"); }elseif($istat==2){ shell_exec("sudo /sbin/restart topia"); } $panel->admin_message("Triggered", 'The Emergency Chatrestart has been triggered. please refresh the page to see if it was successful.',TRUE,"manage_chat"); }else{ $count=false; $panel->title="Manage Chat"; $panel->form(array('action'=>$config['path'].'/admin/index.php?panel=manage_chat')); $panel->content.='

Status:

'; $istat = $this->get_status(); $status = $this->get_readable_status($istat); $panel->content.=$status.'
'; if($istat==1){ $extra='disabled="disabled"'; } $panel->submit(array('name'=>'start'),'value="Start"'.$extra); $panel->submit(array('name'=>'emergency'),'value="Emergency Restart"'); $panel->formClose(); } } function get_readable_status($status){ global $db, $config, $cache, $log; if($status==1){ exec('/sbin/status topia|awk \'{ print $4}\'',$cat); $cat = trim($cat[0]); return 'OK - Running - Process ID: '.$cat.''; }elseif($status==2){ exec('/sbin/status topia|awk \'{ print $4}\'',$cat); $cat = trim($cat[0]); return 'ALERT - Zombie - Process ID: '.$cat.''; }else{ return 'ALERT - Stopped'; } } function get_status(){ global $db, $config, $cache, $log; $dat="/sbin/status topia|awk '{ print $4}'"; exec($dat,$cat); $cat = trim($cat[0]); if($cat!='not'){ exec("ps ax|grep ".$cat."|grep -v grep",$ps); $psr = preg_split("/\s/", $ps[0]); $psr = $this->removeEmptyValues($psr); $status = $psr[2]; $status=substr($status, 0, 1); if($status=="S"||$status=="R"){ return 1; }elseif($status=="Z"){ return 2; }else{ return 0; } }else{ return 0; } } function removeEmptyValues($ar) { $result = array(); foreach($ar as $value){ $value = trim($value); if (strlen($value)) $result[] = $value; } return $result; } } ?>