diff options
author | Simon Ser <contact@emersion.fr> | 2020-02-25 15:45:43 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-02-25 15:45:43 +0100 |
commit | a8a3c82579ac244dde56320224f6bd15f17427f7 (patch) | |
tree | b0f841a6f0013def4674620ba43ec27077b044c1 /plugins/viewhtml/sanitize.go | |
parent | 8c4fd20e2765e112518a383229a70a27b7984da3 (diff) | |
download | alps-a8a3c82579ac244dde56320224f6bd15f17427f7.tar.gz alps-a8a3c82579ac244dde56320224f6bd15f17427f7.zip |
plugins/viewhtml: add image proxy
Diffstat (limited to 'plugins/viewhtml/sanitize.go')
-rw-r--r-- | plugins/viewhtml/sanitize.go | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/plugins/viewhtml/sanitize.go b/plugins/viewhtml/sanitize.go index c7de703..a931fe1 100644 --- a/plugins/viewhtml/sanitize.go +++ b/plugins/viewhtml/sanitize.go @@ -80,17 +80,32 @@ func (san *sanitizer) sanitizeImageURL(src string) string { return "about:blank" } + switch strings.ToLower(u.Scheme) { // TODO: mid support? - if !strings.EqualFold(u.Scheme, "cid") || san.msg == nil { - return "about:blank" - } + case "cid": + if san.msg == nil { + return "about:blank" + } + + part := san.msg.PartByID(u.Opaque) + if part == nil || !strings.HasPrefix(part.MIMEType, "image/") { + return "about:blank" + } + + return part.URL(true).String() + case "https": + if !proxyEnabled { + return "about:blank" + } - part := san.msg.PartByID(u.Opaque) - if part == nil || !strings.HasPrefix(part.MIMEType, "image/") { + proxyURL := url.URL{Path: "/proxy"} + proxyQuery := make(url.Values) + proxyQuery.Set("src", u.String()) + proxyURL.RawQuery = proxyQuery.Encode() + return proxyURL.String() + default: return "about:blank" } - - return part.URL(true).String() } func (san *sanitizer) sanitizeCSSDecls(decls []*css.Declaration) []*css.Declaration { |