Skip to content

Commit 05431e7

Browse files
committed
Hide sensitive content on admin panel progress monitor
1 parent 793ce9d commit 05431e7

File tree

4 files changed

+29
-6
lines changed

4 files changed

+29
-6
lines changed

modules/git/command.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717

1818
"code.gitea.io/gitea/modules/log"
1919
"code.gitea.io/gitea/modules/process"
20+
"code.gitea.io/gitea/modules/util"
2021
)
2122

2223
var (
@@ -34,6 +35,7 @@ const DefaultLocale = "C"
3435
type Command struct {
3536
name string
3637
args []string
38+
urlArgInts []int
3739
parentContext context.Context
3840
desc string
3941
}
@@ -90,6 +92,13 @@ func (c *Command) AddArguments(args ...string) *Command {
9092
return c
9193
}
9294

95+
// AddURLArgument adds an argument which is a url which means password should be shadow when display in UI
96+
func (c *Command) AddURLArgument(arg string) *Command {
97+
c.urlArgInts = append(c.urlArgInts, len(c.args))
98+
c.args = append(c.args, arg)
99+
return c
100+
}
101+
93102
// RunInDirTimeoutEnvPipeline executes the command in given directory with given timeout,
94103
// it pipes stdout and stderr to given io.Writer.
95104
func (c *Command) RunInDirTimeoutEnvPipeline(env []string, timeout time.Duration, dir string, stdout, stderr io.Writer) error {
@@ -140,7 +149,12 @@ func (c *Command) RunWithContext(rc *RunContext) error {
140149

141150
desc := c.desc
142151
if desc == "" {
143-
desc = fmt.Sprintf("%s %s [repo_path: %s]", c.name, strings.Join(c.args, " "), rc.Dir)
152+
args := make([]string, len(c.args))
153+
copy(args, c.args)
154+
for _, i := range c.urlArgInts {
155+
args[i] = util.NewStringURLSanitizer(args[i], true).Replace(args[i])
156+
}
157+
desc = fmt.Sprintf("%s %s [repo_path: %s]", c.name, strings.Join(args, " "), rc.Dir)
144158
}
145159

146160
ctx, cancel, finished := process.GetManager().AddContextTimeout(c.parentContext, rc.Timeout, desc)

modules/git/repo.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ func CloneWithArgs(ctx context.Context, from, to string, args []string, opts Clo
152152
if len(opts.Branch) > 0 {
153153
cmd.AddArguments("-b", opts.Branch)
154154
}
155-
cmd.AddArguments("--", from, to)
155+
cmd.AddArguments("--")
156+
cmd.AddURLArgument(from)
157+
cmd.AddArguments(to)
156158

157159
if opts.Timeout <= 0 {
158160
opts.Timeout = -1
@@ -197,7 +199,8 @@ func Push(ctx context.Context, repoPath string, opts PushOptions) error {
197199
if opts.Mirror {
198200
cmd.AddArguments("--mirror")
199201
}
200-
cmd.AddArguments("--", opts.Remote)
202+
cmd.AddArguments("--")
203+
cmd.AddURLArgument(opts.Remote)
201204
if len(opts.Branch) > 0 {
202205
cmd.AddArguments(opts.Branch)
203206
}

services/mirror/mirror_pull.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error
3838
return err
3939
}
4040

41-
_, err = git.NewCommand(ctx, "remote", "add", remoteName, "--mirror=fetch", addr).RunInDir(repoPath)
41+
cmd := git.NewCommand(ctx, "remote", "add", remoteName, "--mirror=fetch")
42+
cmd.AddURLArgument(addr)
43+
_, err = cmd.RunInDir(repoPath)
4244
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
4345
return err
4446
}
@@ -52,7 +54,9 @@ func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error
5254
return err
5355
}
5456

55-
_, err = git.NewCommand(ctx, "remote", "add", remoteName, "--mirror=fetch", wikiRemotePath).RunInDir(wikiPath)
57+
cmd = git.NewCommand(ctx, "remote", "add", remoteName, "--mirror=fetch")
58+
cmd.AddURLArgument(wikiRemotePath)
59+
_, err = cmd.RunInDir(wikiPath)
5660
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
5761
return err
5862
}

services/mirror/mirror_push.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ var stripExitStatus = regexp.MustCompile(`exit status \d+ - `)
2828
// AddPushMirrorRemote registers the push mirror remote.
2929
func AddPushMirrorRemote(ctx context.Context, m *repo_model.PushMirror, addr string) error {
3030
addRemoteAndConfig := func(addr, path string) error {
31-
if _, err := git.NewCommand(ctx, "remote", "add", "--mirror=push", m.RemoteName, addr).RunInDir(path); err != nil {
31+
cmd := git.NewCommand(ctx, "remote", "add", "--mirror=push", m.RemoteName)
32+
cmd.AddURLArgument(addr)
33+
if _, err := cmd.RunInDir(path); err != nil {
3234
return err
3335
}
3436
if _, err := git.NewCommand(ctx, "config", "--add", "remote."+m.RemoteName+".push", "+refs/heads/*:refs/heads/*").RunInDir(path); err != nil {

0 commit comments

Comments
 (0)