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