Skip to content

Commit a87a008

Browse files
authored
Merge pull request #412 from rusq/i404
Machine ID
2 parents 1eb5fe5 + d04ba68 commit a87a008

File tree

32 files changed

+381
-419
lines changed

32 files changed

+381
-419
lines changed

cmd/slackdump/internal/cfg/cfg.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var (
3939
Browser browser.Browser
4040
LegacyBrowser bool
4141
ForceEnterprise bool
42+
MachineIDOvr string // Machine ID override
4243

4344
MemberOnly bool
4445
DownloadFiles bool
@@ -122,6 +123,10 @@ func SetBaseFlags(fs *flag.FlagSet, mask FlagMask) {
122123
fs.StringVar(&RODUserAgent, "user-agent", "", "override the user agent string for EZ-Login 3000")
123124
fs.BoolVar(&LoadSecrets, "load-env", false, "load secrets from the .env, .env.txt or secrets.txt file")
124125
}
126+
if mask&OmitAuthFlags == 0 || mask&OmitCacheDir == 0 {
127+
// machine-id flag will be automatically enabled if auth flags or cache dir flags are enabled.
128+
fs.StringVar(&MachineIDOvr, "machine-id", osenv.Secret("MACHINE_ID_OVERRIDE", ""), "override the machine ID for encryption")
129+
}
125130
if mask&OmitDownloadFlag == 0 {
126131
fs.BoolVar(&DownloadFiles, "files", true, "enables file attachments download (to disable, specify: -files=false)")
127132
}

cmd/slackdump/internal/diag/hydrate_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import (
1313
"github.com/rusq/slack"
1414
gomock "go.uber.org/mock/gomock"
1515

16-
"github.com/rusq/slackdump/v3/internal/mocks/mock_fsadapter"
16+
"github.com/rusq/fsadapter/mocks/mock_fsadapter"
17+
1718
"github.com/rusq/slackdump/v3/mocks/mock_downloader"
1819
)
1920

@@ -148,12 +149,12 @@ func (f *fakewritecloser) Close() error {
148149
func Test_downloadFiles(t *testing.T) {
149150
tests := []struct {
150151
name string
151-
expectFn func(m *Mocksourcer, fs *mock_fsadapter.MockFS, d *mock_downloader.MockGetFiler)
152+
expectFn func(m *Mocksourcer, fs *mock_fsadapter.MockFSCloser, d *mock_downloader.MockGetFiler)
152153
wantErr bool
153154
}{
154155
{
155156
"single message w 2 files",
156-
func(m *Mocksourcer, fs *mock_fsadapter.MockFS, d *mock_downloader.MockGetFiler) {
157+
func(m *Mocksourcer, fs *mock_fsadapter.MockFSCloser, d *mock_downloader.MockGetFiler) {
157158
m.EXPECT().Channels().Return(TestChannels, nil)
158159
m.EXPECT().AllMessages("C01").Return([]slack.Message{TestMsgWFile1}, nil)
159160

@@ -167,7 +168,7 @@ func Test_downloadFiles(t *testing.T) {
167168
},
168169
{
169170
"all ok",
170-
func(m *Mocksourcer, fs *mock_fsadapter.MockFS, d *mock_downloader.MockGetFiler) {
171+
func(m *Mocksourcer, fs *mock_fsadapter.MockFSCloser, d *mock_downloader.MockGetFiler) {
171172
m.EXPECT().Channels().Return(TestChannels, nil)
172173
m.EXPECT().AllMessages("C01").Return(TestMessages, nil)
173174
m.EXPECT().AllThreadMessages("C01", "2").Return(TestThreadMessages, nil)
@@ -189,7 +190,7 @@ func Test_downloadFiles(t *testing.T) {
189190
t.Run(tt.name, func(t *testing.T) {
190191
ctrl := gomock.NewController(t)
191192
ms := NewMocksourcer(ctrl)
192-
fs := mock_fsadapter.NewMockFS(ctrl)
193+
fs := mock_fsadapter.NewMockFSCloser(ctrl)
193194
d := mock_downloader.NewMockGetFiler(ctrl)
194195
if tt.expectFn != nil {
195196
tt.expectFn(ms, fs, d)

cmd/slackdump/internal/diag/info/auth.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,15 @@ import (
1313

1414
"github.com/rusq/slackdump/v3/auth"
1515
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg"
16-
"github.com/rusq/slackdump/v3/internal/cache"
16+
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace"
1717
)
1818

1919
func CollectAuth(ctx context.Context, w io.Writer) error {
20-
// lg := logger.FromContext(ctx)
2120
fmt.Fprintln(os.Stderr, "To confirm the operation, please enter your OS password.")
2221
if err := osValidateUser(ctx, os.Stderr); err != nil {
2322
return err
2423
}
25-
m, err := cache.NewManager(cfg.CacheDir())
24+
m, err := workspace.CacheMgr()
2625
if err != nil {
2726
return fmt.Errorf("cache error: %w", err)
2827
}
@@ -34,7 +33,7 @@ func CollectAuth(ctx context.Context, w io.Writer) error {
3433
if err != nil {
3534
return fmt.Errorf("cache error: %w", err)
3635
}
37-
f, err := encio.Open(filepath.Join(cfg.CacheDir(), fi.Name()))
36+
f, err := encio.Open(filepath.Join(cfg.CacheDir(), fi.Name()), encio.WithID(cfg.MachineIDOvr))
3837
if err != nil {
3938
return fmt.Errorf("cache error: %w", err)
4039
}

cmd/slackdump/internal/diag/info/workspace.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package info
22

33
import (
44
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg"
5-
"github.com/rusq/slackdump/v3/internal/cache"
5+
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace"
66
)
77

88
type Workspace struct {
@@ -13,10 +13,10 @@ type Workspace struct {
1313
}
1414

1515
func (inf *Workspace) collect(replaceFn PathReplFunc) {
16-
inf.Path = replaceFn(cfg.LocalCacheDir)
16+
inf.Path = replaceFn(cfg.CacheDir())
1717
inf.Count = -1
1818
// Workspace information
19-
m, err := cache.NewManager(cfg.LocalCacheDir)
19+
m, err := workspace.CacheMgr()
2020
if err != nil {
2121
inf.Path = loser(err)
2222
return

cmd/slackdump/internal/diag/obfuscate.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,12 @@ func runObfuscate(ctx context.Context, cmd *base.Command, args []string) error {
8686
inType := objtype(obfparam.input)
8787

8888
var fn func(context.Context) error
89-
if inType == otFile || inType == otTerm {
89+
switch inType {
90+
case otFile, otTerm:
9091
fn = obfFile
91-
} else if inType == otDir {
92+
case otDir:
9293
fn = obfDir
93-
} else {
94+
default:
9495
base.SetExitStatus(base.SInvalidParameters)
9596
return fmt.Errorf("input %s is invalid", obfparam.input)
9697
}
@@ -194,7 +195,7 @@ func obfDir(ctx context.Context) error {
194195
InName: obfparam.input,
195196
}
196197
case otNotExist:
197-
if err := os.MkdirAll(obfparam.output, 0755); err != nil {
198+
if err := os.MkdirAll(obfparam.output, 0o755); err != nil {
198199
return err
199200
}
200201
case otDir:

cmd/slackdump/internal/diag/uninstall.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ import (
99
"strings"
1010

1111
"github.com/rusq/slackauth"
12+
1213
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg"
1314
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/diag/info"
1415
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base"
1516
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui"
1617
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/cfgui"
1718
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/dumpui"
1819
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/updaters"
20+
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace"
1921
"github.com/rusq/slackdump/v3/internal/cache"
2022
)
2123

@@ -84,7 +86,6 @@ func init() {
8486
cmdUninstall.Flag.BoolVar(&uninstParams.purge, "purge", false, "remove everything (same as -rod -playwright -cache)")
8587
cmdUninstall.Flag.BoolVar(&uninstParams.dry, "dry", false, "dry run")
8688
cmdUninstall.Flag.BoolVar(&uninstParams.noConfirm, "no-confirm", false, "no confirmation from the user")
87-
8889
}
8990

9091
func runUninstall(ctx context.Context, cmd *base.Command, args []string) error {
@@ -96,7 +97,7 @@ func runUninstall(ctx context.Context, cmd *base.Command, args []string) error {
9697
return errors.New("nothing to uninstall")
9798
}
9899

99-
m, err := cache.NewManager(cfg.CacheDir())
100+
m, err := workspace.CacheMgr()
100101
if err != nil {
101102
base.SetExitStatus(base.SCacheError)
102103
return err

cmd/slackdump/internal/format/format.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ var errNoMatch = errors.New("no matching users")
263263
func searchCache(ctx context.Context, cacheDir string, ids []string) ([]slack.User, error) {
264264
_, task := trace.NewTask(ctx, "searchCache")
265265
defer task.End()
266-
m, err := cache.NewManager(cacheDir)
266+
m, err := cache.NewManager(cacheDir, cache.WithMachineID(cfg.MachineIDOvr))
267267
if err != nil {
268268
return nil, err
269269
}

cmd/slackdump/internal/list/common.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/rusq/slackdump/v3"
1313
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg"
1414
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base"
15+
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace"
1516
"github.com/rusq/slackdump/v3/internal/cache"
1617
"github.com/rusq/slackdump/v3/internal/format"
1718
"github.com/rusq/slackdump/v3/types"
@@ -86,7 +87,7 @@ func addCommonFlags(fs *flag.FlagSet) {
8687
}
8788

8889
func list[T any](ctx context.Context, sess *slackdump.Session, l lister[T], filename string) error {
89-
m, err := cache.NewManager(cfg.CacheDir())
90+
m, err := workspace.CacheMgr()
9091
if err != nil {
9192
return err
9293
}

cmd/slackdump/internal/workspace/del.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ var (
3838
)
3939

4040
func runWspDel(ctx context.Context, cmd *base.Command, args []string) error {
41-
m, err := cache.NewManager(cfg.CacheDir())
41+
m, err := CacheMgr()
4242
if err != nil {
4343
base.SetExitStatus(base.SCacheError)
4444
return err

cmd/slackdump/internal/workspace/import.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/rusq/slackdump/v3/auth"
99
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg"
1010
"github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base"
11-
"github.com/rusq/slackdump/v3/internal/cache"
1211
)
1312

1413
//go:embed assets/import.md
@@ -44,7 +43,7 @@ func importFile(ctx context.Context, filename string) error {
4443
base.SetExitStatus(base.SUserError)
4544
return err
4645
}
47-
m, err := cache.NewManager(cfg.CacheDir())
46+
m, err := CacheMgr()
4847
if err != nil {
4948
base.SetExitStatus(base.SCacheError)
5049
return err

0 commit comments

Comments
 (0)