diff options
author | Byron Jones <bjones@mozilla.com> | 2013-12-05 18:57:01 +0100 |
---|---|---|
committer | Byron Jones <bjones@mozilla.com> | 2013-12-05 18:57:01 +0100 |
commit | 1e95357d5127c40acc4bf6e7ed10739f30c6ca95 (patch) | |
tree | 4957247cdaf95a7923b6eaf2db3c0b0433add915 /extensions/BMO | |
parent | 8ba55d70d8d4e652037939bb9be52e22ce44992d (diff) | |
download | bugzilla-1e95357d5127c40acc4bf6e7ed10739f30c6ca95.tar.gz bugzilla-1e95357d5127c40acc4bf6e7ed10739f30c6ca95.tar.xz |
Bug 922226: redirect when attachments contain reviewboard URLs
Diffstat (limited to 'extensions/BMO')
-rw-r--r-- | extensions/BMO/Extension.pm | 20 | ||||
-rw-r--r-- | extensions/BMO/lib/Data.pm | 6 |
2 files changed, 18 insertions, 8 deletions
diff --git a/extensions/BMO/Extension.pm b/extensions/BMO/Extension.pm index 58813cfc6..2235ebfea 100644 --- a/extensions/BMO/Extension.pm +++ b/extensions/BMO/Extension.pm @@ -595,8 +595,8 @@ sub attachment_process_data { my ($self, $args) = @_; my $attributes = $args->{attributes}; - # quick checks - must be a text/plain non-patch - return if $attributes->{ispatch} || $attributes->{mimetype} ne 'text/plain'; + # must be a text attachment + return unless $attributes->{mimetype} eq 'text/plain'; # check the attachment size, and get attachment content if it isn't too large my $data = $attributes->{data}; @@ -614,12 +614,18 @@ sub attachment_process_data { } # trim and check for the pull request url + return unless defined $url; $url = trim($url); return if $url =~ /\s/; - return unless $url =~ m#^https://github\.com/[^/]+/[^/]+/pull/\d+\/?$#i; - # must be a valid pull-request - $attributes->{mimetype} = GITHUB_PR_CONTENT_TYPE; + if ($url =~ m#^https://github\.com/[^/]+/[^/]+/pull/\d+/?$#i) { + $attributes->{mimetype} = GITHUB_PR_CONTENT_TYPE; + $attributes->{ispatch} = 0; + } + elsif ($url =~ m#^https://reviewboard(?:-dev)?\.allizom\.org/r/\d+/?#i) { + $attributes->{mimetype} = RB_REQUEST_CONTENT_TYPE; + $attributes->{ispatch} = 0; + } } # redirect automatically to github urls @@ -632,7 +638,9 @@ sub attachment_view { return if defined $cgi->param('content_type'); # must be our github content-type - return unless $attachment->contenttype eq GITHUB_PR_CONTENT_TYPE; + return unless + $attachment->contenttype eq GITHUB_PR_CONTENT_TYPE + or $attachment->contenttype eq RB_REQUEST_CONTENT_TYPE; # redirect print $cgi->redirect(trim($attachment->data)); diff --git a/extensions/BMO/lib/Data.pm b/extensions/BMO/lib/Data.pm index cf62b9acf..c4da9c29c 100644 --- a/extensions/BMO/lib/Data.pm +++ b/extensions/BMO/lib/Data.pm @@ -42,9 +42,11 @@ our @EXPORT = qw( $cf_visible_in_products %product_sec_groups %create_bug_formats @default_named_queries - GITHUB_PR_CONTENT_TYPE ); + GITHUB_PR_CONTENT_TYPE + RB_REQUEST_CONTENT_TYPE ); -use constant GITHUB_PR_CONTENT_TYPE => 'text/x-github-pull-request'; +use constant GITHUB_PR_CONTENT_TYPE => 'text/x-github-pull-request'; +use constant RB_REQUEST_CONTENT_TYPE => 'text/x-review-board-request'; # Which custom fields are visible in which products and components. # |