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

Software: nginx/1.23.4. PHP/5.6.40-65+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux foro-restaurado-2 5.15.0-1040-oracle #46-Ubuntu SMP Fri Jul 14 21:47:21 UTC 2023
aarch64
 

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

Safe-mode: OFF (not secure)

/home/scripts/pba/phc-read-only/test/framework/lib/   drwxrwxr-x
Free 83.25 GB of 96.73 GB (86.07%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     labels.php (7.55 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
 * phc -- the open source PHP compiler
 * See doc/license/README.license for licensing information
 *
 * Functions and data to parse and maniupulate label files
 */

$subject_dir =        "test/subjects/";
$label_file =        "test/subjects/labels";
$third_party_label_file =        "test/subjects/3rdparty/labels";

$default_labels        =    array("long",  "non-interpretable""size-neutral");
$non_default_labels =    array("short""interpretable""size-dependent");
$labels =                array_merge($default_labels$non_default_labels);
$opposite_label = array(
    
"long" => "short",                                "short" => "long",
    
"non-interpretable" => "interpretable",    "interpretable" => "non-interpretable",
    
"size-neutral" => "size-dependent",            "size-dependent" => "size-neutral");

$exceptions = array();

$label_struct create_label_struct ($subject_dir$label_file$third_party_label_file);

if (!
$opt_long)
{
    
$label_struct strip_long_files($label_struct);
}

function 
strip_long_files ($label_struct)
{
    global 
$labels;
    
$long_files $label_struct{"long"};
    foreach(
$labels as $label)
    {
        
// remove the long files from 
        
$label_struct{$label} = array_values (array_diff($label_struct{$label}, $long_files));
    }
    return 
$label_struct;
}

/* Returns true if this is a long test, and we're only doing short tests */
function skip_3rdparty ($filename)
{
    global 
$opt_long;
    return (!
$opt_long && preg_match ("#/3rdparty/#"$filename));
}

function 
create_label_struct ($directory$label_filename$third_party_filename)
{
    global 
$default_labels;
    global 
$non_default_labels;
    global 
$opposite_label;
    global 
$labels;
    global 
$exceptions;
    global 
$opt_one;

    
$files get_all_scripts_in_dir ($directory);

    
// labelled files is a table indexed by filename, containing tables indexed
    // by default labels, which are set to 1 or 0 for default and non-default
    // respectively
    
foreach ($default_labels as $default)
    {
        foreach(
$files as $filename) { $labelled_files{$filename}{$default} = 1; }
    }
    foreach(
$files as $filename
    { 
        
$labelled_files{$filename}{"non-interpretable"} = "check"
    }

    
// parse the file
    
$lines file($label_filename);
    if (
file_exists ($third_party_filename)) 
        
$third_party_lines file ($third_party_filename);
    else 
        
$third_party_lines = array ();

    foreach(
$lines as $line)
    {
        
$line preg_replace("/#.*$/"""$line); // remove comments
        
$line trim($line); // remove superfluous whitespace
        
if ($line == "") continue; // skip blank lines
        
process_label_file_line ($line$files$labelled_files);
    }

    foreach(
$third_party_lines as $line)
    {
        
$line preg_replace("/#.*$/"""$line); // remove comments
        
$line trim($line); // remove superfluous whitespace
        
if ($line == "") continue; // skip blank lines
        
process_label_file_line ("3rdparty/".$line$files$labelled_files);
    }

    
# if -O is provided, remove all other files
    
if ($opt_one)
    {
        foreach (
$labelled_files as $key => $value)
        {
            if (
$key !== $opt_one)
            {
                unset (
$labelled_files[$key]);
                
$files = array ($opt_one);
            }
        }
    }

    
# init the label struct
    
foreach ($labels as $label)
    {
        
$label_struct{$label} = array();
    }
    
# go over the labelled_files, and make an table indexed by label
    
foreach ($files as $filename)
    {
        
// If you have a ton of 3rd party files, dont spend time checking them
        // all, unless your actually going to use them 
        
if (skip_3rdparty ($filename))
        {
            
$labelled_files{$filename}{"non-interpretable"} = 0;
        }
        else
        {
            
phc_assert(isset($labelled_files{$filename}), "file not found");

            
// check the interpretable
            
if ($labelled_files{$filename}{"non-interpretable"} === "check")
            {
                
phc_assert (check_for_plugin ("tools/purity_test"), "purity not available");
                global 
$phc$plugin_dir;
                if (`
$phc --run $plugin_dir/tools/purity_test.la $filename 2>&1` == "")
                {
                    
log_status ("pure"""$filename"");
                    
$labelled_files{$filename}{"non-interpretable"} = 0;
                }
                else
                {
                    
log_status ("impure"""$filename"");
                    
$labelled_files{$filename}{"non-interpretable"} = 1;
                }
            }
        }

        foreach (
$default_labels as $label)
        {
            if (
$labelled_files{$filename}{$label})
            {
                
array_push ($label_struct{$label}, $filename);
            }
            else
            {
                
array_push ($label_struct{$opposite_label{$label}}, $filename);
            }
        }
    }

    
// sort and generally fix up the arrays
    
foreach ($labels as $label)
    {
        
sort($label_struct{$label});
    }

    return 
$label_struct;
}

function 
process_label_file_line ($line$files, &$labelled_files)
{
    global 
$default_labels;
    global 
$non_default_labels;
    global 
$opposite_label;
    global 
$labels;
    global 
$exceptions;

    
// split into file and labels
    
$split preg_split("/\s+/"$line);

    
$pattern array_shift ($split);
    
$pattern "^test/subjects/$pattern";
    
$matches preg_grep ("!$pattern!"$files);
    
/* allow that pattern, as 3rdparty directory may be empty */
    
if ($pattern !== "^test/subjects/3rdparty/.*")
    {
        
phc_assert(count($matches), "pattern !$pattern! matches no files");
    }

    
// add to data structure
    
foreach($split as $label)
    {
        foreach (
$matches as $filename)
        {
            if (
in_array($label$default_labels))
            {
                
$labelled_files{$filename}{$label} = 1;
            }
            else if (
in_array($label$non_default_labels))
            {
                
$labelled_files{$filename}{$opposite_label{$label}} = 0;
            }
            else if (
preg_match ("/no-(.*)/"$label$exception_matches))
            {
                
$exceptions{$filename}[] = $exception_matches[1];
            }
            else if (
$label == "check-interpretable")
            {
                
$labelled_files{$filename}{"non-interpretable"} = "check";
            }
            else
            {
                
$label_names join(", "$labels);
                
phc_unreachable ("Label file error: $label not a valid label (must be in $label_names)");
            }
        }
    }
}

function 
get_scripts_labelled($label)
{
    global 
$label_struct;
    
phc_assert($label_struct !== null"label structure not yet initialized");
    return 
$label_struct{$label};
}

function 
get_interpretable_scripts()
{
    return 
get_scripts_labelled("interpretable");
}

function 
get_non_interpretable_scripts()
{
    return 
get_scripts_labelled("non-interpretable");
}

function 
is_labelled($script$label)
{
    global 
$label_struct;
    
phc_assert($label_struct !== null"label structure not yet initialized");
    
# this doesnt return a simple true/false, so wrap it
    
if (array_search($script$label_struct{$label}) === false)
    {
        return 
false;
    }
    else
    {
        return 
true;
    }
}

// returns a list of all php scripts
function get_all_scripts()
{
    global 
$label_struct;
    
phc_assert($label_struct !== null"label structure not yet initialized");

    
// returns an array of arrays
    
$all_files array_values($label_struct);

    
// merge into a single array
    
$result = array();
    foreach(
$all_files as $array)
    {
        
$result array_merge($result$array);
    }
    
$result array_unique($result);
    return 
$result;
}


// returns a list of all the php files within a directory (recursively)
function get_all_scripts_in_dir($directory)
{
    
phc_assert($directory != ''"Cant search blank directory");
    
phc_assert(preg_match("/\/$/"$directory), "directory '$directory' must end in a '/'");

    
$command "find -L $directory -name \"*.php\"";
    
$result explode ("\n"trim (`$command`));
    if (
count ($result) == && $result[0] == "")
        return array ();

    
# I have no idea why, but on OSX `find` returns two forward-slashes in some 
    # cases, and PHP won't open directories structured like that.
    
foreach($result as &$line)
        
$line preg_replace("!//!""/"$line);

    return 
$result;
}

function 
get_all_plugins ()
{
    global 
$base_dir;
    
$command "find $base_dir/plugins -name \"*.cpp\"";
    
$result preg_split ("/\n/"trim (`$command`));
    if (
count ($result) == && $result[0] == "")
        return array ();

    return 
$result;
}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by HackingTool | HackingTool | Generation time: 0.0048 ]--