diff -r c7c34916027a -r 177826044cd9 wp/wp-admin/setup-config.php --- a/wp/wp-admin/setup-config.php Mon Oct 14 18:06:33 2019 +0200 +++ b/wp/wp-admin/setup-config.php Mon Oct 14 18:28:13 2019 +0200 @@ -12,19 +12,19 @@ /** * We are installing. */ -define('WP_INSTALLING', true); +define( 'WP_INSTALLING', true ); /** * We are blissfully unaware of anything. */ -define('WP_SETUP_CONFIG', true); +define( 'WP_SETUP_CONFIG', true ); /** * Disable error reporting * * Set this to error_reporting( -1 ) for debugging */ -error_reporting(0); +error_reporting( 0 ); if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( dirname( __FILE__ ) ) . '/' ); @@ -46,17 +46,20 @@ } elseif ( file_exists( dirname( ABSPATH ) . '/wp-config-sample.php' ) ) { $config_file = file( dirname( ABSPATH ) . '/wp-config-sample.php' ); } else { - wp_die( sprintf( - /* translators: %s: wp-config-sample.php */ - __( 'Sorry, I need a %s file to work from. Please re-upload this file to your WordPress installation.' ), - 'wp-config-sample.php' - ) ); + wp_die( + sprintf( + /* translators: %s: wp-config-sample.php */ + __( 'Sorry, I need a %s file to work from. Please re-upload this file to your WordPress installation.' ), + 'wp-config-sample.php' + ) + ); } // Check if wp-config.php has been created if ( file_exists( ABSPATH . 'wp-config.php' ) ) { - wp_die( '

' . sprintf( - /* translators: 1: wp-config.php 2: install.php */ + wp_die( + '

' . sprintf( + /* translators: 1: wp-config.php, 2: install.php */ __( 'The file %1$s already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.' ), 'wp-config.php', 'install.php' @@ -66,8 +69,9 @@ // Check if wp-config.php exists above the root directory but is not part of another installation if ( @file_exists( ABSPATH . '../wp-config.php' ) && ! @file_exists( ABSPATH . '../wp-settings.php' ) ) { - wp_die( '

' . sprintf( - /* translators: 1: wp-config.php 2: install.php */ + wp_die( + '

' . sprintf( + /* translators: 1: wp-config.php, 2: install.php */ __( 'The file %1$s already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.' ), 'wp-config.php', 'install.php' @@ -89,16 +93,18 @@ * @param string|array $body_classes */ function setup_config_display_header( $body_classes = array() ) { - $body_classes = (array) $body_classes; + $body_classes = (array) $body_classes; $body_classes[] = 'wp-core-ui'; + $dir_attr = ''; if ( is_rtl() ) { $body_classes[] = 'rtl'; + $dir_attr = ' dir="rtl"'; } header( 'Content-Type: text/html; charset=utf-8' ); -?> + ?> -> +> @@ -107,8 +113,8 @@ -

-

+ -

-

+ ?> +

+

  1. @@ -158,226 +164,251 @@
-

wp-config.php' - ); - ?> - + wp-config.php' + ); + ?> + + wp-config-sample.php', 'wp-config.php' ); - ?> - We got it.' ), - __( 'https://codex.wordpress.org/Editing_wp-config.php' ) - ); -?>

+ ?> + + We got it.' ), + __( 'https://codex.wordpress.org/Editing_wp-config.php' ) + ); + ?> +

- -

+ + $autofocus = wp_is_mobile() ? '' : ' autofocus'; + ?> +

- +
- - + + - - + + - - + + - - + + printf( __( 'You should be able to get this info from your web host, if %s doesn’t work.' ), 'localhost' ); + ?> + - - + + - + +

-

' . __( 'Try again' ) . ''; + if ( ! empty( $language ) ) { + $step_1 .= '&language=' . $language; + $install .= '?language=' . $language; + } else { + $install .= '?language=en_US'; + } - if ( empty( $prefix ) ) - wp_die( __( 'ERROR: "Table Prefix" must not be empty.' . $tryagain_link ) ); + $tryagain_link = '

