Fixing issues with files trasitioning to relative paths
Этот коммит содержится в:
33
api/post.go
33
api/post.go
@@ -160,39 +160,6 @@ func CreatePost(c *Context, post *model.Post, doUpdateLastViewed bool) (*model.P
|
|||||||
|
|
||||||
post.UserId = c.Session.UserId
|
post.UserId = c.Session.UserId
|
||||||
|
|
||||||
if len(post.Filenames) > 0 {
|
|
||||||
doRemove := false
|
|
||||||
for i := len(post.Filenames) - 1; i >= 0; i-- {
|
|
||||||
path := post.Filenames[i]
|
|
||||||
|
|
||||||
doRemove = false
|
|
||||||
if model.UrlRegex.MatchString(path) {
|
|
||||||
continue
|
|
||||||
} else if model.PartialUrlRegex.MatchString(path) {
|
|
||||||
matches := model.PartialUrlRegex.FindAllStringSubmatch(path, -1)
|
|
||||||
if len(matches) == 0 || len(matches[0]) < 5 {
|
|
||||||
doRemove = true
|
|
||||||
}
|
|
||||||
|
|
||||||
channelId := matches[0][2]
|
|
||||||
if channelId != post.ChannelId {
|
|
||||||
doRemove = true
|
|
||||||
}
|
|
||||||
|
|
||||||
userId := matches[0][3]
|
|
||||||
if userId != post.UserId {
|
|
||||||
doRemove = true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
doRemove = true
|
|
||||||
}
|
|
||||||
if doRemove {
|
|
||||||
l4g.Error("Bad filename discarded, filename=%v", path)
|
|
||||||
post.Filenames = append(post.Filenames[:i], post.Filenames[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var rpost *model.Post
|
var rpost *model.Post
|
||||||
if result := <-Srv.Store.Post().Save(post); result.Err != nil {
|
if result := <-Srv.Store.Post().Save(post); result.Err != nil {
|
||||||
return nil, result.Err
|
return nil, result.Err
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func TestCreatePost(t *testing.T) {
|
|||||||
channel2 := &model.Channel{DisplayName: "Test API Name", Name: "a" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id}
|
channel2 := &model.Channel{DisplayName: "Test API Name", Name: "a" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id}
|
||||||
channel2 = Client.Must(Client.CreateChannel(channel2)).Data.(*model.Channel)
|
channel2 = Client.Must(Client.CreateChannel(channel2)).Data.(*model.Channel)
|
||||||
|
|
||||||
filenames := []string{"/api/v1/files/get/12345678901234567890123456/12345678901234567890123456/test.png", "/api/v1/files/get/" + channel1.Id + "/" + user1.Id + "/test.png", "www.mattermost.com/fake/url", "junk"}
|
filenames := []string{"/api/v1/files/get/12345678901234567890123456/12345678901234567890123456/test.png", "/api/v1/files/get/" + channel1.Id + "/" + user1.Id + "/test.png"}
|
||||||
|
|
||||||
post1 := &model.Post{ChannelId: channel1.Id, Message: "#hashtag a" + model.NewId() + "a", Filenames: filenames}
|
post1 := &model.Post{ChannelId: channel1.Id, Message: "#hashtag a" + model.NewId() + "a", Filenames: filenames}
|
||||||
rpost1, err := Client.CreatePost(post1)
|
rpost1, err := Client.CreatePost(post1)
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ module.exports = React.createClass({
|
|||||||
var filenameSplit = filename.split('.');
|
var filenameSplit = filename.split('.');
|
||||||
var ext = filenameSplit[filenameSplit.length-1];
|
var ext = filenameSplit[filenameSplit.length-1];
|
||||||
var type = utils.getFileType(ext);
|
var type = utils.getFileType(ext);
|
||||||
|
// This is a temporary patch to fix issue with old files using absolute paths
|
||||||
|
if (filename.indexOf("/api/v1/files/get") != -1) {
|
||||||
|
filename = filename.split("/api/v1/files/get")[1];
|
||||||
|
}
|
||||||
filename = window.location.origin + "/api/v1/files/get" + filename;
|
filename = window.location.origin + "/api/v1/files/get" + filename;
|
||||||
|
|
||||||
if (type === "image") {
|
if (type === "image") {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user