MCPcopy
hub / github.com/sa7mon/S3Scanner / Work

Function Work

worker/worker.go:31–70  ·  view source on GitHub ↗
(wg *sync.WaitGroup, buckets chan bucket.Bucket, provider provider.StorageProvider, doEnumerate bool,
	writeToDB bool, json bool)

Source from the content-addressed store, hash-verified

29}
30
31func Work(wg *sync.WaitGroup, buckets chan bucket.Bucket, provider provider.StorageProvider, doEnumerate bool,
32 writeToDB bool, json bool) {
33 defer wg.Done()
34 for b1 := range buckets {
35 b, existsErr := provider.BucketExists(&b1)
36 if existsErr != nil {
37 log.Errorf("error | %s | %s", b.Name, existsErr.Error())
38 continue
39 }
40
41 if b.Exists == bucket.BucketNotExist {
42 PrintResult(b, json)
43 continue
44 }
45
46 // Scan permissions
47 scanErr := provider.Scan(b, false)
48 if scanErr != nil {
49 log.WithFields(log.Fields{"bucket": b}).Error(scanErr)
50 }
51
52 if doEnumerate && b.PermAllUsersRead == bucket.PermissionAllowed {
53 log.WithFields(log.Fields{"method": "main.work()",
54 "bucket_name": b.Name, "region": b.Region}).Debugf("enumerating objects...")
55 enumErr := provider.Enumerate(b)
56 if enumErr != nil {
57 log.Errorf("Error enumerating bucket '%s': %v\nEnumerated objects: %v", b.Name, enumErr, len(b.Objects))
58 continue
59 }
60 }
61 PrintResult(b, json)
62
63 if writeToDB {
64 dbErr := db.StoreBucket(b)
65 if dbErr != nil {
66 log.Error(dbErr)
67 }
68 }
69 }
70}

Callers 2

RunFunction · 0.92
TestWorkFunction · 0.85

Calls 5

StoreBucketFunction · 0.92
PrintResultFunction · 0.85
BucketExistsMethod · 0.65
ScanMethod · 0.65
EnumerateMethod · 0.65

Tested by 1

TestWorkFunction · 0.68