WordPress.org

Make WordPress Core

Ticket #16167: 16167.patch

File 16167.patch, 8.9 KB (added by kurtpayne, 2 years ago)

Allow WP_HTTP_PORT and WP_HTTPS_PORT config values

  • wp-includes/admin-bar.php

     
    231231 
    232232        $blogname = get_bloginfo('name'); 
    233233 
    234         if ( empty( $blogname ) ) 
     234        if ( empty( $blogname ) ) { 
    235235                $blogname = preg_replace( '#^(https?://)?(www.)?#', '', get_home_url() ); 
     236                 
     237                // Strip out port numbers 
     238                if ( 80 != WP_HTTP_PORT || 443 != WP_HTTPS_PORT ) 
     239                        $blogname = str_replace( array(':' . WP_HTTPS_PORT, ':' . WP_HTTP_PORT), '', $blogname ); 
     240        } 
    236241 
    237242        if ( is_network_admin() ) { 
    238243                $blogname = sprintf( __('Network Admin: %s'), esc_html( $current_site->site_name ) ); 
  • wp-includes/canonical.php

     
    4444                // build the URL in the address bar 
    4545                $requested_url  = is_ssl() ? 'https://' : 'http://'; 
    4646                $requested_url .= $_SERVER['HTTP_HOST']; 
     47                if ( is_ssl() && 443 != WP_HTTPS_PORT ) { 
     48                        $requested_url .= ':' . WP_HTTPS_PORT; 
     49                } elseif ( 80 != WP_HTTP_PORT ) { 
     50                        $requested_url .= ':' . WP_HTTP_PORT; 
     51                } 
    4752                $requested_url .= $_SERVER['REQUEST_URI']; 
    4853        } 
    4954 
  • wp-includes/class-wp-editor.php

     
    214214 
    215215                                                foreach ( $mce_external_plugins as $name => $url ) { 
    216216 
    217                                                         if ( is_ssl() ) $url = str_replace('http://', 'https://', $url); 
     217                                                        if ( is_ssl() ) 
     218                                                                $url = make_https( $url ); 
    218219 
    219220                                                        $plugins[] = '-' . $name; 
    220221 
  • wp-admin/includes/class-wp-list-table.php

     
    486486 
    487487                $current = $this->get_pagenum(); 
    488488 
    489                 $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
     489                $current_url = 'http://' . $_SERVER['HTTP_HOST'] . (80 != WP_HTTP_PORT ? ':' . WP_HTTP_PORT : '') . $_SERVER['REQUEST_URI']; 
     490                if ( is_ssl() ) 
     491                        $current_url = make_https($current_url); 
    490492 
    491493                $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); 
    492494 
  • wp-admin/includes/class-wp-themes-list-table.php

     
    141141        $theme_root_uri = $themes[$theme_name]['Theme Root URI']; 
    142142        $preview_link = esc_url( get_option( 'home' ) . '/' ); 
    143143        if ( is_ssl() ) 
    144                 $preview_link = str_replace( 'http://', 'https://', $preview_link ); 
     144                $preview_link = make_https ($preview_link); 
     145 
    145146        $preview_link = htmlspecialchars( add_query_arg( array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ), $preview_link ) ); 
    146147        $preview_text = esc_attr( sprintf( __( 'Preview of “%s”' ), $title ) ); 
    147148        $tags = $themes[$theme_name]['Tags']; 
  • wp-includes/default-constants.php

     
    246246        if ( !defined('FORCE_SSL_LOGIN') ) 
    247247                define('FORCE_SSL_LOGIN', false); 
    248248        force_ssl_login(FORCE_SSL_LOGIN); 
     249 
     250        if ( !defined('WP_HTTPS_PORT') ) 
     251                define('WP_HTTPS_PORT', 443); 
     252        if ( !defined('WP_HTTP_PORT') ) 
     253                define('WP_HTTP_PORT', 80); 
    249254} 
    250255 
    251256/** 
  • wp-includes/functions.php

     
    36503650                        return true; 
    36513651                if ( '1' == $_SERVER['HTTPS'] ) 
    36523652                        return true; 
    3653         } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { 
     3653        } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] || WP_HTTPS_PORT == $_SERVER['SERVER_PORT'] ) ) { 
    36543654                return true; 
    36553655        } 
    36563656        return false; 
     
    37113711                $url = WP_SITEURL; 
    37123712        } else { 
    37133713                $schema = is_ssl() ? 'https://' : 'http://'; 
    3714                 $url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
     3714                $port = ''; 
     3715                if ( is_ssl() && 443 != WP_HTTPS_PORT ) { 
     3716                        $port = ':' . WP_HTTPS_PORT; 
     3717                } elseif ( 80 != WP_HTTP_PORT ) { 
     3718                        $port = ':' . WP_HTTP_PORT; 
     3719                } 
     3720                $url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $port . $_SERVER['REQUEST_URI']); 
    37153721        } 
    37163722        return rtrim($url, '/'); 
    37173723} 
  • wp-includes/link-template.php

     
    19341934        if ( 'http' != $scheme ) 
    19351935                $url = str_replace( 'http://', "{$scheme}://", $url ); 
    19361936 
     1937        // Replace the port, use what's in the URL, not what the requestor specified 
     1938        if ( ( 'http' == parse_url($url, PHP_URL_SCHEME) && 80 != WP_HTTP_PORT ) || ( 'https' == parse_url($url, PHP_URL_SCHEME) && 443 != WP_HTTPS_PORT ) ) { 
     1939                $url = str_replace(':' . parse_url($url, PHP_URL_PORT), '', $url); 
     1940                $port = ''; 
     1941                if ( 'https' == parse_url($url, PHP_URL_SCHEME) && 443 != WP_HTTPS_PORT ) { 
     1942                        $port = ':' . WP_HTTPS_PORT; 
     1943                } elseif ( 'http' == parse_url($url, PHP_URL_SCHEME) && 80 != WP_HTTP_PORT ) { 
     1944                        $port = ':' . WP_HTTP_PORT; 
     1945                } 
     1946                $url = str_replace(parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST), parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . $port, $url); 
     1947        } 
     1948 
    19371949        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false ) 
    19381950                $url .= '/' . ltrim( $path, '/' ); 
    19391951 
     
    19751987} 
    19761988 
    19771989/** 
     1990 * Switch an http url to https 
     1991 * @param string $url 
     1992 * @return string 
     1993 */ 
     1994function make_https($url) { 
     1995         
     1996        // If the URL isn't parsable return 
     1997        $parts = parse_url($url); 
     1998        if ( null === $parts ) 
     1999                return $url; 
     2000         
     2001        // Set port number 
     2002        $port = ''; 
     2003        if ( 443 != WP_HTTPS_PORT ) 
     2004                $port = ':' . WP_HTTPS_PORT; 
     2005         
     2006        // Make the swaps 
     2007        $url = preg_replace('/http[s]:\/\/' . $parts['host'] . ':\d+/', 'https://' . $parts['host'] . $port, $url); 
     2008 
     2009        // Done 
     2010        return $url; 
     2011} 
     2012 
     2013/** 
     2014 * Switch an https url to http 
     2015 * @param string $url 
     2016 * @return string 
     2017 */ 
     2018function make_http($url) { 
     2019         
     2020        // If the URL isn't parsable return 
     2021        $parts = parse_url($url); 
     2022        if ( null === $parts ) 
     2023                return $url; 
     2024         
     2025        // Set port number 
     2026        $port = ''; 
     2027        if ( 80 != WP_HTTP_PORT ) 
     2028                $port = ':' . WP_HTTP_PORT; 
     2029         
     2030        // Make the swaps 
     2031        $url = preg_replace('/http[s]:\/\/' . $parts['host'] . ':\d+/', 'http://' . $parts['host'] . $port, $url); 
     2032 
     2033        // Done 
     2034        return $url; 
     2035} 
     2036 
     2037/** 
    19782038 * Retrieve the url to the includes directory. 
    19792039 * 
    19802040 * @package WordPress 
  • wp-includes/pluggable.php

     
    739739        // If https is required and request is http, redirect 
    740740        if ( $secure && !is_ssl() && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) { 
    741741                if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) { 
    742                         wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI'])); 
     742                        wp_redirect(make_https($_SERVER['REQUEST_URI'])); 
    743743                        exit(); 
    744744                } else { 
    745                         wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
     745                        wp_redirect(make_https('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])); 
    746746                        exit(); 
    747747                } 
    748748        } 
     
    758758                // If the user wants ssl but the session is not ssl, redirect. 
    759759                if ( !$secure && get_user_option('use_ssl', $user_id) && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) { 
    760760                        if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) { 
    761                                 wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI'])); 
     761                                wp_redirect(make_https($_SERVER['REQUEST_URI'])); 
    762762                                exit(); 
    763763                        } else { 
    764                                 wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
     764                                wp_redirect(make_https('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])); 
    765765                                exit(); 
    766766                        } 
    767767                } 
  • wp-includes/theme.php

     
    14481448                $url = get_random_header_image(); 
    14491449 
    14501450        if ( is_ssl() ) 
    1451                 $url = str_replace( 'http://', 'https://', $url ); 
     1451                $url = make_https($url); 
    14521452        else 
    1453                 $url = str_replace( 'https://', 'http://', $url ); 
     1453                $url = make_http($url); 
    14541454 
    14551455        return esc_url_raw( $url ); 
    14561456}