!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:\Intranet\C\xampp\php\PEAR\Net\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.36%)
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:     NNTP.php (25.29 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | 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: Martin Kaltoft   <martin@nitro.dk>                          |
// |          Tomas V.V.Cox    <cox@idecnet.com>                          |
// |          Heino H. Gehlsen <heino@gehlsen.dk>                         |
// +----------------------------------------------------------------------+
// $Id: NNTP.php,v 1.30.2.4 2005/01/19 08:39:11 heino Exp $

require_once 'Net/NNTP/Protocol/Client.php';

// {{{ constants

/* NNTP Authentication modes */
define('NET_NNTP_AUTHORIGINAL''original');
define('NET_NNTP_AUTHSIMPLE',   'simple');
define('NET_NNTP_AUTHGENERIC',  'generic');
 
// Deprecated due to naming
define('PEAR_NNTP_AUTHORIGINAL'NET_NNTP_AUTHORIGINAL);
define('PEAR_NNTP_AUTHSIMPLE',   NET_NNTP_AUTHSIMPLE);
define('PEAR_NNTP_AUTHGENERIC',  NET_NNTP_AUTHGENERIC);

// }}}
// {{{ Net_NNTP

/**
 * The Net_NNTP class is an almost 100 % backward compatible 
 * frontend class to the Net_NNTP_Protocol_Client class.
 * 
 * ATTENTION!!!
 * This class should NOT be used in new projects. It is meant
 * as a drop in replacement to the outdated v0.2, and uses 
 * excatly the same protocol implementation as the new 
 * Net_NNTP_Client class, but has a lot of deprecated 
 * methods etc.
 *
 * @category   Net
 * @package    Net_NNTP
 * @author     Martin Kaltoft   <martin@nitro.dk>
 * @author     Tomas V.V.Cox    <cox@idecnet.com>
 * @author     Heino H. Gehlsen <heino@gehlsen.dk>
 * @version    $Id: NNTP.php,v 1.30.2.4 2005/01/19 08:39:11 heino Exp $
 * @access     public
 * @see        Net_NNTP_Client
 * @since      Class available since Release 0.1.0
 * @deprecated Class deprecated in Release 0.10.0
 */
class Net_NNTP extends Net_NNTP_Protocol_Client
{
    
// {{{ properties

    /**
     * File pointer of the nntp-connection
     *
     * @var 
     * @access public
     */
    
var $fp null;

    
/**
     * @var int
     * @access public
     * @deprecated use last() instead
     */
    
var $max;

    
/**
     * @var int
     * @access public
     * @deprecated use last() instead
     */
    
var $min;

    
/**
     * Used for storing information about the currently selected group
     *
     * @var array
     * @access private
     * @since 0.3
     */
    
var $_currentGroup null;

    
// }}}
    // {{{ constructor

    /**
     * Constructor
     */
    
function Net_NNTP()
    {
        
parent::Net_NNTP_Protocol_Client();
    }

    
// }}}
    // {{{ connect()

    /**
     * Connect to the newsserver.
     *
     * The function currently allows automatic authentication via the three last parameters, 
     * but this feature is to be considered depresated (use connectAuthenticated instead)
     *
     * In the future, this function will just be inherrited from the parent,
     * and thus the last three parameters will no longer be used to authenticate.
     *
     * @param optional string $host The adress of the NNTP-server to connect to.
     * @param optional int $port The port to connect to.
     * @param optional string $user Deprecated!
     * @param optional string $pass Deprecated!
     * @param optional string $authmode Deprecated!
     *
     * @return mixed (bool) true on success or (object) pear_error on failure
     * @access public
     * @see Net_NNTP::quit()
     * @see Net_NNTP::connectAuthenticated()
     * @see Net_NNTP::authenticate()
     */
    
function connect($host NET_NNTP_PROTOCOL_CLIENT_DEFAULT_HOST,
                     
$port NET_NNTP_PROTOCOL_CLIENT_DEFAULT_PORT,
                     
$user null,
                     
$pass null,
                     
$authmode NET_NNTP_AUTHORIGINAL)
    {
        
// Currently this function just 'forwards' to connectAuthenticated().
        
$R $this->connectAuthenticated($user$pass$host$port$authmode);

        if (
PEAR::isError($R)) {
            return 
$R;
        }

        
$this->fp $this->_socket->fp;

        return 
$R;
    }


    
// }}}
    // {{{ connectAuthenticated()

    /**
     * Connect to the newsserver, and authenticate. If no user/pass is specified, just connect.
     *
     * @param optional string $user The user name to authenticate with
     * @param optional string $pass The password
     * @param optional string $host The adress of the NNTP-server to connect to.
     * @param optional int $port The port to connect to.
     * @param optional string $authmode The authentication mode
     *
     * @return mixed (bool) true on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     * @see Net_NNTP::connect()
     * @see Net_NNTP::authenticate()
     * @see Net_NNTP::quit()
     * @deprecated use connect() and authenticate() instead
     */
    
function connectAuthenticated($user null,
                                  
$pass null,
                                  
$host NET_NNTP_PROTOCOL_CLIENT_DEFAULT_HOST,
                                  
$port NET_NNTP_PROTOCOL_CLIENT_DEFAULT_PORT,
                                  
$authmode NET_NNTP_AUTHORIGINAL)
    {
        
// Until connect() is changed, connect() is called directly from the parent...
        
$R parent::connect($host$port);
        if (
PEAR::isError($R)) {
            return 
$R;
        }

        
// Authenticate if username is given
        
if ($user != null) {
            
$R $this->authenticate($user$pass$authmode);
            if (
PEAR::isError($R)) {
                return 
$R;
            }
        }

        return 
true;
    }

    
// }}}
    // {{{ quit()

    /**
     * Close connection to the newsserver
     *
     * @access public
     * @see Net_NNTP::connect()
     */
    
function quit()
    {
        return 
$this->cmdQuit();
    }

    
// }}}
    // {{{ prepareConnection()

    /**
     * Connect to the newsserver, and issue a GROUP command
     * Once connection is prepared, we can only fetch articles from one group
     * at a time, to fetch from another group, a new connection has to be made.
     *
     * This is to avoid the GROUP command for every article, as it is very
     * ressource intensive on the newsserver especially when used for
     * groups with many articles.
     *
     * @param string $host The adress of the NNTP-server to connect to.
     * @param optional int $port the port-number to connect to, defaults to 119.
     * @param string $newsgroup The name of the newsgroup to use.
     * @param optional string $user The user name to authenticate with
     * @param optional string $pass The password
     * @param optional string $authmode The authentication mode
     *
     * @return mixed (bool) true on success or (object) pear_error on failure
     * @access public
     *
     * @deprecated Use connect() or connectAuthenticated() instead
     */
    
function prepareConnection($host,
                                
$port 119,
                                
$newsgroup,
                                
$user null,
                                
$pass null,
                                
$authmode NET_NNTP_AUTHORIGINAL)
    {
        
/* connect to the server */
        
$R $this->connect($host$port$user$pass$authmode);
        if (
PEAR::isError($R)) {
            return 
$R;
        }

        
/* issue a GROUP command */
        
$R $this->selectGroup($newsgroup);
        if (
PEAR::isError($R)) {
            return 
$R;
        }

        return 
true;
    }

    function 
prepare_connection($nntpserver,
                                
$port 119,
                                
$newsgroup,
                                
$user null,
                                
$pass null,
                                
$authmode NET_NNTP_AUTHORIGINAL)
    {
        return 
$this->prepareConnection($nntpserver$port$newsgroup$user$pass$authmode);
    }
                                                                                    
    
// }}}
    // {{{ authenticate()

    /**
     * Auth process (not yet standarized but used any way)
     * http://www.mibsoftware.com/userkt/nntpext/index.html
     *
     * @param string $user The user name
     * @param optional string $pass The password if needed
     * @param optional string $mode Authinfo type: original, simple, generic
     *
     * @return mixed (bool) true on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     * @see Net_NNTP::connect()
     */
    
function authenticate($user$pass$mode NET_NNTP_AUTHORIGINAL)
    {
        
// Username is a must...
        
if ($user == null) {
            return 
PEAR::throwError('No username supplied'null);
        }

        
// Use selected authentication method
        
switch ($mode) {
            case 
NET_NNTP_AUTHORIGINAL:
                return 
$this->cmdAuthinfo($user$pass);
                break;
            case 
NET_NNTP_AUTHSIMPLE:
                return 
$this->cmdAuthinfoSimple($user$pass);
                break;
            case 
NET_NNTP_AUTHGENERIC:
                return 
$this->cmdAuthinfoGeneric($user$pass);
                break;
            default:
                return 
PEAR::throwError("The auth mode: '$mode' is unknown"null);
        }
    }

    
// }}}
    // {{{ isConnected()

    /**
     * Test whether we are connected or not.
     *
     * @return bool true or false
     * @access public
     * @see Net_NNTP::connect()
     * @see Net_NNTP::quit()
     */
    
function isConnected()
    {
        return 
parent::isConnected();
    }
    
    function 
is_connected()
    {
    return 
$this->isConnected();
    }

    
// }}}
    // {{{ selectGroup()

    /**
     * Selects a news group (issue a GROUP command to the server)
     *
     * @param string $newsgroup The newsgroup name
     *
     * @return mixed (array) Groups info on success or (object) pear_error on failure
     * @access public
     * @see group()
     * @see count()
     * @see first()
     * @see last()
     */
    
function selectGroup($newsgroup)
    {
        
$response_arr $this->cmdGroup($newsgroup);
        if (
PEAR::isError($response_arr)) {
            return 
$response_arr;
        }

        
$this->_currentGroup $response_arr;

        
// Deprecated / historical                      
        
$response_arr['min'] =& $response_arr['first'];
        
$response_arr['max'] =& $response_arr['last'];
        
$this->min =& $response_arr['min'];
        
$this->max =& $response_arr['max'];

        return 
$response_arr;
    }

    function 
select_group($newsgroup)
    {
        return 
$this->selectGroup($newsgroup);
    }

    
// }}}
    // {{{ getGroups()

    /**
     * Fetches a list of all avaible newsgroups
     *
     * @return mixed (array) nested array with informations about existing newsgroups on success or (object) pear_error on failure
     * @access public
     */
    
function getGroups()
    {
        
// Get groups
        
$groups $this->cmdList();
        if (
PEAR::isError($groups)) {
            return 
$groups;
        }

        
// Deprecated / historical
        
foreach (array_keys($groups) as $k) {
            
$groups[$k]['posting_allowed'] =& $groups[$k]['posting'];
        }

        
// Get group descriptions
        
$descriptions $this->cmdListNewsgroups();
        if (
PEAR::isError($descriptions)) {
            return 
$descriptions;
        }
    
        
// Set known descriptions for groups
        
if (count($descriptions) > 0) {
            foreach (
$descriptions as $k=>$v) {
                
$groups[$k]['desc'] = $v;
            }
        }

        return 
$groups;
    }

    function 
get_groups()
    {
    return 
$this->getGroups();
    }
 
    
// }}}
    // {{{ getOverview()

    /**
     * Fetch message header from message number $first to $last
     *
     * The format of the returned array is:
     * $messages[message_id][header_name]
     *
     * @param integer $first first article to fetch
     * @param integer $last  last article to fetch
     *
     * @return mixed (array) nested array of message and there headers on success or (object) pear_error on failure
     * @access public
     * @see Net_NNTP::getOverviewFormat()
     * @see Net_NNTP::getReferencesOverview()
     */
    
function getOverview($first$last)
    {
        
$overview $this->cmdXOver($first.'-'.$last);
        if (
PEAR::isError($overview)) {
            return 
$overview;
        }

        return 
$overview;
    }

    function 
get_overview($first$last)
    {
        
$this->getOverview($first$last);
    }

    
// }}}
    // {{{ getOverviewFormat()

    /**
     * Returns a list of avaible headers which are send from newsserver to client for every news message
     *
     * @return mixed (array) header names on success or (object) pear_error on failure
     * @access public
     * @see Net_NNTP::getOverview()
     */
    
function getOverviewFormat()
    {
        return 
$this->cmdListOverviewFMT();
    }

    
// }}}
    // {{{ getOverviewFmt()

    /**
     * Returns a list of avaible headers which are send from newsserver to client for every news message
     *
     * @return mixed (array) header names on success or (object) pear_error on failure
     * @access public
     * @deprecated use getOverviewFormat() instead
     */
    
function getOverviewFmt()
    {
        return 
$this->getOverviewFormat();
    }

    function 
get_overview_fmt()
    {
        
$this->getOverviewFmt();
    }
    
    
// }}}
    // {{{ getReferencesOverview()

    /**
     * Fetch a list of each message's reference header.
     *
     * @param integer $first first article to fetch
     * @param integer $last  last article to fetch
     *
     * @return mixed (array) nested array of references on success or (object) pear_error on failure
     *
     * @return mixed (array) nested array of message and there headers on success or (object) pear_error on failure
     * @access public
     * @see Net_NNTP::getOverview()
     */
    
function getReferencesOverview($first$last)
    {
        
$overview $this->cmdXROver($first.'-'.$last);
        if (
PEAR::isError($overview)) {
            return 
$overview;
        }
    
        return 
$overview;
    }

    
// }}}
    // {{{ post()

    /**
     * Post an article to a number of newsgroups.
     *
     * (Among the aditional headers you might think of adding could be:
     * "NNTP-Posting-Host: <ip-of-author>", which should contain the IP-adress
     * of the author of the post, so the message can be traced back to him.
     * Or "Organization: <org>" which contain the name of the organization
     * the post originates from)
     *
     * @param string $subject The subject of the post.
     * @param string $newsgroup The newsgroup to post to.
     * @param string $from Name + email-adress of sender.
     * @param string $body The body of the post itself.
     * @param optional string $aditional Aditional headers to send.
     *
     * @return mixed (string) server response on success or (object) pear_error on failure
     * @access public
     */
    
function post($subject$newsgroup$from$body$aditional '')
    {
        return 
$this->cmdPost($newsgroup$subject$body$from$aditional);
    }

    
// }}}
    // {{{ getArticleRaw()

    /**
     * Get an article (raw data)
     *
     * @param mixed $article Either the message-id or the message-number on the server of the article to fetch.
     * @param bool  $implode When true the result array is imploded to a string, defaults to true.
     *
     * @return mixed (array/string) The headers on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     * @see getHeaderRaw()
     * @see getBodyRaw()
     */
    
function getArticleRaw($article$implode true)
    {
        
$data $this->cmdArticle($article);
        if (
PEAR::isError($data)) {
            return 
$data;
        }
        if (
$implode == true) {
            
$data implode("\r\n"$data);
        }
        return 
$data;
    }

    
// }}}
    // {{{ getArticle()

    /**
     * Get an article (deprecated)
     *
     * @param mixed $article Either the message-id or the message-number on the server of the article to fetch.
     *
     * @return mixed (string) The headers on success or (object) pear_error on failure
     * @access public
     * @deprecated Use getArticleRaw() instead
     */
    
function getArticle($article)
    {
        return 
$this->getArticleRaw($article);
    }

    function 
get_article($article)
    {
        return 
$this->getArticle($article);
    }

    
// }}}
    // {{{ getHeaderRaw()

    /**
     * Get the headers of an article (raw data)
     *
     * @param mixed $article Either the (string) message-id or the (int) message-number on the server of the article to fetch.
     * @param bool  $implode When true the result array is imploded to a string, defaults to true.
     *
     * @return mixed (array/string) headers on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     * @see getArticleRaw()
     * @see getBodyRaw()
     */
    
function getHeaderRaw($article$implode true)
    {
        
$data $this->cmdHead($article);
        if (
PEAR::isError($data)) {
            return 
$data;
        }
        if (
$implode == true) {
            
$data implode("\r\n"$data);
        }
        return 
$data;
    }

    
// }}}
    // {{{ getHeaders()

    /**
     * Get the headers of an article (deprecated)
     *
     * @param mixed $article Either the (string) message-id or the (int) message-number on the server of the article to fetch.
     *
     * @return mixed (string) headers on success or (object) pear_error on failure
     * @access public
     * @deprecated Use getHeaderRaw() instead
     */
    
function getHeaders($article)
    {
        return 
$this->getHeaderRaw($article);
    }

    function 
get_headers($article)
    {
        return 
$this->getHeaders($article);
    }
 
    
// }}}
    // {{{ getBodyRaw()

    /**
     * Get the body of an article (raw data)
     *
     * @param mixed $article Either the message-id or the message-number on the server of the article to fetch.
     * @param bool  $implode When true the result array is imploded to a string, defaults to true.
     *
     * @return mixed (array/string) headers on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     * @see getHeaderRaw()
     * @see getArticleRaw()
     */
    
function getBodyRaw($article$implode true)
    {
        
$data $this->cmdBody($article);
        if (
PEAR::isError($data)) {
            return 
$data;
        }
        if (
$implode == true) {
            
$data implode("\r\n"$data);
        }
        return 
$data;
    }

    
// }}}
    // {{{ getBody()

    /**
     * Get the body of an article (deprecated)
     *
     * @param mixed $article Either the message-id or the message-number on the server of the article to fetch.
     *
     * @return mixed (string) headers on success or (object) pear_error on failure
     * @access public
     * @deprecated Use getBodyRaw() instead
     */
    
function getBody($article)
    {
        return 
$this->getBodyRaw($article);
    }

    function 
get_body($article)
    {
        return 
$this->getBody($article);
    }

    
// }}}
    // {{{ getDate()

    /**
     * Get the NNTP-server's internal date
     *
     * Get the date from the newsserver format of returned date:
     *
     * @param optional int $format
     *  - 0: $date - timestamp
     *  - 1: $date['y'] - year
     *       $date['m'] - month
     *       $date['d'] - day
     *
     * @return mixed (mixed) date on success or (object) pear_error on failure
     * @access public
     * @since 0.3
     */
    
function getDate($format 1)
    {
        
$date $this->cmdDate();
        if (
PEAR::isError($date)) {
            return 
$date;
        }

        switch (
$format) {
            case 
1:
                return array(
'y' => substr($date04), 'm' => substr($date42), 'd' => substr($date62));
                break;

            case 
0:
            default:
                return 
$date;
                break;
        }
    }

    
// }}}
    // {{{ date()

    /**
     * @return mixed (array) date on success or (object) pear_error on failure
     * @access public
     *
     * @deprecated Use getDate() instead
     */
    
function date()
    {
        return 
$this->getDate();
    }

    
// }}}
    // {{{ count()

    /**
     * Number of articles in currently selected group
     *
     * @return integer count
     * @access public
     * @since 0.3
     * @see Net_NNTP::selectGroup()
     * @see Net_NNTP::group()
     * @see Net_NNTP::first()
     * @see Net_NNTP::last()
     */
    
function count()
    {
        return 
$this->_currentGroup['count'];
    }

    
// }}}
    // {{{ last()

    /**
     * Maximum article number in current group
     *
     * @return integer maximum
     * @access public
     * @since 0.3
     * @see Net_NNTP::selectGroup()
     * @see Net_NNTP::group()
     * @see Net_NNTP::first()
     * @see Net_NNTP::count()
     */
    
function last()
    {
        return 
$this->_currentGroup['last'];
    }

    
// }}}
    // {{{ max()

    /**
     * @return integer maximum
     * @access public
     *
     * @deprecated Use last() instead
     */
    
function max()
    {
        return 
$this->last();
    }

    
// }}}
    // {{{ first()

    /**
     * Minimum article number in current group
     *
     * @return integer minimum
     * @access public
     * @since 0.3
     * @see Net_NNTP::selectGroup()
     * @see Net_NNTP::group()
     * @see Net_NNTP::last()
     * @see Net_NNTP::count()
     */
    
function first()
    {
        return 
$this->_currentGroup['first'];
    }

    
// }}}
    // {{{ min()

    /**
     * @return integer minimum
     * @access public
     *
     * @deprecated Use first() instead
     */
    
function min()
    {
        return 
$this->first();
    }

    
// }}}
    // {{{ group()

    /**
     * Currently selected group
     *
     * @return string group
     * @access public
     * @since 0.3
     * @see Net_NNTP::selectGroup()
     * @see Net_NNTP::first()
     * @see Net_NNTP::last()
     * @see Net_NNTP::count()
     */
    
function group()
    {
        return 
$this->_currentGroup['group'];
    }

    
// }}}
    // {{{ splitHeaders()

    /**
     * Get the headers of an article from the currently open connection, and parse them into a keyed array.
     *
     * @param mixed $article Either the (string) message-id or the (int) message-number on the server of the article to fetch.
     *
     * @return mixed (array) Assoc array with headers names as key on success or (object) pear_error on failure
     * @access public
     */
    
function splitHeaders($article)
    {
        
// Retrieve headers
        
$headers $this->getHeaderRaw($articlefalse);
        if (
PEAR::isError($headers)) {
            return 
PEAR::throwError($headers);
        }
    
        
$return = array();

        
// Loop through all header field lines
        
foreach ($headers as $field) {
            
// Separate header name and value
            
if (!preg_match('/([\S]+)\:\s*(.*)\s*/'$field$matches)) {
                
// Fail...
            
}
            
$name $matches[1];
            
$value $matches[2];
            unset(
$matches);

            
// Add header to $return array
            
if (isset($return[$name]) AND is_array($return[$name])) {
                
// The header name has already been used at least two times.
                
$return[$name][] = $value;
            } elseif (isset(
$return[$name])) {
                
// The header name has already been used one time -> change to nedted values.
                
$return[$name] = array($return[$name], $value);
            } else {
                
// The header name has not used until now.
            
$return[$name] = $value;
            }
        }

        return 
$return;
    }

    function 
split_headers($article)
    {
        return 
$this->splitHeaders($article);
    }
    
    
// }}}
    // {{{ responseCode()

    /**
     * returns the response code of a newsserver command
     *
     * @param string $response newsserver answer
     *
     * @return integer response code
     * @access public
     *
     * @deprecated
     */
    
function responseCode($response)
    {
        
$parts explode(' 'ltrim($response), 2);
        return (int) 
$parts[0];
    }

    
// }}}
    // {{{ _getData()

    /**
     * Get data until a line with only a '.' in it is read and return data.
     *
     * @return mixed (string) data on success or (object) pear_error on failure
     * @access private
     *
     * @deprecated Use _getTextResponse() instead
     */
    
function _getData()
    {
        return 
$this->_getTextResponse();
    }

    function 
get_data()
    {
    return 
$this->_getData();
    }

    
// }}}
    // {{{ command()

    /**
     * Issue a command to the NNTP server
     *
     * @param string $cmd The command to launch, ie: "ARTICLE 1004853"
     *
     * @return mixed (int) response code on success or (object) pear_error on failure
     * @access public
     */
    
function command($cmd)
    {
        
$code $this->_sendCommand($cmd);
        if (
PEAR::isError($code)) {
            return 
PEAR::throwError($code);
        }
    
        return 
$code.' '.$this->currentStatusResponse()."\r\n";
    }

    
// }}}

}

// }}}

?>

:: 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.0312 ]--