diff -r c7c34916027a -r 177826044cd9 wp/wp-activate.php --- a/wp/wp-activate.php Mon Oct 14 18:06:33 2019 +0200 +++ b/wp/wp-activate.php Mon Oct 14 18:28:13 2019 +0200 @@ -9,19 +9,64 @@ define( 'WP_INSTALLING', true ); /** Sets up the WordPress Environment. */ -require( dirname(__FILE__) . '/wp-load.php' ); +require( dirname( __FILE__ ) . '/wp-load.php' ); require( dirname( __FILE__ ) . '/wp-blog-header.php' ); -if ( !is_multisite() ) { +if ( ! is_multisite() ) { wp_redirect( wp_registration_url() ); die(); } +$valid_error_codes = array( 'already_active', 'blog_taken' ); + +list( $activate_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) ); +$activate_cookie = 'wp-activate-' . COOKIEHASH; + +$key = ''; +$result = null; + +if ( isset( $_GET['key'] ) && isset( $_POST['key'] ) && $_GET['key'] !== $_POST['key'] ) { + wp_die( __( 'A key value mismatch has been detected. Please follow the link provided in your activation email.' ), __( 'An error occurred during the activation' ), 400 ); +} elseif ( ! empty( $_GET['key'] ) ) { + $key = $_GET['key']; +} elseif ( ! empty( $_POST['key'] ) ) { + $key = $_POST['key']; +} + +if ( $key ) { + $redirect_url = remove_query_arg( 'key' ); + + if ( $redirect_url !== remove_query_arg( false ) ) { + setcookie( $activate_cookie, $key, 0, $activate_path, COOKIE_DOMAIN, is_ssl(), true ); + wp_safe_redirect( $redirect_url ); + exit; + } else { + $result = wpmu_activate_signup( $key ); + } +} + +if ( $result === null && isset( $_COOKIE[ $activate_cookie ] ) ) { + $key = $_COOKIE[ $activate_cookie ]; + $result = wpmu_activate_signup( $key ); + setcookie( $activate_cookie, ' ', time() - YEAR_IN_SECONDS, $activate_path, COOKIE_DOMAIN, is_ssl(), true ); +} + +if ( $result === null || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) { + status_header( 404 ); +} elseif ( is_wp_error( $result ) ) { + $error_code = $result->get_error_code(); + + if ( ! in_array( $error_code, $valid_error_codes ) ) { + status_header( 400 ); + } +} + nocache_headers(); -if ( is_object( $wp_object_cache ) ) +if ( is_object( $wp_object_cache ) ) { $wp_object_cache->cache_enabled = false; +} // Fix for page title $wp_query->is_404 = false; @@ -45,10 +90,10 @@ * Fires before the Site Activation page is loaded. * * Fires on the {@see 'wp_head'} action. - * - * @since 3.0.0 - */ - do_action( 'activate_wp_head' ); + * + * @since 3.0.0 + */ + do_action( 'activate_wp_head' ); } add_action( 'wp_head', 'do_activate_header' ); @@ -64,93 +109,98 @@ #submit, #key { width: 90%; font-size: 24px; } #language { margin-top: .5em; } .error { background: #f66; } - span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: bold; } + span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: 600; }
get_error_message(); ?>
- + - +user_login ?>
-+
user_login; ?>
+
+ View your site or Log in' ), $url, esc_url( $login_url ) ); - ?>
- -+
+ ++ Log in or go back to the homepage.' ), network_site_url( 'wp-login.php', 'login' ), network_home_url() ); - ?>
- + + @@ -160,4 +210,5 @@ var key_input = document.getElementById('key'); key_input && key_input.focus(); -