From 18bd7195fd513f55216b03ab0207c9a7b5a8bf60 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Fri, 01 May 2026 18:09:35 +0000 Subject: [PATCH] appview: don't use camo for non-external readme images Signed-off-by: Seongmin Lee --- appview/repo/blob.go | 4 ---- appview/pages/markup/camo.go | 12 ------------ appview/pages/markup/markdown.go | 14 +++++++++----- 3 file(s) changed, 9 insertion(s)(+), 21 deletion(s)(-) diff --git a/appview/repo/blob.go b/appview/repo/blob.go --- a/appview/repo/blob.go +++ b/appview/repo/blob.go @@ -278,10 +278,6 @@ query.Set("raw", "true") blobURL := fmt.Sprintf("%s/xrpc/%s?%s", config.KnotMirror.Url, tangled.GitTempGetBlobNSID, query.Encode()) - - if config.Camo.Enabled() { - return markup.GenerateCamoURL(config.Camo.Host, config.Camo.SharedSecret, blobURL) - } return blobURL } diff --git a/appview/pages/markup/camo.go b/appview/pages/markup/camo.go --- a/appview/pages/markup/camo.go +++ b/appview/pages/markup/camo.go @@ -5,8 +5,6 @@ "crypto/sha256" "encoding/hex" "fmt" - - "github.com/yuin/goldmark/ast" ) func GenerateCamoURL(baseURL, secret, imageURL string) string { @@ -18,19 +16,9 @@ } func (rctx *RenderContext) camoImageLinkTransformer(dst string) string { - // don't camo on dev - if rctx.IsDev { - return dst - } - if rctx.CamoUrl != "" && rctx.CamoSecret != "" { return GenerateCamoURL(rctx.CamoUrl, rctx.CamoSecret, dst) } return dst -} - -func (rctx *RenderContext) camoImageLinkAstTransformer(img *ast.Image) { - dst := string(img.Destination) - img.Destination = []byte(rctx.camoImageLinkTransformer(dst)) } diff --git a/appview/pages/markup/markdown.go b/appview/pages/markup/markdown.go --- a/appview/pages/markup/markdown.go +++ b/appview/pages/markup/markdown.go @@ -184,13 +184,17 @@ continue } - camoUrl, _ := url.Parse(ctx.CamoUrl) - dstUrl, _ := url.Parse(attr.Val) - if camoUrl != nil && dstUrl != nil && dstUrl.Host != camoUrl.Host { + if isAbsoluteUrl(attr.Val) { + // apply camo to external links + camoUrl, _ := url.Parse(ctx.CamoUrl) + dstUrl, _ := url.Parse(attr.Val) + if camoUrl != nil && dstUrl != nil && dstUrl.Host != ctx.Hostname && dstUrl.Host != camoUrl.Host { + attr.Val = ctx.camoImageLinkTransformer(attr.Val) + } + } else { attr.Val = ctx.imageToRawTransformer(attr.Val) - attr.Val = ctx.camoImageLinkTransformer(attr.Val) - node.Attr[i] = attr } + node.Attr[i] = attr } } -- tangled.sh