mirror of
https://github.com/jkl1337/duplicacy.git
synced 2026-01-02 11:44:45 -06:00
Acknowledge malware/spam warnings from GCD
If Google thinks that a file is malware or spam (which can happen spuriously to blobs of encrypted data), it will prevent the initial download and return an error with reason "cannotDownloadAbusiveFile". The API expects a program to prompt the user in this case and then, optionally, let them bypass it. Ideally duplicacy should prompt, but this patch just logs a warning. When I printed `err.(*googleapi.Error)`, its `Errors` field was empty, hence the sketchy string matching. It's possible that I did something wrong, though.
This commit is contained in:
committed by
GitHub
parent
9ae306644d
commit
20172e07e6
@@ -624,13 +624,22 @@ func (storage *GCDStorage) DownloadFile(threadIndex int, filePath string, chunk
|
|||||||
var response *http.Response
|
var response *http.Response
|
||||||
|
|
||||||
for {
|
for {
|
||||||
response, err = storage.service.Files.Get(fileID).Download()
|
// AcknowledgeAbuse(true) lets the download proceed even if GCD thinks that it contains malware.
|
||||||
if retry, err := storage.shouldRetry(threadIndex, err); err == nil && !retry {
|
// TODO: Should this prompt the user or log a warning?
|
||||||
|
req := storage.service.Files.Get(fileID)
|
||||||
|
if e, ok := err.(*googleapi.Error); ok {
|
||||||
|
if strings.Contains(err.Error(), "cannotDownloadAbusiveFile") || len(e.Errors) > 0 && e.Errors[0].Reason == "cannotDownloadAbusiveFile" {
|
||||||
|
LOG_WARN("GCD_STORAGE", "%s is marked as abusive, will download anyway.", filePath)
|
||||||
|
req = req.AcknowledgeAbuse(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response, err = req.Download()
|
||||||
|
if retry, retry_err := storage.shouldRetry(threadIndex, err); retry_err == nil && !retry {
|
||||||
break
|
break
|
||||||
} else if retry {
|
} else if retry {
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
return err
|
return retry_err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user