| Server IP : 23.111.136.34 / Your IP : 216.73.216.136 Web Server : Apache System : Linux servidor.eurohost.com.br 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : meusitei ( 1072) PHP Version : 5.6.40 Disable Function : show_source, system, shell_exec, passthru, proc_open MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/src/bitninja-whm/src/ |
Upload File : |
<?php
/**
* Description of Bitninja
*
* @author Joseph Easy
*/
class Bitninja
{
private static function _buildLogFilesArray()
{
$logFiles = array(
'error.log',
'main.log',
);
$moduleLogFiles = scandir("/var/log/bitninja/");
foreach ($moduleLogFiles as $key => $logFile) {
if (!preg_match('/^mod\..*\.log$/', $logFile)) {
unset($moduleLogFiles[$key]);
}
}
$logFiles = array_merge($logFiles, array_values($moduleLogFiles));
$array = array();
foreach ($logFiles as $logFile) {
$array[] = array(
'filename' => $logFile,
'lines' => exec("sed -n '$=' /var/log/bitninja/$logFile"),
'modified' => filemtime("/var/log/bitninja/$logFile")
);
}
return $array;
}
private static function _sortLogFiles($fileLogsArray, $sortBy)
{
$modified = array();
foreach ($fileLogsArray as $key => $row) {
$modified[$key] = $row['modified'];
}
array_multisort($modified, $sortBy, $fileLogsArray);
return $fileLogsArray;
}
private static function _searchLogInArray($array, $filename)
{
foreach ($array as $key => $item) {
if ($item['filename'] == $filename) {
return $key;
}
}
}
public static function getAndBuildLogs($isFirstRun, $prevLogFilesData = array())
{
$LogFilesData = self::_buildLogFilesArray();
$logs = array();
if ($isFirstRun) {
$logFilesData = self::_sortLogFiles($LogFilesData, SORT_DESC);
$diffTime = strtotime("-5 minute");
foreach ($logFilesData as $data) {
if ($data['modified'] >= $diffTime) {
exec('tail /var/log/bitninja/' . $data['filename'] . ' -n 3', $lines);
$logs = array_merge($lines, $logs);
} else {
break;
}
}
$logsReverse = ($logs);
$logs = array();
foreach ($logsReverse as $log) {
$separatedLogs = explode('\n', $log);
$logs = array_merge($separatedLogs, $logs);
}
} else {
$logFilesData = self::_sortLogFiles($LogFilesData, SORT_ASC);
foreach ($logFilesData as $data) {
$key = self::_searchLogInArray($prevLogFilesData, $data['filename']);
if ($prevLogFilesData[$key]['lines'] < $data['lines']) {
$diffLines = $data['lines'] - $prevLogFilesData[$key]['lines'];
exec('tail /var/log/bitninja/' . $data['filename'] . ' -n ' . $diffLines, $lines);
$logs = array_merge($lines, $logs);
}
}
}
return json_encode(array('logs' => $logs, 'logFilesDatas' => $logFilesData));
}
public static function getVersion()
{
$version = exec('rpm -q bitninja');
$version = explode('-', $version);
return $version[1];
}
public static function isRun()
{
$response = exec('/bin/ps cax | /bin/grep bitninja');
return $response != null && $response != '';
}
public static function start()
{
exec('/etc/init.d/bitninja start');
}
public static function stop()
{
exec('/etc/init.d/bitninja stop');
}
public static function getLicenseInfo(){
$output = shell_exec("bitninjacli --licenseinfo | grep info | grep -oE '[^ ]+$' | xargs");
$output = preg_replace('/.*\[.*\] - \|.*\| ([a-z_]+)/','$1',$output);
$output = str_replace('_',' ',$output);
$output = ucfirst($output);
return $output;
}
public static function checkGL($ip){
$response = [];
$ip = trim($ip);
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){
$response['success'] = false;
$response['message'] = 'The IP address is invalid!';
return json_encode($response);
}
$output = exec("bitninjacli --greylist --check=$ip | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g'");
$output = preg_replace('/.*\[.*\] - \|.*\| (.*).*/','$1',$output);
$response['success'] = true;
$response['message'] = $output;
return json_encode($response);
}
}