Browse Source

Merge branch 'fix-1639' of https://git.openi.org.cn/OpenI/aiforge into fix-1639

tags/v1.22.4.1^2
zhoupzh 3 years ago
parent
commit
4857ca3173
1 changed files with 3 additions and 51 deletions
  1. +3
    -51
      routers/repo/http.go

+ 3
- 51
routers/repo/http.go View File

@@ -365,7 +365,8 @@ func HTTP(ctx *context.Context) {
ctx.NotFound("Smart Git HTTP", err)
return
}
route.handler(serviceHandler{cfg, w, r, dir, file, cfg.Env, repo})

route.handler(serviceHandler{cfg, w, r, dir, file, cfg.Env})
return
}
}
@@ -428,7 +429,6 @@ type serviceHandler struct {
dir string
file string
environ []string
repo *models.Repository
}

func (h *serviceHandler) setHeaderNoCache() {
@@ -546,19 +546,6 @@ func serviceRPC(h serviceHandler, service string) {
return
}
}
content, _ := ioutil.ReadAll(reqBody)
//check size
if service == "receive-pack" {
if err := repo_service.CheckPushSizeLimit4Http(h.repo, int64(len(content))); err != nil {
h.w.WriteHeader(http.StatusOK)
str := GenerateGitErrorBody(err.Error())
h.w.Write([]byte(str))
if h.w.Header().Get("Content-Type") == "" {
h.w.Header().Set("Content-Type", "application/x-git-receive-pack-result")
}
return
}
}

// set this for allow pre-receive and post-receive execute
h.environ = append(h.environ, "SSH_ORIGINAL_COMMAND="+service)
@@ -573,7 +560,7 @@ func serviceRPC(h serviceHandler, service string) {
}

cmd.Stdout = h.w
cmd.Stdin = bytes.NewReader(content)
cmd.Stdin = reqBody
cmd.Stderr = &stderr

pid := process.GetManager().Add(fmt.Sprintf("%s %s %s [repo_path: %s]", git.GitExecutable, service, "--stateless-rpc", h.dir), cancel)
@@ -585,41 +572,6 @@ func serviceRPC(h serviceHandler, service string) {
}
}

func GenerateGitErrorBody(content string) string {
var builder strings.Builder
builder.WriteString(GenerateErrStartPKTLine())
builder.WriteString(GeneratePKTLine(content))
builder.WriteString(GenerateEndPKTLine())
return builder.String()
}

func GeneratePKTLine(content string) string {
//\033[31m ... \033[0m
//mark the text red in shell
content = "\u0002\033[31m " + content + " \033[0m"
l := len(content)
prefixLength := 4
suffix := "\n"
f := strconv.FormatInt(int64(l+prefixLength+len(suffix)), 16)
lf := len(f)
if lf == 1 {
f = "000" + f
} else if lf == 2 {
f = "00" + f
} else if lf == 3 {
f = "0" + f
}
return f + content + suffix
}

func GenerateEndPKTLine() string {
return "0000"
}

func GenerateErrStartPKTLine() string {
return "0031\u0001000eunpack err\n0019ok refs/heads/master\n0000"
}

func serviceUploadPack(h serviceHandler) {
serviceRPC(h, "upload-pack")
}


Loading…
Cancel
Save