$context = get_context_instance(CONTEXT_SYSTEM); require_capability('moodle/site:config', $context); // check that site is properly customized $site = get_site(); if (empty($site->shortname)) { // probably new installation - lets return to frontpage after this step // remove settings that we want uninitialised unset_config('registerauth'); redirect('upgradesettings.php?return=site'); } // Check if we are returning from moodle.org registration and if so, we mark that fact to remove reminders if (!empty($id) and $id == $CFG->siteidentifier) { set_config('registered', time()); } // setup critical warnings before printing admin tree block $insecuredataroot = is_dataroot_insecure(true); $SESSION->admin_critical_warning = $insecuredataroot == INSECURE_DATAROOT_ERROR; $adminroot = admin_get_root(); // Check if there are any new admin settings which have still yet to be set if (any_new_admin_settings($adminroot)) { redirect('upgradesettings.php'); } // Everything should now be set up, and the user is an admin // Print default admin page with notifications. $errorsdisplayed = defined('WARN_DISPLAY_ERRORS_ENABLED'); $lastcron = $DB->get_field_sql('SELECT MAX(lastcron) FROM {modules}'); $cronoverdue = $lastcron < time() - 3600 * 24; $dbproblems = $DB->diagnose(); $maintenancemode = !empty($CFG->maintenance_enabled); $updateschecker = available_update_checker::instance(); $availableupdates = $updateschecker->get_update_info('core', array('minmaturity' => $CFG->updateminmaturity, 'notifybuilds' => $CFG->updatenotifybuilds));
/** * Test if and critical warnings are present * @return bool */ function admin_critical_warnings_present() { global $SESSION; if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { return 0; } if (!isset($SESSION->admin_critical_warning)) { $SESSION->admin_critical_warning = 0; if (is_dataroot_insecure(true) === INSECURE_DATAROOT_ERROR) { $SESSION->admin_critical_warning = 1; } } return $SESSION->admin_critical_warning; }
install_print_footer($config); die; } else { $config->stage = INSTALL_DATABASE; } } } if ($config->stage == INSTALL_DOWNLOADLANG) { if (empty($CFG->dataroot)) { $config->stage = INSTALL_PATHS; } else if (is_dataroot_insecure()) { $hint_dataroot = get_string('pathsunsecuredataroot', 'install'); $config->stage = INSTALL_PATHS; } else if (!file_exists($CFG->dataroot)) { $a = new stdClass(); $a->parent = dirname($CFG->dataroot); $a->dataroot = $CFG->dataroot; if (!is_writable($a->parent)) { $hint_dataroot = get_string('pathsroparentdataroot', 'install', $a); $config->stage = INSTALL_PATHS; } else { if (!install_init_dataroot($CFG->dataroot, $CFG->directorypermissions)) { $hint_dataroot = get_string('pathserrcreatedataroot', 'install', $a); $config->stage = INSTALL_PATHS; }
/** * Verifies fatal misconfiguration of dataroot * @param bool $detailed * @return object result */ function report_security_check_unsecuredataroot($detailed = false) { global $CFG; $result = new object(); $result->issue = 'report_security_check_unsecuredataroot'; $result->name = get_string('check_unsecuredataroot_name', 'report_security'); $result->info = null; $result->details = null; $result->status = null; $result->link = null; $insecuredataroot = is_dataroot_insecure(true); if ($insecuredataroot == INSECURE_DATAROOT_WARNING) { $result->status = REPORT_SECURITY_SERIOUS; $result->info = get_string('check_unsecuredataroot_warning', 'report_security', $CFG->dataroot); } else { if ($insecuredataroot == INSECURE_DATAROOT_ERROR) { $result->status = REPORT_SECURITY_CRITICAL; $result->info = get_string('check_unsecuredataroot_error', 'report_security', $CFG->dataroot); } else { $result->status = REPORT_SECURITY_OK; $result->info = get_string('check_unsecuredataroot_ok', 'report_security'); } } if ($detailed) { $result->details = get_string('check_unsecuredataroot_details', 'report_security'); } return $result; }
} /// check dirroot if (($fh = @fopen($INSTALL['dirrootform'] . '/install.php', 'r')) === false) { $errormsg .= get_string('dirrooterror', 'install') . '<br />'; $INSTALL['dirrootform'] = $INSTALL['dirroot']; } if ($fh) { fclose($fh); } /// check dataroot $CFG->dataroot = $INSTALL['dataroot']; $CFG->wwwroot = $INSTALL['wwwroot']; if (make_upload_directory('sessions', false) === false) { $errormsg .= get_string('datarooterror', 'install') . '<br />'; } else { if (is_dataroot_insecure(true) == INSECURE_DATAROOT_ERROR) { $errormsg .= get_string('datarootpublicerror', 'install') . '<br />'; } } if (!empty($errormsg)) { $nextstage = DIRECTORY; } error_reporting(7); } //==========================================================================// /// Check database settings if stage 3 data submitted /// Try to connect to the database. If that fails then try to create the database if ($INSTALL['stage'] == DATABASE) { /// different format for postgres7 by socket if ($INSTALL['dbtype'] == 'postgres7' and $INSTALL['dbhost'] == 'localhost' || $INSTALL['dbhost'] == '127.0.0.1') { $INSTALL['dbhost'] = "user='******'dbuser']}' password='******'dbpass']}' dbname='{$INSTALL['dbname']}'";
$INSTALL['version'] = $version; $INSTALL['release'] = $release; /// Have the $db object ready because we are going to use it often define('ADODB_ASSOC_CASE', 0); //Use lowercase fieldnames for ADODB_FETCH_ASSOC $db =& ADONewConnection($INSTALL['dbtype']); $db->SetFetchMode(ADODB_FETCH_ASSOC); /// guess the www root if ($INSTALL['wwwroot'] == '') { list($INSTALL['wwwroot'], $xtra) = explode('/install.php', qualified_me()); $INSTALL['wwwrootform'] = $INSTALL['wwwroot']; // now try to guess the correct dataroot not accessible via web $CFG->wwwroot = $INSTALL['wwwroot']; $i = 0; //safety check - dirname might return some unexpected results while (is_dataroot_insecure()) { $parrent = dirname($CFG->dataroot); $i++; if ($parrent == '/' or $parrent == '.' or preg_match('/^[a-z]:\\\\?$/i', $parrent) or $i > 100) { $CFG->dataroot = ''; //can not find secure location for dataroot break; } $CFG->dataroot = dirname($parrent) . '/moodledata'; } $INSTALL['dataroot'] = $CFG->dataroot; } $headstagetext = array(WELCOME => get_string('chooselanguagehead', 'install'), COMPATIBILITY => get_string('compatibilitysettingshead', 'install'), DIRECTORY => get_string('directorysettingshead', 'install'), DATABASE => get_string('databasesettingshead', 'install'), ADMIN => get_string('admindirsettinghead', 'install'), ENVIRONMENT => get_string('environmenthead', 'install'), DOWNLOADLANG => get_string('downloadlanguagehead', 'install'), SAVE => get_string('configurationcompletehead', 'install')); $substagetext = array(WELCOME => get_string('chooselanguagesub', 'install'), COMPATIBILITY => get_string('compatibilitysettingssub', 'install'), DIRECTORY => get_string('directorysettingssub', 'install'), DATABASE => get_string('databasesettingssub', 'install'), ADMIN => get_string('admindirsettingsub', 'install'), ENVIRONMENT => get_string('environmentsub', 'install'), DOWNLOADLANG => get_string('downloadlanguagesub', 'install'), SAVE => get_string('configurationcompletesub', 'install')); //==========================================================================// /// Are we in help mode?