!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/share/php/PhpMyAdmin/SqlParser/Utils/   drwxr-xr-x
Free 13.31 GB of 57.97 GB (22.96%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

/**
 * Token utilities.
 */

namespace PhpMyAdmin\SqlParser\Utils;

use 
PhpMyAdmin\SqlParser\Lexer;
use 
PhpMyAdmin\SqlParser\Token;
use 
PhpMyAdmin\SqlParser\TokensList;

/**
 * Token utilities.
 *
 * @category   Token
 *
 * @license    https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+
 */
class Tokens
{
    
/**
     * Checks if a pattern is a match for the specified token.
     *
     * @param Token $token   the token to be matched
     * @param array $pattern the pattern to be matches
     *
     * @return bool
     */
    
public static function match(Token $token, array $pattern)
    {
        
// Token.
        
if (isset($pattern['token'])
            && (
$pattern['token'] !== $token->token)
        ) {
            return 
false;
        }

        
// Value.
        
if (isset($pattern['value'])
            && (
$pattern['value'] !== $token->value)
        ) {
            return 
false;
        }

        if (isset(
$pattern['value_str'])
            && 
strcasecmp($pattern['value_str'], $token->value)
        ) {
            return 
false;
        }

        
// Type.
        
if (isset($pattern['type'])
            && (
$pattern['type'] !== $token->type)
        ) {
            return 
false;
        }

        
// Flags.
        
if (isset($pattern['flags'])
            && ((
$pattern['flags'] & $token->flags) === 0)
        ) {
            return 
false;
        }

        return 
true;
    }

    public static function 
replaceTokens($list, array $find, array $replace)
    {
        
/**
         * Whether the first parameter is a list.
         *
         * @var bool
         */
        
$isList $list instanceof TokensList;

        
// Parsing the tokens.
        
if (! $isList) {
            
$list Lexer::getTokens($list);
        }

        
/**
         * The list to be returned.
         *
         * @var array
         */
        
$newList = array();

        
/**
         * The length of the find pattern is calculated only once.
         *
         * @var int
         */
        
$findCount count($find);

        
/**
         * The starting index of the pattern.
         *
         * @var int
         */
        
$i 0;

        while (
$i $list->count) {
            
// A sequence may not start with a comment.
            
if ($list->tokens[$i]->type === Token::TYPE_COMMENT) {
                
$newList[] = $list->tokens[$i];
                ++
$i;
                continue;
            }

            
/**
             * The index used to parse `$list->tokens`.
             *
             * This index might be running faster than `$k` because some tokens
             * are skipped.
             *
             * @var int
             */
            
$j $i;

            
/**
             * The index used to parse `$find`.
             *
             * This index might be running slower than `$j` because some tokens
             * are skipped.
             *
             * @var int
             */
            
$k 0;

            
// Checking if the next tokens match the pattern described.
            
while (($j $list->count) && ($k $findCount)) {
                
// Comments are being skipped.
                
if ($list->tokens[$j]->type === Token::TYPE_COMMENT) {
                    ++
$j;
                }

                if (! static::match(
$list->tokens[$j], $find[$k])) {
                    
// This token does not match the pattern.
                    
break;
                }

                
// Going to next token and segment of find pattern.
                
++$j;
                ++
$k;
            }

            
// Checking if the sequence was found.
            
if ($k === $findCount) {
                
// Inserting new tokens.
                
foreach ($replace as $token) {
                    
$newList[] = $token;
                }

                
// Skipping next `$findCount` tokens.
                
$i $j;
            } else {
                
// Adding the same token.
                
$newList[] = $list->tokens[$i];
                ++
$i;
            }
        }

        return 
$isList ?
            new 
TokensList($newList) : TokensList::build($newList);
    }
}

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