diff options
Diffstat (limited to 'routers/repo')
-rw-r--r-- | routers/repo/attachment.go | 32 | ||||
-rw-r--r-- | routers/repo/download.go | 7 | ||||
-rw-r--r-- | routers/repo/issue.go | 4 | ||||
-rw-r--r-- | routers/repo/pull.go | 2 | ||||
-rw-r--r-- | routers/repo/release.go | 4 |
5 files changed, 34 insertions, 15 deletions
diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 51725100b8..d3201faec0 100644 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -7,26 +7,27 @@ package repo import ( "fmt" "net/http" - "os" "strings" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/storage" "code.gitea.io/gitea/modules/upload" ) func renderAttachmentSettings(ctx *context.Context) { - ctx.Data["IsAttachmentEnabled"] = setting.AttachmentEnabled - ctx.Data["AttachmentAllowedTypes"] = setting.AttachmentAllowedTypes - ctx.Data["AttachmentMaxSize"] = setting.AttachmentMaxSize - ctx.Data["AttachmentMaxFiles"] = setting.AttachmentMaxFiles + ctx.Data["IsAttachmentEnabled"] = setting.Attachment.Enabled + ctx.Data["AttachmentStoreType"] = setting.Attachment.StoreType + ctx.Data["AttachmentAllowedTypes"] = setting.Attachment.AllowedTypes + ctx.Data["AttachmentMaxSize"] = setting.Attachment.MaxSize + ctx.Data["AttachmentMaxFiles"] = setting.Attachment.MaxFiles } // UploadAttachment response for uploading issue's attachment func UploadAttachment(ctx *context.Context) { - if !setting.AttachmentEnabled { + if !setting.Attachment.Enabled { ctx.Error(404, "attachment is not enabled") return } @@ -44,7 +45,7 @@ func UploadAttachment(ctx *context.Context) { buf = buf[:n] } - err = upload.VerifyAllowedContentType(buf, strings.Split(setting.AttachmentAllowedTypes, ",")) + err = upload.VerifyAllowedContentType(buf, strings.Split(setting.Attachment.AllowedTypes, ",")) if err != nil { ctx.Error(400, err.Error()) return @@ -122,8 +123,23 @@ func GetAttachment(ctx *context.Context) { } } + if setting.Attachment.ServeDirect { + //If we have a signed url (S3, object storage), redirect to this directly. + u, err := storage.Attachments.URL(attach.RelativePath(), attach.Name) + + if u != nil && err == nil { + if err := attach.IncreaseDownloadCount(); err != nil { + ctx.ServerError("Update", err) + return + } + + ctx.Redirect(u.String()) + return + } + } + //If we have matched and access to release or issue - fr, err := os.Open(attach.LocalPath()) + fr, err := storage.Attachments.Open(attach.RelativePath()) if err != nil { ctx.ServerError("Open", err) return diff --git a/routers/repo/download.go b/routers/repo/download.go index 5ae9475ae7..326f097cbc 100644 --- a/routers/repo/download.go +++ b/routers/repo/download.go @@ -22,7 +22,10 @@ import ( // ServeData download file from io.Reader func ServeData(ctx *context.Context, name string, reader io.Reader) error { buf := make([]byte, 1024) - n, _ := reader.Read(buf) + n, err := reader.Read(buf) + if err != nil && err != io.EOF { + return err + } if n >= 0 { buf = buf[:n] } @@ -48,7 +51,7 @@ func ServeData(ctx *context.Context, name string, reader io.Reader) error { ctx.Resp.Header().Set("Access-Control-Expose-Headers", "Content-Disposition") } - _, err := ctx.Resp.Write(buf) + _, err = ctx.Resp.Write(buf) if err != nil { return err } diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 2eabd6ab6c..d671f8de74 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -692,7 +692,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { return } - if setting.AttachmentEnabled { + if setting.Attachment.Enabled { attachments = form.Files } @@ -1633,7 +1633,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) { } var attachments []string - if setting.AttachmentEnabled { + if setting.Attachment.Enabled { attachments = form.Files } diff --git a/routers/repo/pull.go b/routers/repo/pull.go index ed70ec13a8..a19dbb5cb3 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -911,7 +911,7 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm) return } - if setting.AttachmentEnabled { + if setting.Attachment.Enabled { attachments = form.Files } diff --git a/routers/repo/release.go b/routers/repo/release.go index 02fbcaccaf..c93c8f5d61 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -212,7 +212,7 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) { } var attachmentUUIDs []string - if setting.AttachmentEnabled { + if setting.Attachment.Enabled { attachmentUUIDs = form.Files } @@ -333,7 +333,7 @@ func EditReleasePost(ctx *context.Context, form auth.EditReleaseForm) { } var attachmentUUIDs []string - if setting.AttachmentEnabled { + if setting.Attachment.Enabled { attachmentUUIDs = form.Files } |