| 29 | } |
| 30 | |
| 31 | func 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 | } |