Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/dump: add keep-secret-key option #2699

Merged
merged 1 commit into from
Sep 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion cmd/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ Details: https://juicefs.com/docs/community/metadata_dump_load`,
Name: "subdir",
Usage: "only dump a sub-directory",
},
&cli.BoolFlag{
Name: "keep-secret-key",
Usage: "keep secret keys intact (WARNING: Be careful as they may be leaked)",
},
},
}
}
Expand All @@ -70,7 +74,7 @@ func dump(ctx *cli.Context) error {
if _, err := m.Load(true); err != nil {
return err
}
if err := m.DumpMeta(fp, 1); err != nil {
if err := m.DumpMeta(fp, 1, ctx.Bool("keep-secret-key")); err != nil {
return err
}
logger.Infof("Dump metadata into %s succeed", ctx.Args().Get(1))
Expand Down
2 changes: 1 addition & 1 deletion pkg/meta/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ type Meta interface {
OnMsg(mtype uint32, cb MsgCallback)

// Dump the tree under root, which may be modified by checkRoot
DumpMeta(w io.Writer, root Ino) error
DumpMeta(w io.Writer, root Ino, keepSecret bool) error
LoadMeta(r io.Reader) error

// getBase return the base engine.
Expand Down
2 changes: 1 addition & 1 deletion pkg/meta/load_dump_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ func testDump(t *testing.T, m Meta, root Ino, expect, result string) {
if _, err = m.Load(true); err != nil {
t.Fatalf("load setting: %s", err)
}
if err = m.DumpMeta(fp, root); err != nil {
if err = m.DumpMeta(fp, root, false); err != nil {
t.Fatalf("dump meta: %s", err)
}
cmd := exec.Command("diff", expect, result)
Expand Down
6 changes: 3 additions & 3 deletions pkg/meta/redis.go
Original file line number Diff line number Diff line change
Expand Up @@ -3178,7 +3178,7 @@ func (m *redisMeta) dumpDir(inode Ino, tree *DumpedEntry, bw *bufio.Writer, dept
return nil
}

func (m *redisMeta) DumpMeta(w io.Writer, root Ino) (err error) {
func (m *redisMeta) DumpMeta(w io.Writer, root Ino, keepSecret bool) (err error) {
defer func() {
if p := recover(); p != nil {
if e, ok := p.(error); ok {
Expand Down Expand Up @@ -3253,11 +3253,11 @@ func (m *redisMeta) DumpMeta(w io.Writer, root Ino) (err error) {
Sustained: sessions,
DelFiles: dels,
}
if dm.Setting.SecretKey != "" {
if !keepSecret && dm.Setting.SecretKey != "" {
dm.Setting.SecretKey = "removed"
logger.Warnf("Secret key is removed for the sake of safety")
}
if dm.Setting.SessionToken != "" {
if !keepSecret && dm.Setting.SessionToken != "" {
dm.Setting.SessionToken = "removed"
logger.Warnf("Session token is removed for the sake of safety")
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/meta/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -2945,7 +2945,7 @@ func (m *dbMeta) makeSnap(ses *xorm.Session, bar *utils.Bar) error {
return nil
}

func (m *dbMeta) DumpMeta(w io.Writer, root Ino) (err error) {
func (m *dbMeta) DumpMeta(w io.Writer, root Ino, keepSecret bool) (err error) {
defer func() {
if p := recover(); p != nil {
if e, ok := p.(error); ok {
Expand Down Expand Up @@ -3030,11 +3030,11 @@ func (m *dbMeta) DumpMeta(w io.Writer, root Ino) (err error) {
Sustained: sessions,
DelFiles: dels,
}
if dm.Setting.SecretKey != "" {
if !keepSecret && dm.Setting.SecretKey != "" {
dm.Setting.SecretKey = "removed"
logger.Warnf("Secret key is removed for the sake of safety")
}
if dm.Setting.SessionToken != "" {
if !keepSecret && dm.Setting.SessionToken != "" {
dm.Setting.SessionToken = "removed"
logger.Warnf("Session token is removed for the sake of safety")
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/meta/tkv.go
Original file line number Diff line number Diff line change
Expand Up @@ -2416,7 +2416,7 @@ func (m *kvMeta) dumpDir(inode Ino, tree *DumpedEntry, bw *bufio.Writer, depth i
return nil
}

func (m *kvMeta) DumpMeta(w io.Writer, root Ino) (err error) {
func (m *kvMeta) DumpMeta(w io.Writer, root Ino, keepSecret bool) (err error) {
defer func() {
if p := recover(); p != nil {
debug.PrintStack()
Expand Down Expand Up @@ -2587,11 +2587,11 @@ func (m *kvMeta) DumpMeta(w io.Writer, root Ino) (err error) {
Sustained: sessions,
DelFiles: dels,
}
if dm.Setting.SecretKey != "" {
if !keepSecret && dm.Setting.SecretKey != "" {
dm.Setting.SecretKey = "removed"
logger.Warnf("Secret key is removed for the sake of safety")
}
if dm.Setting.SessionToken != "" {
if !keepSecret && dm.Setting.SessionToken != "" {
dm.Setting.SessionToken = "removed"
logger.Warnf("Session token is removed for the sake of safety")
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/vfs/backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func backup(m meta.Meta, blob object.ObjectStorage, now time.Time) error {
defer os.Remove(fpath)
defer fp.Close()
zw := gzip.NewWriter(fp)
err = m.DumpMeta(zw, 0) // force dump the whole tree
err = m.DumpMeta(zw, 0, false) // force dump the whole tree
_ = zw.Close()
if err != nil {
return err
Expand Down