Making WordPress.org


Ignore:
Timestamp:
09/17/2025 01:35:44 AM (8 months ago)
Author:
dd32
Message:

Trac: oEmbed: Be more strict about the URLs we accept, don't attempt to render when we get a TracError.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/api.wordpress.org/public_html/dotorg/trac/oembed/index.php

    r14489 r14530  
    3636    // meta|core are the only tracs embedable.
    3737    // milestone|ticketgraph|ticket|changeset are the only endpoints allowable.
    38     ! preg_match( '!^(?P<baseurl>https://(?P<trac>meta|core).trac.wordpress.org/)(?P<type>milestone|ticketgraph|ticket|changeset|query)([/?]|$)!i', $url, $m )
     38    ! (
     39        preg_match( '!^(?P<baseurl>https://(?P<trac>meta|core).trac.wordpress.org/)(?P<type>ticket|changeset)/\d+$!i', $url, $m ) ||
     40        preg_match( '!^(?P<baseurl>https://(?P<trac>meta|core).trac.wordpress.org/)(?P<type>query)[?].+$!i', $url, $m ) ||
     41        preg_match( '!^(?P<baseurl>https://(?P<trac>meta|core).trac.wordpress.org/)(?P<type>milestone)/[a-z0-9.]+[ ]?[a-z0-9.]*$!i', $url, $m ) ||
     42        preg_match( '!^(?P<baseurl>https://(?P<trac>meta|core).trac.wordpress.org/)(?P<type>ticketgraph)([?]component=[^&]+)?$!i', $url, $m )
     43    )
    3944) {
    4045    header( 'HTTP/1.1 404 Not Found', true, 404 );
     
    129134);
    130135
    131 if ( ! $html ) {
     136if (
     137    ! $html ||
     138    (
     139        ! str_starts_with( $html, '<' ) &&
     140        str_contains( $html, 'TracError: ' )
     141    )
     142) {
    132143    $output = '<h1>Temporarily Unavailable</h1>';
    133144    wp_cache_set( $cache_key, $output, 'trac-oembed', MINUTE_IN_SECONDS );
Note: See TracChangeset for help on using the changeset viewer.