WordPress.org

Make WordPress Core

Ticket #5298: https-app.patch

File https-app.patch, 4.3 KB (added by rubys, 6 years ago)

Original patch did not check for https correctly in the RSD

  • wp-app.php

     
    6868        var $MEDIA_SINGLE_PATH = "attachment"; 
    6969 
    7070        var $params = array(); 
    71         var $script_name = "wp-app.php"; 
    7271        var $media_content_types = array('image/*','audio/*','video/*'); 
    7372        var $atom_content_types = array('application/atom+xml'); 
    7473 
     
    8079        function AtomServer() { 
    8180 
    8281                $this->script_name = array_pop(explode('/',$_SERVER['SCRIPT_NAME'])); 
     82                $this->app_base = get_bloginfo('url') . '/' . $this->script_name . '/'; 
     83                if ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) { 
     84                        $this->app_base = preg_replace( '/^http:\/\//', 'https://', $this->app_base ); 
     85                } 
    8386 
    8487                $this->selectors = array( 
    8588                        '@/service$@' => 
     
    594597                } else { 
    595598                        $path = $this->ENTRIES_PATH; 
    596599                } 
    597                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $path; 
     600                $url = $this->app_base . $path; 
    598601                if(isset($page) && is_int($page)) { 
    599602                        $url .= "/$page"; 
    600603                } 
     
    607610        } 
    608611 
    609612        function get_categories_url($page = NULL) { 
    610                 return get_bloginfo('url') . '/' . $this->script_name . '/' . $this->CATEGORIES_PATH; 
     613                return $this->app_base . $this->CATEGORIES_PATH; 
    611614        } 
    612615 
    613616        function the_categories_url() { 
     
    616619        } 
    617620 
    618621        function get_attachments_url($page = NULL) { 
    619                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->MEDIA_PATH; 
     622                $url = $this->app_base . $this->MEDIA_PATH; 
    620623                if(isset($page) && is_int($page)) { 
    621624                        $url .= "/$page"; 
    622625                } 
     
    629632        } 
    630633 
    631634        function get_service_url() { 
    632                 return get_bloginfo('url') . '/' . $this->script_name . '/' . $this->SERVICE_PATH; 
     635                return $this->app_base . $this->SERVICE_PATH; 
    633636        } 
    634637 
    635638        function get_entry_url($postID = NULL) { 
     
    638641                        $postID = (int) $GLOBALS['post']->ID; 
    639642                } 
    640643 
    641                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->ENTRY_PATH . "/$postID"; 
     644                $url = $this->app_base . $this->ENTRY_PATH . "/$postID"; 
    642645 
    643646                log_app('function',"get_entry_url() = $url"); 
    644647                return $url; 
     
    655658                        $postID = (int) $GLOBALS['post']->ID; 
    656659                } 
    657660 
    658                 $url = get_bloginfo('url') . '/' . $this->script_name . '/' . $this->MEDIA_SINGLE_PATH ."/file/$postID"; 
     661                $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID"; 
    659662 
    660663                log_app('function',"get_media_url() = $url"); 
    661664                return $url; 
     
    919922                                $ctloc = $this->get_entry_url($post_ID); 
    920923                                break; 
    921924                        case 'attachment': 
    922                                 $edit = get_bloginfo('url') . '/' . $this->script_name . "/attachments/$post_ID"; 
     925                                $edit = $this->app_base . "attachments/$post_ID"; 
    923926                                break; 
    924927                } 
    925928                header("Content-Type: $this->ATOM_CONTENT_TYPE"); 
  • xmlrpc.php

     
    2020if ( isset( $_GET['rsd'] ) ) { // http://archipelago.phrasewise.com/rsd 
    2121header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true); 
    2222 
     23$app = get_bloginfo('url') . "/wp-app.php/service"; 
     24 
     25// Determine if this host supports TLS/SSL 
     26if (in_array('curl', get_loaded_extensions())) { 
     27        $apps = preg_replace( '/^http:\/\//', 'https://', $app ); 
     28 
     29        $ch = curl_init(); 
     30        curl_setopt($ch, CURLOPT_URL, $apps); 
     31        curl_setopt($ch, CURLOPT_FAILONERROR, true); 
     32        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     33        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     34 
     35        $data = curl_exec ($ch); 
     36 
     37        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     38        curl_close ($ch); 
     39 
     40        if ($status == 200 || $status == 401) { 
     41                $app = $apps; 
     42        } 
     43} 
     44 
    2345?> 
    2446<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> 
    2547<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd"> 
     
    3254      <api name="Movable Type" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" /> 
    3355      <api name="MetaWeblog" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" /> 
    3456      <api name="Blogger" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/xmlrpc.php" /> 
    35       <api name="Atom" blogID="1" preferred="false" apiLink="<?php bloginfo_rss('wpurl') ?>/wp-app.php/service" />  
     57      <api name="Atom" blogID="" preferred="false" apiLink="<?php echo $app ?>" />  
    3658    </apis> 
    3759  </service> 
    3860</rsd>