001
014
015 package com.liferay.portlet.documentlibrary.antivirus;
016
017 import java.io.File;
018 import java.io.IOException;
019
020
023 public class ClamAntivirusScannerImpl extends BaseFileAntivirusScanner {
024
025 @Override
026 public void scan(File file) throws AntivirusScannerException {
027 Process process = null;
028
029 try {
030 ProcessBuilder processBuilder = new ProcessBuilder(
031 "clamscan", "--stdout", "--no-summary", file.getAbsolutePath());
032
033 processBuilder.redirectErrorStream(true);
034
035 process = processBuilder.start();
036
037 process.waitFor();
038
039 int exitValue = process.exitValue();
040
041 if (exitValue == 1) {
042 throw new AntivirusScannerException(
043 "Virus detected in " + file.getAbsolutePath(),
044 AntivirusScannerException.VIRUS_DETECTED);
045 }
046 else if (exitValue >= 2) {
047 throw new AntivirusScannerException(
048 AntivirusScannerException.PROCESS_FAILURE);
049 }
050 }
051 catch (InterruptedException | IOException e) {
052 throw new AntivirusScannerException(
053 AntivirusScannerException.PROCESS_FAILURE);
054 }
055 finally {
056 if (process != null) {
057 process.destroy();
058 }
059 }
060 }
061
062 }