mirror of
https://pagure.io/fedora-infra/ansible.git
synced 2026-06-27 23:57:02 +08:00
proxies/forge: fix attachment proxying for images
This turned out to be a bit complicated, see https://codeberg.org/forgejo/forgejo/issues/6360#issuecomment-9010932 . Pagure images in comments use root-relative Markdown links, like this:  but Forgejo renders those relative to *the repo*, not the server root, so they get rendered as something like: <img src="/forgejoorg/forgejorepo/group/repo/issue/raw/files/image.png"> However, it does *not* do this for *non-image* root-relative links, so those aren't 'broken'. This means we need to handle *both* cases in the proxying, and we also need to keep in mind that Pagure allows repos without a group. So we can wind up with one, two, three or four folders before /issue. I did some testing and I *think* this should cover all cases. I've tested this does fix images, I haven't tested on a non-image attachment yet (need to find one). Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
committed by
adamwill
parent
219ffbf416
commit
cacc7710ad
@@ -7,6 +7,20 @@ SSLProxyVerify require
|
||||
SSLProxyVerifyDepth 2
|
||||
SSLProxyCACertificateFile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"
|
||||
</Proxy>
|
||||
# Forgejo can't decide whether to render root-relative links as relative
|
||||
# to the server root or the repo root, and currently behaves differently
|
||||
# for image and non-image links:
|
||||
# https://codeberg.org/forgejo/forgejo/issues/6360#issuecomment-9010932
|
||||
|
||||
# This first match handles cases where the link is rendered relative to
|
||||
# to repo. As all repos must have an org in Forgejo, if there are more
|
||||
# than two directories before /issue, this must be repo-relative; the
|
||||
# third match will be either pagurerepo or pagureorg/pagurerepo
|
||||
ProxyPassMatch ^/(.+?)/(.+?)/(.+?)/issue/raw/files/(.*)$ https://pagure.io/$3/issue/raw/files/$4
|
||||
|
||||
# This match handles cases where the link is rendered relative to the
|
||||
# server root; if we didn't hit the first match, the first match here
|
||||
# will be pagurerepo or pagureorg/pagurerepo
|
||||
ProxyPassMatch ^/(.+?)/issue/raw/files/(.*)$ https://stg.pagure.io/$1/issue/raw/files/$2
|
||||
{% endif %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user