Ticket #3990: apache_mod_proxy.2.patch

File apache_mod_proxy.2.patch, 2.9 KB (added by bradley.kite@…, 12 years ago)

Fix video_url function to return correct URL's when going via an Apache/mod_proxy server

  • mythweb/includes/utils.php

     
    336336        if (!$ext && $_SESSION['file_url_override'])
    337337            return 'file://'.$_SESSION['file_url_override'].str_replace('%2F', '/', rawurlencode(basename($show->filename)));
    338338    // Which protocol should we use for downloads?
     339
     340        $host = $_SERVER['HTTP_HOST'];
     341       if (isset($_SERVER['HTTP_X_FORWARDED_HOST']))
     342           $host = $_SERVER['HTTP_X_FORWARDED_HOST'];
     343
    339344        $url = (($_SESSION['stream']['force_http'] || !isset($_SERVER['HTTPS']))
    340                  ? 'http://' .$_SERVER['HTTP_HOST'].':'._or($_SESSION['stream']['force_http_port'], '80')
    341                  : 'https://'.$_SERVER['HTTP_HOST'].':'._or($_SESSION['stream']['force_http_port'], '443')
     345                 ? 'http://' .$host.':'._or($_SESSION['stream']['force_http_port'], '80')
     346                 : 'https://'.$host.':'._or($_SESSION['stream']['force_http_port'], '443')
    342347               )
    343348               .root."pl/stream/$show->chanid/$show->recstartts";
    344349    // Handle specific file extension modes
     
    356361    // Windows likely gets a myth:// url -- grab the master host and port
    357362        global $Master_Host, $Master_Port;
    358363    // Is either the browser xor the master in an rfc 1918 zone?
     364        $remoteaddr = $_SERVER['REMOTE_ADDR'];
     365       if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
     366           $remoteaddr = $_SERVER['HTTP_X_FORWARDED_FOR'];
    359367        if (preg_match('/^(?:10|192\.168|172\.(?:1[6-9]|2[0-9]|3[0-6]))\./', $Master_Host)
    360                 xor preg_match('/^(?:10|192\.168|172\.(?:1[6-9]|2[0-9]|3[0-6]))\./', $_SERVER['REMOTE_ADDR'])) {
     368                xor preg_match('/^(?:10|192\.168|172\.(?:1[6-9]|2[0-9]|3[0-6]))\./', $remoteaddr)) {
    361369            return $url;
    362370        }
    363371    // Send the myth url
  • mythweb/modules/stream/handler.pl

     
    9191        my $uri = ($ENV{'HTTPS'} || $ENV{'SERVER_PORT'} == 443)
    9292                   ? 'https'
    9393                   : 'http';
    94         $uri .= '://'.($ENV{'SERVER_NAME'} or $ENV{'SERVER_ADDR'}).':'.$ENV{'SERVER_PORT'}
     94        my $serverAddr = $ENV{'HTTP_X_FORWARDED_HOST'} || $ENV{'SERVER_NAME'} || $ENV{'SERVER_ADDR'};
     95        $uri .= '://'.$serverAddr.':'.$ENV{'SERVER_PORT'}
    9596               .$ENV{'REQUEST_URI'};
     97
    9698        $uri =~ s/\.asx$//i;
    9799    # Build the ASX file so we can know how long it is
    98100        my $file = <<EOF;
     
    105107<REF HREF = "$uri" />
    106108</ENTRY>
    107109</ASX>
     110TEST - $ENV{'REQUEST_URI'}
    108111EOF
    109112    # Print out the HTML headers and the ASX file itself
    110113        print header(-type                => 'video/x-ms-asf',