diff --git a/cmd/rescan.go b/cmd/rescan.go index ae3055f..83d759f 100644 --- a/cmd/rescan.go +++ b/cmd/rescan.go @@ -27,6 +27,8 @@ func init() { "SHA256 of the file to rescan") reScanCmd.Flags().BoolVarP(&asyncScanFlag, "async", "a", false, "Scan files in parallel (default=false)") + reScanCmd.Flags().BoolVarP(&skipDetonationFlag, "skipDetonation", "d", false, + "Skip detonation (default=false)") } @@ -41,7 +43,7 @@ func reScanFile(shaList []string, token string, async bool) error { for _, sha256 := range shaList { wp.Submit(func() { log.Printf("rescanning %s", sha256) - err := webapi.Rescan(sha256, token) + err := webapi.Rescan(sha256, token, skipDetonationFlag) if err != nil { log.Fatalf("failed to rescan file: %v", sha256) } @@ -57,7 +59,7 @@ func reScanFile(shaList []string, token string, async bool) error { for _, sha256 := range shaList { log.Printf("re-scanning %s", sha256) - err := webapi.Rescan(sha256, token) + err := webapi.Rescan(sha256, token, skipDetonationFlag) if err != nil { log.Fatalf("failed to rescan file: %v", sha256) } diff --git a/cmd/scan.go b/cmd/scan.go index 287d3bb..577bb72 100644 --- a/cmd/scan.go +++ b/cmd/scan.go @@ -21,6 +21,7 @@ import ( var filePath string var forceRescanFlag bool var asyncScanFlag bool +var skipDetonationFlag bool func init() { scanCmd.Flags().StringVarP(&filePath, "path", "p", "", @@ -29,6 +30,8 @@ func init() { "Force rescan the file if it exists (default=false)") scanCmd.Flags().BoolVarP(&asyncScanFlag, "async", "a", false, "Scan files in parallel (default=false)") + scanCmd.Flags().BoolVarP(&skipDetonationFlag, "skipDetonation", "d", false, + "Skip detonation (default=false)") scanCmd.MarkFlagRequired("path") } @@ -84,7 +87,7 @@ func scanFile(filePath, token string, async, forceRescan bool) error { } else { // Force rescan the file if forceRescan { - err = webapi.Rescan(sha256, token) + err = webapi.Rescan(sha256, token, skipDetonationFlag) if err != nil { log.Fatalf("failed to rescan file: %v", filename) } @@ -127,7 +130,7 @@ func scanFile(filePath, token string, async, forceRescan bool) error { } else { // Force re-scan the file if forceRescan { - err = webapi.Rescan(sha256, token) + err = webapi.Rescan(sha256, token, skipDetonationFlag) if err != nil { log.Fatalf("failed to re-scan file: %v", filename) } diff --git a/internal/webapi/webapi.go b/internal/webapi/webapi.go index e2018b5..888bbd9 100755 --- a/internal/webapi/webapi.go +++ b/internal/webapi/webapi.go @@ -133,10 +133,19 @@ func Upload(filepath string, authToken string) (string, error) { return body.String(), nil } -func Rescan(sha256, authToken string) error { +func Rescan(sha256, authToken string, skipDetonation bool) error { url := fileURL + sha256 + "/rescan" - request, err := http.NewRequest("POST", url, nil) + + requestBody, err := json.Marshal(map[string]bool{ + "skip_detonation": skipDetonation, + }) + if err != nil { + return err + } + + body := bytes.NewBuffer(requestBody) + request, err := http.NewRequest("POST", url, body) if err != nil { return err } @@ -152,7 +161,7 @@ func Rescan(sha256, authToken string) error { } // Read the response. - body := &bytes.Buffer{} + body = &bytes.Buffer{} _, err = body.ReadFrom(resp.Body) if err != nil { return err