* @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(); if($istat['status']==2){ shell_exec("kill -9 ".$istat['pid']); 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['status']==1){ shell_exec("sudo /bin/systemctl restart austria"); }elseif($istat['status']==2){ shell_exec("kill -9 ".$istat['pid']); sleep(5); shell_exec("sudo /bin/systemctl restart austria"); } $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['status']==1){ return 'OK - Running - Process ID: '.$status['pid'].''; }elseif($status['status']==2){ return 'ALERT - Zombie - Process ID: '.$status['pid'].''; }else{ return 'ALERT - Stopped'; } } function get_status(){ $dat='/bin/systemctl status austria|grep "Main PID"'; exec($dat,$cat); $data = explode(" ",$cat[0]); $r['pid'] = $data[5]; exec("ps ax|grep ".$r['pid']."|grep -v grep",$ps); if(empty($ps)){ $r['status'] = 0; } else { $psr = preg_split("/\s/", $ps[0]); $psr = $this->removeEmptyValues($psr); $status = $psr[2]; $status=substr($status, 0, 1); if($status=="S"||$status=="R"){ $r['status'] = 1; }elseif($status=="Z"){ $r['status'] = 2; }else{ $r['status'] = 0; } } return $r; } function removeEmptyValues($ar) { $result = array(); foreach($ar as $value){ $value = trim($value); if (strlen($value)) $result[] = $value; } return $result; } } ?>