31 lines
680 B
Go
31 lines
680 B
Go
package basic
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log/slog"
|
|
"os/exec"
|
|
|
|
"git.jmbit.de/jmb/scanfile/server/internal/store"
|
|
)
|
|
|
|
// DiecScan() runs diec -jdu on the file
|
|
func DiecScan(fileName string) ([]byte, error) {
|
|
var by []byte
|
|
filepath, err := store.AbsPath(fileName)
|
|
if err != nil {
|
|
slog.Error("Error in DiecScan", "file-uuid", fileName, "error", err)
|
|
return by, err
|
|
}
|
|
cmd := exec.Command("/usr/bin/diec", "-jdu", filepath)
|
|
result, err := cmd.Output()
|
|
if err != nil {
|
|
slog.Error("Error in DiecScan", "file-uuid", fileName, "error", err)
|
|
return by, err
|
|
}
|
|
|
|
if json.Valid(result) == false {
|
|
return by, fmt.Errorf("JSON not valid")
|
|
}
|
|
return result, nil
|
|
}
|