remove willnorris/imageproxy support

This commit is contained in:
Christopher Brown
2018-02-12 13:05:01 -06:00
parent 1ae680aefa
commit 141cfd2f9b
4 changed files with 13 additions and 66 deletions

View File

@@ -37,7 +37,8 @@ func TestGetImage(t *testing.T) {
assert.Equal(t, http.StatusNotFound, resp.StatusCode) assert.Equal(t, http.StatusNotFound, resp.StatusCode)
th.App.UpdateConfig(func(cfg *model.Config) { th.App.UpdateConfig(func(cfg *model.Config) {
cfg.ServiceSettings.ImageProxyType = model.NewString("willnorris/imageproxy") cfg.ServiceSettings.ImageProxyType = model.NewString("atmos/camo")
cfg.ServiceSettings.ImageProxyOptions = model.NewString("foo")
cfg.ServiceSettings.ImageProxyURL = model.NewString("https://proxy.foo.bar") cfg.ServiceSettings.ImageProxyURL = model.NewString("https://proxy.foo.bar")
}) })
@@ -48,5 +49,5 @@ func TestGetImage(t *testing.T) {
resp, err = th.Client.HttpClient.Do(r) resp, err = th.Client.HttpClient.Do(r)
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, http.StatusFound, resp.StatusCode) assert.Equal(t, http.StatusFound, resp.StatusCode)
assert.Equal(t, "https://proxy.foo.bar//"+originURL, resp.Header.Get("Location")) assert.Equal(t, "https://proxy.foo.bar/004afe2ef382eb5f30c4490f793f8a8c5b33d8a2/687474703a2f2f666f6f2e6261722f62617a2e676966", resp.Header.Get("Location"))
} }

View File

@@ -6,8 +6,6 @@ package app
import ( import (
"crypto/hmac" "crypto/hmac"
"crypto/sha1" "crypto/sha1"
"crypto/sha256"
"encoding/base64"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
@@ -904,18 +902,6 @@ func (a *App) ImageProxyAdder() func(string) string {
mac.Write([]byte(url)) mac.Write([]byte(url))
digest := hex.EncodeToString(mac.Sum(nil)) digest := hex.EncodeToString(mac.Sum(nil))
return proxyURL + digest + "/" + hex.EncodeToString([]byte(url)) return proxyURL + digest + "/" + hex.EncodeToString([]byte(url))
case "willnorris/imageproxy":
options := strings.Split(options, "|")
if len(options) > 1 {
mac := hmac.New(sha256.New, []byte(options[1]))
mac.Write([]byte(url))
digest := base64.URLEncoding.EncodeToString(mac.Sum(nil))
if options[0] == "" {
return proxyURL + "s" + digest + "/" + url
}
return proxyURL + options[0] + ",s" + digest + "/" + url
}
return proxyURL + options[0] + "/" + url
} }
return url return url
@@ -938,12 +924,6 @@ func (a *App) ImageProxyRemover() (f func(string) string) {
} }
} }
} }
case "willnorris/imageproxy":
if strings.HasPrefix(url, proxyURL) {
if slash := strings.IndexByte(url[len(proxyURL):], '/'); slash >= 0 {
return url[len(proxyURL)+slash+1:]
}
}
} }
return url return url

View File

@@ -208,38 +208,27 @@ func TestImageProxy(t *testing.T) {
ImageURL: "http://mydomain.com/myimage", ImageURL: "http://mydomain.com/myimage",
ProxiedImageURL: "https://127.0.0.1/f8dace906d23689e8d5b12c3cefbedbf7b9b72f5/687474703a2f2f6d79646f6d61696e2e636f6d2f6d79696d616765", ProxiedImageURL: "https://127.0.0.1/f8dace906d23689e8d5b12c3cefbedbf7b9b72f5/687474703a2f2f6d79646f6d61696e2e636f6d2f6d79696d616765",
}, },
"willnorris/imageproxy": { "atmos/camo_SameSite": {
ProxyType: "willnorris/imageproxy", ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1",
ProxyOptions: "x1000",
ImageURL: "http://mydomain.com/myimage",
ProxiedImageURL: "https://127.0.0.1/x1000/http://mydomain.com/myimage",
},
"willnorris/imageproxy_SameSite": {
ProxyType: "willnorris/imageproxy",
ProxyURL: "https://127.0.0.1", ProxyURL: "https://127.0.0.1",
ProxyOptions: "foo",
ImageURL: "http://mymattermost.com/myimage", ImageURL: "http://mymattermost.com/myimage",
ProxiedImageURL: "http://mymattermost.com/myimage", ProxiedImageURL: "http://mymattermost.com/myimage",
}, },
"willnorris/imageproxy_PathOnly": { "atmos/camo_PathOnly": {
ProxyType: "willnorris/imageproxy", ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1", ProxyURL: "https://127.0.0.1",
ProxyOptions: "foo",
ImageURL: "/myimage", ImageURL: "/myimage",
ProxiedImageURL: "/myimage", ProxiedImageURL: "/myimage",
}, },
"willnorris/imageproxy_EmptyImageURL": { "atmos/camo_EmptyImageURL": {
ProxyType: "willnorris/imageproxy", ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1", ProxyURL: "https://127.0.0.1",
ProxyOptions: "foo",
ImageURL: "", ImageURL: "",
ProxiedImageURL: "", ProxiedImageURL: "",
}, },
"willnorris/imageproxy_WithSigning": {
ProxyType: "willnorris/imageproxy",
ProxyURL: "https://127.0.0.1",
ProxyOptions: "x1000|foo",
ImageURL: "http://mydomain.com/myimage",
ProxiedImageURL: "https://127.0.0.1/x1000,sbhHVoG5d60UvnNtGh6Iy6x4PaMmnsh8JfZ7JfErKjGU=/http://mydomain.com/myimage",
},
} { } {
t.Run(name, func(t *testing.T) { t.Run(name, func(t *testing.T) {
th.App.UpdateConfig(func(cfg *model.Config) { th.App.UpdateConfig(func(cfg *model.Config) {
@@ -265,26 +254,3 @@ func TestImageProxy(t *testing.T) {
}) })
} }
} }
var imageProxyBenchmarkSink *model.Post
func BenchmarkPostWithProxyRemovedFromImageURLs(b *testing.B) {
th := Setup().InitBasic()
defer th.TearDown()
th.App.UpdateConfig(func(cfg *model.Config) {
cfg.ServiceSettings.ImageProxyType = model.NewString("willnorris/imageproxy")
cfg.ServiceSettings.ImageProxyOptions = model.NewString("x1000|foo")
cfg.ServiceSettings.ImageProxyURL = model.NewString("https://127.0.0.1")
})
post := &model.Post{
Message: "![foo](http://mydomain.com/myimage)",
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
imageProxyBenchmarkSink = th.App.PostWithProxyAddedToImageURLs(post)
}
}

View File

@@ -2096,7 +2096,7 @@ func (ss *ServiceSettings) isValid() *AppError {
} }
switch *ss.ImageProxyType { switch *ss.ImageProxyType {
case "", "willnorris/imageproxy": case "":
case "atmos/camo": case "atmos/camo":
if *ss.ImageProxyOptions == "" { if *ss.ImageProxyOptions == "" {
return NewAppError("Config.IsValid", "model.config.is_valid.atmos_camo_image_proxy_options.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.atmos_camo_image_proxy_options.app_error", nil, "", http.StatusBadRequest)