Skip to content

Commit 8f84665

Browse files
authored
Merge pull request #22 from gitopia/limit-file-upload-size
Limit file upload size
2 parents 8cd547f + 2714519 commit 8f84665

6 files changed

Lines changed: 38 additions & 39 deletions

File tree

app/gitopia.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ package app
33
import (
44
"context"
55

6-
"github.com/pkg/errors"
7-
"github.com/spf13/viper"
8-
6+
sdk "github.com/cosmos/cosmos-sdk/types"
7+
"github.com/cosmos/cosmos-sdk/x/authz"
98
"github.com/gitopia/git-server/logger"
109
"github.com/gitopia/gitopia/x/gitopia/types"
10+
"github.com/pkg/errors"
11+
"github.com/spf13/viper"
1112
"github.com/tendermint/starport/starport/pkg/cosmosaccount"
1213
"github.com/tendermint/starport/starport/pkg/cosmosclient"
13-
14-
sdk "github.com/cosmos/cosmos-sdk/types"
15-
"github.com/cosmos/cosmos-sdk/x/authz"
1614
)
1715

1816
const (
@@ -37,7 +35,8 @@ func NewGitopiaClient(ctx context.Context, account string) (GitopiaClient, error
3735
client, err := cosmosclient.New(ctx,
3836
cosmosclient.WithNodeAddress(viper.GetString("tm_addr")),
3937
//cosmosclient.WithKeyringServiceName("cosmos"), // not suported on macos
40-
cosmosclient.WithKeyringBackend(cosmosaccount.KeyringOS),
38+
cosmosclient.WithKeyringBackend(cosmosaccount.KeyringTest),
39+
cosmosclient.WithHome(viper.GetString("keyring_dir")),
4140
cosmosclient.WithAddressPrefix(GITOPIA_ACC_ADDRESS_PREFIX),
4241
)
4342
if err != nil {

config_dev.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ gitopia_grpc_url = "grpc.gitopia.dev:9090"
33
git_dir = "/var/repos"
44
attachment_dir = "/var/attachments"
55
tm_addr = "http://grpc.gitopia.dev:26657"
6-
key_name = "git-server"
6+
key_name = "git-server"
7+
keyring_dir = "/home/ubuntu/git-server"

config_local.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ gitopia_grpc_url = "localhost:9090"
33
git_dir = "/var/repos"
44
attachment_dir = "/var/attachments"
55
tm_addr = "http://localhost:26657"
6-
key_name = "git-server"
6+
key_name = "git-server"
7+
keyring_dir = ""

config_prod.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ gitopia_grpc_url = "grpc.gitopia.com:9090"
33
git_dir = "/var/repos"
44
attachment_dir = "/var/attachments"
55
tm_addr = "http://grpc.gitopia.com:26657"
6-
key_name = "git-server"
6+
key_name = "git-server"
7+
keyring_dir = "/home/ubuntu/git-server"

handler.go

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,13 @@ import (
2222
"google.golang.org/grpc/credentials/insecure"
2323
)
2424

25+
const MAX_UPLOAD_SIZE = 2 * 1024 * 1024 * 1024 // 2GB
26+
2527
type uploadAttachmentResponse struct {
2628
Sha string `json:"sha"`
2729
Size int64 `json:"size"`
2830
}
2931

30-
type forkRepositoryPostBody struct {
31-
SourceRepositoryID uint64 `json:"source_repository_id"`
32-
TargetRepositoryID uint64 `json:"target_repository_id"`
33-
}
34-
35-
type forkRepositoryResponseData struct {
36-
Forked bool `json:"forked"`
37-
}
38-
39-
type forkRepositoryResponse struct {
40-
Data forkRepositoryResponseData `json:"data"`
41-
Error string `json:"error"`
42-
}
43-
4432
type pullRequestCheckResponseData struct {
4533
IsMergeable bool `json:"is_mergeable"`
4634
}
@@ -50,17 +38,12 @@ type pullRequestCheckResponse struct {
5038
Error string `json:"error"`
5139
}
5240

53-
type pullRequestMergeResponseData struct {
54-
Merged bool `json:"merged"`
55-
MergeCommitSha string `json:"merge_commit_sha"`
56-
}
57-
58-
type pullRequestMergeResponse struct {
59-
Data pullRequestMergeResponseData `json:"data"`
60-
Error string `json:"error"`
61-
}
62-
6341
func uploadAttachmentHandler(w http.ResponseWriter, r *http.Request) {
42+
r.Body = http.MaxBytesReader(w, r.Body, MAX_UPLOAD_SIZE)
43+
if err := r.ParseMultipartForm(MAX_UPLOAD_SIZE); err != nil {
44+
http.Error(w, "The uploaded file is too big. Please choose an file that's less than 2GB in size", http.StatusBadRequest)
45+
return
46+
}
6447

6548
err := r.ParseMultipartForm(32 << 20)
6649
if err != nil {
@@ -85,11 +68,19 @@ func uploadAttachmentHandler(w http.ResponseWriter, r *http.Request) {
8568

8669
sha := sha256.New()
8770
_, err = io.Copy(io.MultiWriter(sha, tmpFile), file)
71+
if err != nil {
72+
http.Error(w, err.Error(), http.StatusInternalServerError)
73+
return
74+
}
8875

8976
attachmentDir := viper.GetString("attachment_dir")
9077
shaString := hex.EncodeToString(sha.Sum(nil))
9178
filePath := fmt.Sprintf("%s/%s", attachmentDir, shaString)
9279
localFile, err := os.Create(filePath)
80+
if err != nil {
81+
http.Error(w, err.Error(), http.StatusInternalServerError)
82+
return
83+
}
9384
defer localFile.Close()
9485

9586
tmpFile.Seek(0, io.SeekStart)
@@ -108,8 +99,6 @@ func uploadAttachmentHandler(w http.ResponseWriter, r *http.Request) {
10899
}
109100

110101
json.NewEncoder(w).Encode(resp)
111-
112-
return
113102
}
114103

115104
func getAttachmentHandler(w http.ResponseWriter, r *http.Request) {
@@ -170,8 +159,6 @@ func getAttachmentHandler(w http.ResponseWriter, r *http.Request) {
170159
if err != nil {
171160
http.Error(w, err.Error(), http.StatusInternalServerError)
172161
}
173-
174-
return
175162
}
176163

177164
func (s *Server) pullRequestCommitsHandler(w http.ResponseWriter, r *http.Request) {

handler/mergePullRequest.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,17 @@ func (h *InvokeMergePullRequestEventHandler) Process(ctx context.Context, event
169169
return err
170170
}
171171

172-
message := fmt.Sprintf("Merge pull request #%v from %s/%s", resp.Iid, event.Creator, resp.Head.Branch)
172+
headRepositoryName, err := h.gc.RepositoryName(ctx, resp.Head.RepositoryId)
173+
if err != nil {
174+
err = errors.WithMessage(err, "query error")
175+
err2 := h.gc.UpdateTask(ctx, event.Creator, event.TaskId, types.StateFailure, err.Error())
176+
if err2 != nil {
177+
return errors.WithMessage(err2, "update task error")
178+
}
179+
return err
180+
}
181+
182+
message := fmt.Sprintf("Merge pull request #%v from %s/%s", resp.Iid, headRepositoryName, resp.Head.Branch)
173183

174184
quarantineRepoPath, err := utils.CreateQuarantineRepo(resp.Base.RepositoryId, resp.Head.RepositoryId, resp.Base.Branch, resp.Head.Branch)
175185
if err != nil {

0 commit comments

Comments
 (0)