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 } }