!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/local/lsws/admin/html.open/lib/ows/   drwxr-xr-x
Free 13.09 GB of 57.97 GB (22.59%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     RealTimeStats.php (11.19 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

class RealTimeStats
{

    const 
FLD_BPS_IN 0;
    const 
FLD_BPS_OUT 1;
    const 
FLD_SSL_BPS_IN 2;
    const 
FLD_SSL_BPS_OUT 3;
    const 
FLD_PLAINCONN 4;
    const 
FLD_IDLECONN 5;
    const 
FLD_SSLCONN 6;
    const 
FLD_S_REQ_PROCESSING 7;
    const 
FLD_S_REQ_PER_SEC 8;
    const 
FLD_UPTIME 9;
    const 
FLD_MAXCONN 10;
    const 
FLD_MAXSSL_CONN 11;
    const 
FLD_AVAILCONN 12;
    const 
FLD_AVAILSSL 13;
    const 
FLD_BLOCKEDIP_COUNT 14;
    const 
FLD_S_TOT_REQS 15;
    const 
COUNT_FLD_SERVER 16;
    const 
FLD_BLOCKEDIP 16;
    
//const FLD_VH_NAME = 0;
    
const FLD_VH_EAP_INUSE 0;
    const 
FLD_VH_EAP_WAITQUE 1;
    const 
FLD_VH_EAP_IDLE 2;
    const 
FLD_VH_EAP_REQ_PER_SEC 3;
    const 
FLD_VH_REQ_PROCESSING 4;
    const 
FLD_VH_REQ_PER_SEC 5;
    const 
FLD_VH_TOT_REQS 6;
    const 
FLD_VH_EAP_COUNT 7;
    const 
COUNT_FLD_VH 8;
    const 
FLD_EA_CMAXCONN 0;
    const 
FLD_EA_EMAXCONN 1;
    const 
FLD_EA_POOL_SIZE 2;
    const 
FLD_EA_INUSE_CONN 3;
    const 
FLD_EA_IDLE_CONN 4;
    const 
FLD_EA_WAITQUE_DEPTH 5;
    const 
FLD_EA_REQ_PER_SEC 6;
    const 
FLD_EA_TOT_REQS 7;
    const 
FLD_EA_TYPE 8;
    const 
COUNT_FLD_EA 9;

    private 
$_serv;
    private 
$_vhosts;
    private 
$_rawdata;

    private function 
__construct()
    {
        
$this->_rawdata '';
        
$processes $_SERVER['LSWS_CHILDREN'];
        
$statsDir = isset($_SERVER['LSWS_STATDIR']) ? $_SERVER['LSWS_STATDIR'] : '/tmp/lshttpd';

        
$rtrpt rtrim($statsDir'/') . '/.rtreport';
        for (
$i 1$i <= $processes$i ++) {
            if (
$i 1)
                
$this->_rawdata .= "\n" file_get_contents("{$rtrpt}.{$i}");
            else {
                
$this->_rawdata file_get_contents($rtrpt);
                if (
$this->_rawdata == false)
                    break; 
// fail to open, may due to restart, ignore
            
}
        }
    }

    public static function 
GetDashPlot()
    {
        
$stat = new RealTimeStats();
        
$stat->parse_server();
        return 
$stat->_serv;
    }

    public static function 
GetPlotStats()
    {
        
$stat = new RealTimeStats();
        
$stat->parse_server();
        
$stat->parse_plotvh();
        
$stat->_rawdata '';

        return 
$stat;
    }

    public static function 
GetVHStats()
    {
        
$stat = new RealTimeStats();
        
$stat->parse_vhosts();
        
$stat->_rawdata '';

        return 
$stat;
    }

    public function 
GetServerData()
    {
        return 
$this->_serv;
    }

    public function 
GetVHData()
    {
        return 
$this->_vhosts;
    }

    private function 
parse_server()
    {
        
$this->_serv array_fill(0self::COUNT_FLD_SERVER0);
        
//error_log("rawdata = " . $this->_rawdata);

        
$m = [];
        if (
$found preg_match_all("/^UPTIME: ([0-9A-Za-z\ \:]+)\nBPS_IN:([0-9\ ]+), BPS_OUT:([0-9\ ]+), SSL_BPS_IN:([0-9\ ]+), SSL_BPS_OUT:([0-9\ ]+)\nMAXCONN:([0-9\ ]+), MAXSSL_CONN:([0-9\ ]+), PLAINCONN:([0-9\ ]+), AVAILCONN:([0-9\ ]+), IDLECONN:([0-9\ ]+), SSLCONN:([0-9\ ]+), AVAILSSL:([0-9\ ]+)/m"$this->_rawdata$m)) {
            for (
$f 0$f $found$f ++) {
                
$this->_serv[self::FLD_UPTIME] = trim($m[1][$f]);
                
$this->_serv[self::FLD_BPS_IN] += (int) $m[2][$f];
                
$this->_serv[self::FLD_BPS_OUT] += (int) $m[3][$f];
                
$this->_serv[self::FLD_SSL_BPS_IN] += (int) $m[4][$f];
                
$this->_serv[self::FLD_SSL_BPS_OUT] += (int) $m[5][$f];

                
$this->_serv[self::FLD_MAXCONN] += (int) $m[6][$f];
                
$this->_serv[self::FLD_MAXSSL_CONN] += (int) $m[7][$f];

                
$this->_serv[self::FLD_PLAINCONN] += (int) $m[8][$f];
                
$this->_serv[self::FLD_AVAILCONN] += (int) $m[9][$f];
                
$this->_serv[self::FLD_IDLECONN] += (int) $m[10][$f];

                
$this->_serv[self::FLD_SSLCONN] += (int) $m[11][$f];
                
$this->_serv[self::FLD_AVAILSSL] += (int) $m[12][$f];
            }
        }

        
$m = [];
        if (
$found preg_match_all("/^BLOCKED_IP: ([0-9 \[\]\.,]*)/m"$this->_rawdata$m)) {
            
$blockedips = [];

            for (
$f 0$f $found$f ++) {
                
$ips trim($m[1][$f]);
                if (
$ips != "") {
                    
$iplist preg_split("/[\s,]+/"$ips, -1PREG_SPLIT_NO_EMPTY);
                    
$blockedips array_merge($blockedips$iplist);
                }
            }
            
//$this->_serv[self::FLD_BLOCKEDIP] = $blockedips;
            
$this->_serv[self::FLD_BLOCKEDIP_COUNT] = count($blockedips);
        }


        
$m = [];
        if (
$found preg_match_all("/^REQ_RATE \[\]: REQ_PROCESSING: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+)/m"$this->_rawdata$m)) {
            for (
$f 0$f $found$f ++) {
                
$this->_serv[self::FLD_S_REQ_PROCESSING] += (int) $m[1][$f];
                
$this->_serv[self::FLD_S_REQ_PER_SEC] += doubleval($m[2][$f]);
                
$this->_serv[self::FLD_S_TOT_REQS] += doubleval($m[3][$f]);
            }
        }
    }

    private function 
parse_plotvh()
    {
        
$this->_vhosts = [];

        
$vhmonitored null;
        if (isset(
$_REQUEST['vhnames']) && is_array($_REQUEST['vhnames']))
            
$vhmonitored $_REQUEST['vhnames'];
        else
            return;

        
$vhosts = [];
        
$m = [];
        
$found preg_match_all("/REQ_RATE \[(.+)\]: REQ_PROCESSING: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+)/i"$this->_rawdata$m);
        
//$found = preg_match_all("/REQ_RATE \[(.+)\]: REQ_PROCESSING: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+), CACHE_HITS_PER_SEC: ([0-9\.]+), TOTAL_CACHE_HITS: ([0-9]+)/i", $this->_rawdata, $m);

        
for ($f 0$f $found$f ++) {
            
$vhname trim($m[1][$f]);

            if (
$vhmonitored != null && !in_array($vhname$vhmonitored))
                continue;

            if (!isset(
$vhosts[$vhname])) {
                
$vhosts[$vhname] = array_fill(0self::COUNT_FLD_VH0);
                
$vhosts[$vhname]['ea'] = [];
            }
            
$vh = &$vhosts[$vhname];
            
$vh[self::FLD_VH_REQ_PROCESSING] += (int) $m[2][$f];
            
$vh[self::FLD_VH_REQ_PER_SEC] += doubleval($m[3][$f]);
            
$vh[self::FLD_VH_TOT_REQS] += doubleval($m[4][$f]);
        }

        
//reset
        
$m = [];
        
$found preg_match_all("/EXTAPP \[(.+)\] \[(.+)\] \[(.+)\]: CMAXCONN: ([0-9]+), EMAXCONN: ([0-9]+), POOL_SIZE: ([0-9]+), INUSE_CONN: ([0-9]+), IDLE_CONN: ([0-9]+), WAITQUE_DEPTH: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+)/i"$this->_rawdata$m);

        for (
$f 0$f $found$f ++) {
            
$vhname trim($m[2][$f]);
            
$extapp trim($m[3][$f]);

            if (
$vhname == '') {
                
$vhname '_Server';
                if (!isset(
$vhosts[$vhname])) {
                    
$vhosts[$vhname] = array_fill(0self::COUNT_FLD_VH0);
                    
$vhosts[$vhname]['ea'] = [];
                }
            } else {
                if (!isset(
$vhosts[$vhname]))
                    continue;
            }

            if (!isset(
$vhosts[$vhname]['ea'][$extapp])) {
                
$vhosts[$vhname][self::FLD_VH_EAP_COUNT] ++;
                
$vhosts[$vhname]['ea'][$extapp] = 1;
            }

            
$vhosts[$vhname][self::FLD_VH_EAP_INUSE] += (int) $m[7][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_IDLE] += (int) $m[8][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_WAITQUE] += (int) $m[9][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_REQ_PER_SEC] += doubleval($m[10][$f]);
        }

        
$this->_vhosts $vhosts;
    }

    private function 
parse_vhosts()
    {
        
$this->_vhosts = [];

        
$top UIBase::GrabGoodInput("request""vh_topn"'int');
        
$filter UIBase::GrabGoodInput("request""vh_filter""string");
        
$sort UIBase::GrabGoodInput("request""vh_sort""int");

        
$vhosts = [];
        
$m = [];
        
$found preg_match_all("/REQ_RATE \[(.+)\]: REQ_PROCESSING: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+)/i"$this->_rawdata$m);

        for (
$f 0$f $found$f ++) {
            
$vhname trim($m[1][$f]);

            if (
$filter != "" && (!preg_match("/$filter/i"$vhname)))
                continue;

            if (!isset(
$vhosts[$vhname])) {
                
$vhosts[$vhname] = array_fill(0100);
                
$vhosts[$vhname]['ea'] = [];
            }
            
$vh = &$vhosts[$vhname];
            
$vh[self::FLD_VH_REQ_PROCESSING] += (int) $m[2][$f];
            
$vh[self::FLD_VH_REQ_PER_SEC] += doubleval($m[3][$f]);
            
$vh[self::FLD_VH_TOT_REQS] += doubleval($m[4][$f]);
        }

        
//reset
        
$m = [];
        
$found preg_match_all("/EXTAPP \[(.+)\] \[(.+)\] \[(.+)\]: CMAXCONN: ([0-9]+), EMAXCONN: ([0-9]+), POOL_SIZE: ([0-9]+), INUSE_CONN: ([0-9]+), IDLE_CONN: ([0-9]+), WAITQUE_DEPTH: ([0-9]+), REQ_PER_SEC: ([0-9\.]+), TOT_REQS: ([0-9]+)/i"$this->_rawdata$m);

        for (
$f 0$f $found$f ++) {
            
$vhname trim($m[2][$f]);
            
$extapp trim($m[3][$f]);

            if (
$vhname == '') {
                
$vhname '_Server';
                if (!isset(
$vhosts[$vhname])) {
                    
$vhosts[$vhname] = array_fill(0100);
                    
$vhosts[$vhname]['ea'] = [];
                }
            } else {
                if (!isset(
$vhosts[$vhname]))
                    continue;
            }

            if (!isset(
$vhosts[$vhname]['ea'][$extapp])) {
                
$vhosts[$vhname][self::FLD_VH_EAP_COUNT] ++;
                
$vhosts[$vhname]['ea'][$extapp] = array_fill(080);
            }

            
$ea = &$vhosts[$vhname]['ea'][$extapp];
            
$ea[self::FLD_EA_TYPE] = trim($m[1][$f]);
            
$ea[self::FLD_EA_CMAXCONN] += (int) $m[4][$f];
            
$ea[self::FLD_EA_EMAXCONN] += (int) $m[5][$f];
            
$ea[self::FLD_EA_POOL_SIZE] += (int) $m[6][$f];
            
$ea[self::FLD_EA_INUSE_CONN] += (int) $m[7][$f];
            
$ea[self::FLD_EA_IDLE_CONN] += (int) $m[8][$f];
            
$ea[self::FLD_EA_WAITQUE_DEPTH] += (int) $m[9][$f];
            
$ea[self::FLD_EA_REQ_PER_SEC] += doubleval($m[10][$f]);
            
$ea[self::FLD_EA_TOT_REQS] += doubleval($m[11][$f]);

            
$vhosts[$vhname][self::FLD_VH_EAP_INUSE] += (int) $m[7][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_IDLE] += (int) $m[8][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_WAITQUE] += (int) $m[9][$f];
            
$vhosts[$vhname][self::FLD_VH_EAP_REQ_PER_SEC] += doubleval($m[10][$f]);
        }

        
$sortDesc1 = [];
        
$sortAsc2 = [];
        
$names array_keys($vhosts);
        if (
$sort != "" && count($names) > 1) {
            foreach (
$names as $vhname) {
                if (
$vhosts[$vhname][$sort] > 0) {
                    
$sortDesc1[] = $vhosts[$vhname][$sort];
                    
$sortAsc2[] = $vhname;
                }
            }
            if (
count($sortAsc2) > 0) {
                
array_multisort($sortDesc1SORT_DESCSORT_NUMERIC$sortAsc2SORT_ASCSORT_STRING);
                
$names $sortAsc2;
            }
        }

        if (
$top != && count($names) > $top) {
            
$names array_slice($names0$top);
        }

        foreach (
$names as $vn) {
            
$this->_vhosts[$vn] = $vhosts[$vn];
        }
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.007 ]--