' . __( 'Try again' ) . ''; - // Validate $prefix: it can only contain letters, numbers and underscores. - if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) - wp_die( __( 'ERROR: "Table Prefix" can only contain numbers, letters, and underscores.' . $tryagain_link ) ); + if ( empty( $prefix ) ) { + wp_die( __( 'ERROR: "Table Prefix" must not be empty.' ) . $tryagain_link ); + } - // Test the db connection. - /**#@+ - * @ignore - */ - define('DB_NAME', $dbname); - define('DB_USER', $uname); - define('DB_PASSWORD', $pwd); - define('DB_HOST', $dbhost); - /**#@-*/ + // Validate $prefix: it can only contain letters, numbers and underscores. + if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) { + wp_die( __( 'ERROR: "Table Prefix" can only contain numbers, letters, and underscores.' ) . $tryagain_link ); + } - // Re-construct $wpdb with these new values. - unset( $wpdb ); - require_wp_db(); - - /* - * The wpdb constructor bails when WP_SETUP_CONFIG is set, so we must - * fire this manually. We'll fail here if the values are no good. - */ - $wpdb->db_connect(); - - if ( ! empty( $wpdb->error ) ) - wp_die( $wpdb->error->get_error_message() . $tryagain_link ); + // Test the db connection. + /**#@+ + * + * @ignore + */ + define( 'DB_NAME', $dbname ); + define( 'DB_USER', $uname ); + define( 'DB_PASSWORD', $pwd ); + define( 'DB_HOST', $dbhost ); + /**#@-*/ - $errors = $wpdb->hide_errors(); - $wpdb->query( "SELECT $prefix" ); - $wpdb->show_errors( $errors ); - if ( ! $wpdb->last_error ) { - // MySQL was able to parse the prefix as a value, which we don't want. Bail. - wp_die( __( 'ERROR: "Table Prefix" is invalid.' ) ); - } + // Re-construct $wpdb with these new values. + unset( $wpdb ); + require_wp_db(); + + /* + * The wpdb constructor bails when WP_SETUP_CONFIG is set, so we must + * fire this manually. We'll fail here if the values are no good. + */ + $wpdb->db_connect(); - // Generate keys and salts using secure CSPRNG; fallback to API if enabled; further fallback to original wp_generate_password(). - try { - $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; - $max = strlen($chars) - 1; - for ( $i = 0; $i < 8; $i++ ) { - $key = ''; - for ( $j = 0; $j < 64; $j++ ) { - $key .= substr( $chars, random_int( 0, $max ), 1 ); - } - $secret_keys[] = $key; + if ( ! empty( $wpdb->error ) ) { + wp_die( $wpdb->error->get_error_message() . $tryagain_link ); } - } catch ( Exception $ex ) { - $no_api = isset( $_POST['noapi'] ); - if ( ! $no_api ) { - $secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); + $errors = $wpdb->hide_errors(); + $wpdb->query( "SELECT $prefix" ); + $wpdb->show_errors( $errors ); + if ( ! $wpdb->last_error ) { + // MySQL was able to parse the prefix as a value, which we don't want. Bail. + wp_die( __( 'ERROR: "Table Prefix" is invalid.' ) ); } - if ( $no_api || is_wp_error( $secret_keys ) ) { - $secret_keys = array(); + // Generate keys and salts using secure CSPRNG; fallback to API if enabled; further fallback to original wp_generate_password(). + try { + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; + $max = strlen( $chars ) - 1; for ( $i = 0; $i < 8; $i++ ) { - $secret_keys[] = wp_generate_password( 64, true, true ); + $key = ''; + for ( $j = 0; $j < 64; $j++ ) { + $key .= substr( $chars, random_int( 0, $max ), 1 ); + } + $secret_keys[] = $key; } - } else { - $secret_keys = explode( "\n", wp_remote_retrieve_body( $secret_keys ) ); - foreach ( $secret_keys as $k => $v ) { - $secret_keys[$k] = substr( $v, 28, 64 ); + } catch ( Exception $ex ) { + $no_api = isset( $_POST['noapi'] ); + + if ( ! $no_api ) { + $secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); } - } - } - $key = 0; - foreach ( $config_file as $line_num => $line ) { - if ( '$table_prefix =' == substr( $line, 0, 16 ) ) { - $config_file[ $line_num ] = '$table_prefix = \'' . addcslashes( $prefix, "\\'" ) . "';\r\n"; - continue; + if ( $no_api || is_wp_error( $secret_keys ) ) { + $secret_keys = array(); + for ( $i = 0; $i < 8; $i++ ) { + $secret_keys[] = wp_generate_password( 64, true, true ); + } + } else { + $secret_keys = explode( "\n", wp_remote_retrieve_body( $secret_keys ) ); + foreach ( $secret_keys as $k => $v ) { + $secret_keys[ $k ] = substr( $v, 28, 64 ); + } + } } - if ( ! preg_match( '/^define\(\'([A-Z_]+)\',([ ]+)/', $line, $match ) ) - continue; + $key = 0; + foreach ( $config_file as $line_num => $line ) { + if ( '$table_prefix =' == substr( $line, 0, 15 ) ) { + $config_file[ $line_num ] = '$table_prefix = \'' . addcslashes( $prefix, "\\'" ) . "';\r\n"; + continue; + } - $constant = $match[1]; - $padding = $match[2]; + if ( ! preg_match( '/^define\(\s*\'([A-Z_]+)\',([ ]+)/', $line, $match ) ) { + continue; + } + + $constant = $match[1]; + $padding = $match[2]; - switch ( $constant ) { - case 'DB_NAME' : - case 'DB_USER' : - case 'DB_PASSWORD' : - case 'DB_HOST' : - $config_file[ $line_num ] = "define('" . $constant . "'," . $padding . "'" . addcslashes( constant( $constant ), "\\'" ) . "');\r\n"; - break; - case 'DB_CHARSET' : - if ( 'utf8mb4' === $wpdb->charset || ( ! $wpdb->charset && $wpdb->has_cap( 'utf8mb4' ) ) ) { - $config_file[ $line_num ] = "define('" . $constant . "'," . $padding . "'utf8mb4');\r\n"; - } - break; - case 'AUTH_KEY' : - case 'SECURE_AUTH_KEY' : - case 'LOGGED_IN_KEY' : - case 'NONCE_KEY' : - case 'AUTH_SALT' : - case 'SECURE_AUTH_SALT' : - case 'LOGGED_IN_SALT' : - case 'NONCE_SALT' : - $config_file[ $line_num ] = "define('" . $constant . "'," . $padding . "'" . $secret_keys[$key++] . "');\r\n"; - break; + switch ( $constant ) { + case 'DB_NAME': + case 'DB_USER': + case 'DB_PASSWORD': + case 'DB_HOST': + $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'" . addcslashes( constant( $constant ), "\\'" ) . "' );\r\n"; + break; + case 'DB_CHARSET': + if ( 'utf8mb4' === $wpdb->charset || ( ! $wpdb->charset && $wpdb->has_cap( 'utf8mb4' ) ) ) { + $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'utf8mb4' );\r\n"; + } + break; + case 'AUTH_KEY': + case 'SECURE_AUTH_KEY': + case 'LOGGED_IN_KEY': + case 'NONCE_KEY': + case 'AUTH_SALT': + case 'SECURE_AUTH_SALT': + case 'LOGGED_IN_SALT': + case 'NONCE_SALT': + $config_file[ $line_num ] = "define( '" . $constant . "'," . $padding . "'" . $secret_keys[ $key++ ] . "' );\r\n"; + break; + } } - } - unset( $line ); + unset( $line ); - if ( ! is_writable(ABSPATH) ) : - setup_config_display_header(); -?> -

wp-config.php' ); -?>

-

wp-config.php' ); -?>

- + if ( ! is_writable( ABSPATH ) ) : + setup_config_display_header(); + ?> +

+ wp-config.php' ); + ?> +

+

+ wp-config.php' ); + + $config_text = ''; + + foreach ( $config_file as $line ) { + $config_text .= htmlentities( $line, ENT_COMPAT, 'UTF-8' ); + } + ?> +

+

- -

+ ?> +

-