aboutsummaryrefslogtreecommitdiff
path: root/plugins/viewhtml/sanitize.go
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-02-25 15:45:43 +0100
committerSimon Ser <contact@emersion.fr>2020-02-25 15:45:43 +0100
commita8a3c82579ac244dde56320224f6bd15f17427f7 (patch)
treeb0f841a6f0013def4674620ba43ec27077b044c1 /plugins/viewhtml/sanitize.go
parent8c4fd20e2765e112518a383229a70a27b7984da3 (diff)
downloadalps-a8a3c82579ac244dde56320224f6bd15f17427f7.tar.gz
alps-a8a3c82579ac244dde56320224f6bd15f17427f7.zip
plugins/viewhtml: add image proxy
Diffstat (limited to 'plugins/viewhtml/sanitize.go')
-rw-r--r--plugins/viewhtml/sanitize.go29
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 {