!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\dmz\php\pear\Cache\Container\   drwxrwxrwx
Free 3.24 GB of 39.52 GB (8.2%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     msession.php (7.46 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
// +----------------------------------------------------------------------+
// | PEAR :: Cache                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Ulf Wendel <ulf.wendel@phpdoc.de>                           |
// +----------------------------------------------------------------------+
//
// $Id: msession.php 178289 2005-01-26 09:47:28Z dufuz $

require_once 'Cache/Container.php';

/**
* Stores cache contents in msessions.
*
* WARNING: experimental, untested
*
* @author   Ulf Wendel  <ulf.wendel@phpdoc.de>
* @version  $Id: msession.php 178289 2005-01-26 09:47:28Z dufuz $
*/
class Cache_Container_msession extends Cache_Container
{
    
/**
    * Length of the Cache-Identifier
    *
    * Note that the PEAR-Cache prefixes the ID with an md5() value
    * of the cache-group. A good value for the id_length
    * depends on the maximum number of entries per cache group.
    *
    * @var  int
    */
    
var $id_length 32;
    
    
    
/**
    * Use msession_uniq to create a unique SID.
    * 
    * @var  boolean
    */
    
var $uniq true;
    
    
    
/**
    * Establish a connection to a msession server?
    *
    * @var  boolean
    */
    
var $connect true;
   
   
    
/**
    * msession host
    *
    * @var  string
    */  
    
var $host null;
    
   
    
/**
    * msession port
    *
    * @var  string
    */
    
var $port null;
    
    
    
/**
    * mesession server connection
    *
    * @var  resource msession
    */
    
var $ms null;

    
    function 
Cache_Container_msession($options '')
    {
        if (
is_array($options)) {
            
$this->setOptions($optionsarray_merge($this->allowed_options, array('id_length''uniq''host''port''connect')));
        }
        if (
$connect) {            
            if (
$this->host == null) {
                new 
Cache_Error('No host specified.'__FILE____LINE__);
            }
            if (
$this->port == null) {
                new 
Cache_Error('No port specified.'__FILE____LINE__);
            }
            if (!(
$this->ms msession_connect($this->host$this->port))) {
                new 
Cache_Error('Can not connect to the sever using host "' $this->host '" on port "' $this->port '"'__FILE____LINE__);
            }
        }
        
    } 
// end func contructor

    
function fetch($id$group)
    {
        
$id strtoupper(md5($group)) . $id;
        
$group msession_get($id'_pear_cache_data'null);
        
        if (
$data == null) {
            return array(
nullnullnull);
        }
        return array(
$data['expires'], $data['cachedata'], $data['userdata']);
    } 
// end func fetch

    /**
    * Stores a dataset.
    *
    * WARNING: If you supply userdata it must not contain any linebreaks,
    * otherwise it will break the filestructure.
    */
    
function save($id$cachedata$expires$group$userdata)
    {
        
$this->flushPreload($id$group);
        
        
$cachedata      $this->encode($cachedata);
        
$expires_abs    $this->getExpiresAbsolute($expires);

        
$size strlen($cachedata) + strlen($expires_abs) + strlen($userdata) + strlen($group);
        
$size += strlen($size);
        
        
$data = array(
                    
'cachedata' => $cachedata
                    
'expires'   => $expires_abs,
                    
'userdata'  => $userdata
                  
);
        
$id strtoupper(md5($group)) . $id;
                            
        
msession_lock($id);
        
        if (!
msession_set($id'_pear_cache'true)) {
            
msession_unlock($id);
            return new 
Cache_Error("Can't write cache data."__FILE____LINE__);
        }
        
        if (!
msession_set($id'_pear_cache_data'$data)) {
            
msession_unlock($id);
            return new 
Cache_Error("Can't write cache data."__FILE____LINE__);
        }
        
        if (!
msession_set($id'_pear_cache_group'$group)) {
            
msession_unlock($id);
            return new 
Cache_Error("Can't write cache data."__FILE____LINE__);
        }
        
        if (!
msession_set($id'_pear_cache_size'$size)) {
            
msession_unlock($id);
            return new 
Cache_Error("Can't write cache data."__FILE____LINE__);
        }
        
        
// let msession do some GC as well
        // note that msession works different from the PEAR Cache.
        // msession deletes an entry if it has not been used for n-seconds.
        // PEAR Cache deletes after n-seconds.
        
if ($expires != 0) {
            
msession_timeout($id$expires);
        }
        
msession_unlock($id);

        return 
true;
    } 
// end func save

    
function remove($id$group)
    {
        
$this->flushPreload($id$group);
        return 
msession_destroy(strtoupper(md5($group)) . $id);
    } 
// end func remove

    
function flush($group)
    {
        
$this->flushPreload();
      
        
$sessions msession_find('_pear_cache_group'$group);
        if (empty(
$sessions)) {
            return 
0;
        }

        foreach (
$sessions as $k => $id)
            
messsion_destroy($id);

        return 
count($sessions);
    } 
// end func flush

    
function idExists($id$group)
    {
        return (
msession_get(strtoupper(md5($group)) . $id'_pear_cache_group'null) == null) ? false true;
    } 
// end func idExists

    /**
    * Deletes all expired files.
    *
    * Note: garbage collection should cause lot's of network traffic.
    *
    * @param    integer Maximum lifetime in seconds of an no longer used/touched entry
    * @throws   Cache_Error
    */
    
function garbageCollection($maxlifetime)
    {
        
$this->flushPreload();
        
        
$sessions msession_find('_pear_cache'true);
        if (empty(
$sessions))
            return 
true;
        
        
$total 0;
        
$entries = array();
        
        foreach (
$sessions as $k => $id) {
            
$data msession_get($id'_pear_cache_data'null);
            if (
null == $data) {
                continue;
            }

            if (
$data['expires'] <= time()) {
                
msession_destroy($id);
                continue;
            }
            
            
$size msession_get($id'_pear_cache_size'null);
            
$total += $size;
            
$entries[$data['expires']] = array($id$size);
        }
        
        if (
$total $this->highwater) {
            
            
krsort($entries);
            
reset($entries);
            
            while (
$total $this->lowwater && list($expires$entry) = each($entries)) {
                
msession_destroy($entry[0]);
                
$total -= $entry[1];
            }
            
        }
        
        return 
true;
    } 
// end func garbageCollection
    
// end class file
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0468 ]--