accludetuner |
06-21-2009 07:10 PM |
Got this working on 3.8.2. I have it using the hook of "admin_index_main3". I also made slight change to the code to only allow Super Administrators to be able to view/kill processes due to the possible problems an unknowing user could cause. Here's my code:
PHP Code:
if (in_array($vbulletin->userinfo['userid'], preg_split('#\s*,\s*#s', $vbulletin->config['SpecialUsers']['superadministrators'], -1, PREG_SPLIT_NO_EMPTY)) ) {
/* Server Load */ if ($_REQUEST["kill_process"] && is_numeric($_REQUEST["kill_process"])) { $process_id = $_REQUEST["kill_process"]; if ($_POST["no"]) { } elseif ($_POST["yes"]) { exec("kill -9 ".$process_id.""); print_table_start(); print_table_header('<a name="killprocess"></a>TOP - Server Load - Kill Process '.$process_id.'',1); print_description_row('Process killed!',false,1); print_table_footer(2, '', '', false); } else { exec('ls -la /proc/'.$process_id.'/', $procdata, $error ); $proctxt = ''; foreach ($procdata as $procline) { $proctxt .= trim($procline)."\n"; } print_table_start(); print_table_header('<a name="killprocess"></a>TOP - Server Load - Kill Process '.$process_id.'',1); print_description_row('<form method="post" action="index.php?do=home&kill_process='.$process_id.'#killprocess"> Are you sure you want to kill this process? <div style="padding:10px;"><textarea style="width:550px;height:200px;">'.$proctxt.'</textarea></div><input type="submit" name="yes" value="Yes"> <input type="submit" name="no" value="No"> </form>',false,1); print_table_footer(2, '', '', false); } }
print_table_start(); print_table_header('TOP - Server Load',12); exec('top n 1 b i', $top, $error ); $is_toptable = false; foreach ($top as $topline) { $topline = trim($topline); if (!$topline) { continue 1; } if (!$is_toptable && !preg_match('|^PID|Ui',$topline)) { if (preg_match('|^top - (.*)$|Ui',$topline,$out)) { print_description_row('<b>TOP:</b> '.$out[1],false,12); } else { if (preg_match('|^([^:]+): (.*)$|Ui',$topline,$out)) { print_description_row('<b>'.$out[1].':</b> '.$out[2],false,12); } else { print_description_row($topline,false,12); } } } else { $topvals = preg_split('|[ ]+|s',$topline); if (!$is_toptable) { foreach ($topvals as $key => $value) { $topvals[$key] = '<b>'.$value.'</b>'; } } else { $topvals[0] .= ' <a href="index.php?do=home&kill_process='.$topvals[0].'#killprocess" style="color:red;">X</a>'; } print_cells_row(array( $topvals[0], $topvals[1], $topvals[2], $topvals[3], $topvals[4], $topvals[5], $topvals[6], $topvals[7], $topvals[8], $topvals[9], $topvals[10], $topvals[11] ), 0, 0, -5, 'top', 1, 1); $is_toptable = true; } } print_table_footer(2, '', '', false); }
Thanks! *Installed*
|