* @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('/sbin/status topia|awk \'{ print $4}\'',$cat);
$cat = trim($cat[0]);
if($istat==2 && $cat!="not"){
shell_exec("kill -9 ".$cat);
sleep(5);
shell_exec("sudo /sbin/restart topia");
}else{
shell_exec("sudo /sbin/restart topia");
}
$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;
}
}
?>